revisi + request v 1.01 -> 1.02
This commit is contained in:
@@ -14,7 +14,9 @@ class Constant {
|
||||
static String tokenName = "oneMitraPramita";
|
||||
static double designHeight = 1024;
|
||||
static double designWidth = 1440;
|
||||
static String version = "Versi 1.01";
|
||||
static String version = "Versi 1.02";
|
||||
static String build = "Build 13-12-2024";
|
||||
// flutter build web --base-href "/mitra/"
|
||||
|
||||
static String ipAddress = "";
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ import 'package:mitra_corporate/screen/splash_screen.dart/splash_screen.dart';
|
||||
import 'app/constant.dart';
|
||||
import 'app/route.dart';
|
||||
|
||||
import 'app/register_webview_rtub.dart'
|
||||
if (dart.library.html) 'app/register_webview.dart';
|
||||
// import 'app/register_webview_rtub.dart'
|
||||
// if (dart.library.html) 'app/register_webview.dart';
|
||||
|
||||
void main() {
|
||||
// runApp(const MyApp());
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import 'package:mitra_corporate/model/user_mou_model.dart';
|
||||
|
||||
class OrderModel {
|
||||
String? orderId;
|
||||
String? orderNumber;
|
||||
@@ -30,6 +32,7 @@ class OrderModel {
|
||||
List<String>? tests;
|
||||
List<String>? paket;
|
||||
List<String>? paketDetail;
|
||||
UserMouModel? mou;
|
||||
|
||||
OrderModel(
|
||||
{this.orderId,
|
||||
@@ -62,6 +65,7 @@ class OrderModel {
|
||||
this.lokasi,
|
||||
this.pekerjaan,
|
||||
this.isQr,
|
||||
this.mou,
|
||||
this.bahan});
|
||||
|
||||
OrderModel.fromJson(Map<String, dynamic> json) {
|
||||
@@ -89,6 +93,7 @@ class OrderModel {
|
||||
lokasi = json['lokasi'];
|
||||
pekerjaan = json['pekerjaan'];
|
||||
isQr = json['is_qr'];
|
||||
mou = UserMouModel.fromJson(json['mou']);
|
||||
// sample = json['sample'].cast<String>();
|
||||
// bahan = json['bahan'].cast<String>();
|
||||
// tests = json['tests'].cast<String>();
|
||||
@@ -185,6 +190,7 @@ class OrderModel {
|
||||
data['pekerjaan'] = pekerjaan;
|
||||
data['noRM'] = noRM;
|
||||
data['is_qr'] = isQr;
|
||||
data['mou'] = mou;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ class RegistrationModel {
|
||||
List<Tests>? tests;
|
||||
List<Specimens>? specimens;
|
||||
List<Bahan>? bahan;
|
||||
String? userMouID;
|
||||
String? total;
|
||||
String? token;
|
||||
|
||||
@@ -17,6 +18,7 @@ class RegistrationModel {
|
||||
this.specimens,
|
||||
this.total,
|
||||
this.bahan,
|
||||
this.userMouID,
|
||||
this.patientId,
|
||||
this.paket,
|
||||
this.orderID,
|
||||
@@ -54,6 +56,7 @@ class RegistrationModel {
|
||||
|
||||
patientId = json['patient_id'];
|
||||
token = json['token'];
|
||||
userMouID = json['userMouID'];
|
||||
orderID = json['orderID'];
|
||||
}
|
||||
|
||||
@@ -77,7 +80,7 @@ class RegistrationModel {
|
||||
data['total'] = total;
|
||||
data['patient_id'] = patientId;
|
||||
data['token'] = token;
|
||||
|
||||
data['userMouID'] = userMouID;
|
||||
data['orderID'] = orderID;
|
||||
return data;
|
||||
}
|
||||
|
||||
28
lib/model/user_mou_model.dart
Normal file
28
lib/model/user_mou_model.dart
Normal file
@@ -0,0 +1,28 @@
|
||||
class UserMouModel {
|
||||
String? userMouID;
|
||||
String? userMouMouID;
|
||||
String? userMouName;
|
||||
String? userMouIsDefault;
|
||||
|
||||
UserMouModel(
|
||||
{this.userMouID,
|
||||
this.userMouName,
|
||||
this.userMouIsDefault,
|
||||
this.userMouMouID});
|
||||
|
||||
UserMouModel.fromJson(Map<String, dynamic> json) {
|
||||
userMouID = json['userMouID'];
|
||||
userMouName = json['userMouName'];
|
||||
userMouIsDefault = json['userMouIsDefault'];
|
||||
userMouMouID = json['userMouMouID'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['userMouID'] = this.userMouID;
|
||||
data['userMouName'] = this.userMouName;
|
||||
data['userMouIsDefault'] = this.userMouIsDefault;
|
||||
data['userMouMouID'] = this.userMouMouID;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:mitra_corporate/model/registration_model.dart';
|
||||
import 'package:mitra_corporate/model/test_model.dart';
|
||||
import 'package:mitra_corporate/model/user_mou_model.dart';
|
||||
|
||||
// menerima perubahan value dari onTap simpan perubahan
|
||||
final registrasiProvider = StateProvider<int>((ref) => 0);
|
||||
@@ -17,6 +18,9 @@ final registrationDataProvider =
|
||||
final tempTestListProvider = StateProvider<List<TestModel>>(
|
||||
(ref) => List.empty(),
|
||||
);
|
||||
final selectedMouProvider = StateProvider<UserMouModel>(
|
||||
(ref) => UserMouModel(),
|
||||
);
|
||||
|
||||
final orderNumberProvider = StateProvider<String>((ref) => "");
|
||||
final dialogOrderActionProvider = StateProvider<String>((ref) => "new");
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:mitra_corporate/model/registration_filter_model.dart';
|
||||
import 'package:mitra_corporate/model/registration_model.dart';
|
||||
import 'package:mitra_corporate/model/test_model.dart';
|
||||
import 'package:mitra_corporate/model/user_mou_model.dart';
|
||||
|
||||
import '../app/constant.dart';
|
||||
import 'base_repository.dart';
|
||||
@@ -31,6 +32,29 @@ class RegistrationRepository extends BaseRepository {
|
||||
return data;
|
||||
}
|
||||
|
||||
Future<List<UserMouModel>> getUserMou({
|
||||
required String userID,
|
||||
required String token,
|
||||
}) async {
|
||||
var param = {"userID": userID, "token": token};
|
||||
// print(param);
|
||||
final url = "${Constant.baseUrl}fpp/getMou";
|
||||
final resp = await post(param: param, service: url);
|
||||
List<UserMouModel> data;
|
||||
// print(resp['data']);
|
||||
if (resp['status'] == 'OK') {
|
||||
data = [];
|
||||
resp['data'].forEach((e) {
|
||||
final model = UserMouModel.fromJson(e);
|
||||
data.add(model);
|
||||
});
|
||||
} else {
|
||||
data = [];
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
Future<RegistrationFilterModel> getFilter({
|
||||
required String token,
|
||||
}) async {
|
||||
|
||||
@@ -4,14 +4,17 @@ import 'dart:ui';
|
||||
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:flutter_typeahead/flutter_typeahead.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:mitra_corporate/model/auth_model.dart';
|
||||
import 'package:mitra_corporate/model/registration_model.dart';
|
||||
import 'package:mitra_corporate/model/test_model.dart';
|
||||
import 'package:mitra_corporate/model/user_mou_model.dart';
|
||||
import 'package:mitra_corporate/provider/auth_provider.dart';
|
||||
import 'package:mitra_corporate/provider/order_provider.dart';
|
||||
import 'package:mitra_corporate/screen/registrasi/registrasi_prvider.dart';
|
||||
import 'package:loading_animation_widget/loading_animation_widget.dart';
|
||||
import 'package:mitra_corporate/screen/registrasi/user_mou_provider.dart';
|
||||
import 'package:scroll_to_index/scroll_to_index.dart';
|
||||
|
||||
import '../../app/constant.dart';
|
||||
@@ -29,6 +32,7 @@ class FormEditPemeriksaan extends HookConsumerWidget {
|
||||
final selectedtest = ref.watch(selectedTestEditProvider);
|
||||
final selectedPacket = ref.watch(selectedPacketEditProvider);
|
||||
final selectedPacketOld = ref.watch(currentPacketProvider);
|
||||
final selectedMou = ref.watch(selectedMouProvider);
|
||||
// inisialisasi baca provider idTipePeriksaStateProvider
|
||||
final selectedTab = ref.watch(idTipePeriksaStateProvider);
|
||||
final AuthModel auth = ref.watch(authProvider) ?? AuthModel();
|
||||
@@ -37,17 +41,31 @@ class FormEditPemeriksaan extends HookConsumerWidget {
|
||||
final searchCtr = useTextEditingController(text: "");
|
||||
final scrollCtr = useScrollController();
|
||||
final ctr = useState(AutoScrollController());
|
||||
final listUserMou = useState<List<UserMouModel>>(List.empty());
|
||||
final userMouCtr = useTextEditingController(text: "");
|
||||
|
||||
//get pemeriksaan from api
|
||||
getPemeriksaan() {
|
||||
getPemeriksaan(String mouID) {
|
||||
ref
|
||||
.read(GetFPPProvider.notifier)
|
||||
.getData(mouID: auth.mUserMMouID ?? "0", token: auth.token ?? "0");
|
||||
.getData(mouID: mouID, token: auth.token ?? "0");
|
||||
}
|
||||
|
||||
//get pemeriksaan from api
|
||||
getUserMou() {
|
||||
ref
|
||||
.read(GetUserMouProvider.notifier)
|
||||
.getData(userID: auth.mUserID ?? "0", token: auth.token ?? "0");
|
||||
}
|
||||
|
||||
useEffect(() {
|
||||
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
|
||||
getPemeriksaan();
|
||||
// getPemeriksaan();
|
||||
getUserMou();
|
||||
if (selectedMou.userMouID != "0" && selectedMou.userMouID != null) {
|
||||
getPemeriksaan(selectedMou.userMouMouID ?? "0");
|
||||
userMouCtr.text = selectedMou.userMouName ?? "";
|
||||
}
|
||||
});
|
||||
return () {};
|
||||
}, []);
|
||||
@@ -87,6 +105,29 @@ class FormEditPemeriksaan extends HookConsumerWidget {
|
||||
},
|
||||
);
|
||||
|
||||
ref.listen(
|
||||
GetUserMouProvider,
|
||||
(pref, next) {
|
||||
if (next is GetUserMouStateInit) {
|
||||
testLoading.value = true;
|
||||
} else if (next is GetUserMouStateLoading) {
|
||||
testLoading.value = true;
|
||||
} else if (next is GetUserMouStateError) {
|
||||
testLoading.value = false;
|
||||
print(next.message);
|
||||
SanckbarWidget(context, next.message, snackbarType.error);
|
||||
Constant.autoLogout(context: context, msg: next.message);
|
||||
} else if (next is GetUserMouStateDone) {
|
||||
listUserMou.value = next.model;
|
||||
// ref.read(tempTestListProvider.notifier).state = next.model;
|
||||
print(listUserMou.value);
|
||||
|
||||
// tabController.length
|
||||
|
||||
testLoading.value = false;
|
||||
}
|
||||
},
|
||||
);
|
||||
// searchCtr.addListener(() {
|
||||
// listTest.value.firstWhere((element) => element.items)
|
||||
// },);
|
||||
@@ -96,6 +137,63 @@ class FormEditPemeriksaan extends HookConsumerWidget {
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
width: Constant.getActualX(context: context, x: 500),
|
||||
child: TypeAheadField(
|
||||
builder: (context, controller, focusNode) {
|
||||
return TextField(
|
||||
controller: controller,
|
||||
focusNode: focusNode,
|
||||
enabled: !testLoading.value,
|
||||
// autofocus: true,
|
||||
decoration: InputDecoration(
|
||||
hintStyle: Constant.body2_400(context: context),
|
||||
labelStyle: Constant.body2_400(context: context),
|
||||
fillColor: Constant.primaryBlue,
|
||||
labelText: 'Pilih Agreement',
|
||||
// isCollapsed: true,
|
||||
hintText: 'Pilih Agreement',
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(color: Constant.primaryBlue),
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
)));
|
||||
},
|
||||
controller: userMouCtr,
|
||||
suggestionsCallback: (pattern) async {
|
||||
return listUserMou.value
|
||||
.where(
|
||||
(element) => element.userMouName!
|
||||
.toLowerCase()
|
||||
.contains(pattern.toLowerCase()),
|
||||
)
|
||||
.toList();
|
||||
},
|
||||
itemBuilder: (BuildContext context, UserMouModel value) {
|
||||
return ListTile(
|
||||
title: Text(value.userMouName ?? ""),
|
||||
);
|
||||
},
|
||||
onSelected: (UserMouModel value) {
|
||||
print(selectedtest);
|
||||
print(selectedPacket);
|
||||
|
||||
// if (selectedtest.isNotEmpty || selectedPacket.isNotEmpty) {
|
||||
// SanckbarWidget(
|
||||
// context,
|
||||
// "test dan paket yang sudah dipilih telah di reset",
|
||||
// snackbarType.warning);
|
||||
// }
|
||||
ref.read(selectedTestEditProvider.notifier).state = List.empty();
|
||||
ref.read(selectedPacketEditProvider.notifier).state =
|
||||
List.empty();
|
||||
ref.read(selectedMouProvider.notifier).state = value;
|
||||
|
||||
userMouCtr.text = value.userMouName ?? "";
|
||||
getPemeriksaan(value.userMouMouID ?? "0");
|
||||
},
|
||||
),
|
||||
),
|
||||
SizedBox(height: Constant.getActualY(context: context, y: 12)),
|
||||
SizedBox(
|
||||
width: Constant.getActualX(context: context, x: 500),
|
||||
// height: Constant.getActualY(context: context, y: 56),
|
||||
|
||||
@@ -8,6 +8,7 @@ import 'package:intl/intl.dart';
|
||||
|
||||
import 'package:mitra_corporate/model/registration_model.dart';
|
||||
import 'package:mitra_corporate/model/test_model.dart';
|
||||
import 'package:mitra_corporate/model/user_mou_model.dart';
|
||||
import 'package:mitra_corporate/provider/auth_provider.dart';
|
||||
import 'package:mitra_corporate/provider/order_provider.dart';
|
||||
import 'package:mitra_corporate/provider/registrasi_provider.dart';
|
||||
@@ -31,6 +32,7 @@ class DetailEdit extends HookConsumerWidget {
|
||||
final testListAll = ref.read(tempTestListProvider);
|
||||
final selectedTest = ref.read(selectedTestEditProvider);
|
||||
final dialogAction = ref.watch(dialogOrderActionProvider);
|
||||
final selectedMou = ref.watch(selectedMouProvider);
|
||||
|
||||
final testList = useState<List<Items>>(List.empty());
|
||||
final testScrollCtr = useScrollController();
|
||||
@@ -446,6 +448,7 @@ class DetailEdit extends HookConsumerWidget {
|
||||
}
|
||||
|
||||
editOrder() {
|
||||
tempRegistrationData.userMouID = selectedMou.userMouMouID;
|
||||
print(jsonEncode(tempRegistrationData));
|
||||
// tempRegistrationData.tests!.forEach((element) {
|
||||
// if (element.date == null || element.date!.isEmpty) {
|
||||
@@ -497,6 +500,7 @@ class DetailEdit extends HookConsumerWidget {
|
||||
ref.read(currentPacketProvider.notifier).state =
|
||||
List.empty(growable: true);
|
||||
ref.read(selectedPacketEditProvider.notifier).state = List.empty();
|
||||
ref.read(selectedMouProvider.notifier).state = UserMouModel();
|
||||
}
|
||||
},
|
||||
);
|
||||
@@ -507,7 +511,13 @@ class DetailEdit extends HookConsumerWidget {
|
||||
// height: MediaQuery.of(context).size.height,
|
||||
color: Colors.white,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
"Agreement : ${selectedMou.userMouName}",
|
||||
style: Constant.h4_600(context: context),
|
||||
),
|
||||
SizedBox(height: Constant.getActualY(context: context, y: 24)),
|
||||
Row(
|
||||
children: [
|
||||
SizedBox(
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:intl/intl.dart';
|
||||
import 'package:mitra_corporate/model/registration_model.dart';
|
||||
import 'package:mitra_corporate/model/search_order_model.dart';
|
||||
import 'package:mitra_corporate/model/test_model.dart';
|
||||
import 'package:mitra_corporate/model/user_mou_model.dart';
|
||||
import 'package:mitra_corporate/provider/order_provider.dart';
|
||||
import 'package:mitra_corporate/screen/order/cancel_order_provider.dart';
|
||||
import 'package:mitra_corporate/screen/order/dialog_cancel_order.dart';
|
||||
@@ -872,6 +873,7 @@ class OrderScreen extends HookConsumerWidget {
|
||||
pekerjaan: e.value.pekerjaan,
|
||||
));
|
||||
ref.read(EditDataProvider.notifier).state = a;
|
||||
ref.read(selectedMouProvider.notifier).state = e.value.mou ?? UserMouModel();
|
||||
showDialog(context: context, barrierDismissible: false, builder: ((context) => DialogEdit())).then((value) => refresh());
|
||||
},
|
||||
icon: Icon(
|
||||
|
||||
@@ -8,6 +8,7 @@ import 'package:jiffy/jiffy.dart';
|
||||
|
||||
import 'package:mitra_corporate/model/registration_model.dart';
|
||||
import 'package:mitra_corporate/model/test_model.dart';
|
||||
import 'package:mitra_corporate/model/user_mou_model.dart';
|
||||
import 'package:mitra_corporate/provider/auth_provider.dart';
|
||||
import 'package:mitra_corporate/provider/registrasi_provider.dart';
|
||||
import 'package:mitra_corporate/screen/registrasi/get_specimen_provider.dart';
|
||||
@@ -27,6 +28,7 @@ class DetailOrder extends HookConsumerWidget {
|
||||
final tempRegistrationData = ref.watch(registrationDataProvider);
|
||||
final testListAll = ref.read(tempTestListProvider);
|
||||
final selectedTest = ref.read(selectedTestProvider);
|
||||
final selectedMou = ref.read(selectedMouProvider);
|
||||
final dialogAction = ref.watch(dialogOrderActionProvider);
|
||||
|
||||
final testList = useState<List<Items>>(List.empty());
|
||||
@@ -423,6 +425,7 @@ class DetailOrder extends HookConsumerWidget {
|
||||
}
|
||||
|
||||
addOrder() {
|
||||
tempRegistrationData.userMouID = selectedMou.userMouMouID;
|
||||
print(jsonEncode(tempRegistrationData));
|
||||
for (var element in tempRegistrationData.tests!) {
|
||||
if (element.date == null || element.date!.isEmpty) {
|
||||
@@ -471,6 +474,7 @@ class DetailOrder extends HookConsumerWidget {
|
||||
|
||||
ref.read(registrasiProvider.state).update((state) => 3);
|
||||
print(jsonEncode(tempRegistrationData));
|
||||
ref.read(selectedMouProvider.notifier).state = UserMouModel();
|
||||
}
|
||||
},
|
||||
);
|
||||
@@ -481,7 +485,13 @@ class DetailOrder extends HookConsumerWidget {
|
||||
// height: MediaQuery.of(context).size.height,
|
||||
color: Colors.white,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
"Agreement : ${selectedMou.userMouName}",
|
||||
style: Constant.h4_600(context: context),
|
||||
),
|
||||
SizedBox(height: Constant.getActualY(context: context, y: 24)),
|
||||
Row(
|
||||
children: [
|
||||
SizedBox(
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:flutter_typeahead/flutter_typeahead.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:mitra_corporate/model/auth_model.dart';
|
||||
import 'package:mitra_corporate/model/registration_model.dart';
|
||||
import 'package:mitra_corporate/model/test_model.dart';
|
||||
import 'package:mitra_corporate/model/user_mou_model.dart';
|
||||
import 'package:mitra_corporate/provider/auth_provider.dart';
|
||||
import 'package:mitra_corporate/screen/registrasi/registrasi_prvider.dart';
|
||||
import 'package:loading_animation_widget/loading_animation_widget.dart';
|
||||
import 'package:mitra_corporate/screen/registrasi/user_mou_provider.dart';
|
||||
import 'package:scroll_to_index/scroll_to_index.dart';
|
||||
|
||||
import '../../app/constant.dart';
|
||||
@@ -48,25 +52,40 @@ class FormPemeriksaan extends HookConsumerWidget {
|
||||
final tempRegistrationData = ref.watch(registrationDataProvider);
|
||||
final selectedtest = ref.watch(selectedTestProvider);
|
||||
final selectedPacket = ref.watch(selectedPacketProvider);
|
||||
final selectedMou = ref.watch(selectedMouProvider);
|
||||
// inisialisasi baca provider idTipePeriksaStateProvider
|
||||
final selectedTab = ref.watch(idTipePeriksaStateProvider);
|
||||
final AuthModel auth = ref.watch(authProvider) ?? AuthModel();
|
||||
final listTest = useState<List<TestModel>>(List.empty());
|
||||
final listUserMou = useState<List<UserMouModel>>(List.empty());
|
||||
|
||||
final userMouCtr = useTextEditingController(text: "");
|
||||
final testLoading = useState(false);
|
||||
final searchCtr = useTextEditingController(text: "");
|
||||
final scrollCtr = useScrollController();
|
||||
final ctr = useState(AutoScrollController());
|
||||
|
||||
//get pemeriksaan from api
|
||||
getPemeriksaan() {
|
||||
getPemeriksaan(String mouID) {
|
||||
ref
|
||||
.read(GetFPPProvider.notifier)
|
||||
.getData(mouID: auth.mUserMMouID ?? "0", token: auth.token ?? "0");
|
||||
.getData(mouID: mouID, token: auth.token ?? "0");
|
||||
}
|
||||
|
||||
//get pemeriksaan from api
|
||||
getUserMou() {
|
||||
ref
|
||||
.read(GetUserMouProvider.notifier)
|
||||
.getData(userID: auth.mUserID ?? "0", token: auth.token ?? "0");
|
||||
}
|
||||
|
||||
useEffect(() {
|
||||
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
|
||||
getPemeriksaan();
|
||||
getUserMou();
|
||||
if (selectedMou.userMouID != "0" && selectedMou.userMouID != null) {
|
||||
getPemeriksaan(selectedMou.userMouMouID ?? "0");
|
||||
userMouCtr.text = selectedMou.userMouName ?? "";
|
||||
}
|
||||
});
|
||||
return () {};
|
||||
}, []);
|
||||
@@ -117,6 +136,29 @@ class FormPemeriksaan extends HookConsumerWidget {
|
||||
}
|
||||
},
|
||||
);
|
||||
ref.listen(
|
||||
GetUserMouProvider,
|
||||
(pref, next) {
|
||||
if (next is GetUserMouStateInit) {
|
||||
testLoading.value = true;
|
||||
} else if (next is GetUserMouStateLoading) {
|
||||
testLoading.value = true;
|
||||
} else if (next is GetUserMouStateError) {
|
||||
testLoading.value = false;
|
||||
print(next.message);
|
||||
SanckbarWidget(context, next.message, snackbarType.error);
|
||||
Constant.autoLogout(context: context, msg: next.message);
|
||||
} else if (next is GetUserMouStateDone) {
|
||||
listUserMou.value = next.model;
|
||||
// ref.read(tempTestListProvider.notifier).state = next.model;
|
||||
print(listUserMou.value);
|
||||
|
||||
// tabController.length
|
||||
|
||||
testLoading.value = false;
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
// searchCtr.addListener(() {
|
||||
// listTest.value.firstWhere((element) => element.items)
|
||||
@@ -127,6 +169,88 @@ class FormPemeriksaan extends HookConsumerWidget {
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
width: Constant.getActualX(context: context, x: 500),
|
||||
// height: Constant.getActualY(context: context, y: 56),
|
||||
|
||||
// child: Autocomplete<UserMouModel>(
|
||||
// optionsViewBuilder: (context, onSelected, options) {
|
||||
// return ListView.builder(
|
||||
// itemCount: options.length,
|
||||
// itemBuilder: (context, index) {
|
||||
// return Text(options.elementAt(index).userMouName ?? "");
|
||||
// },
|
||||
// );
|
||||
// },
|
||||
// optionsBuilder: (TextEditingValue textEditingValue) {
|
||||
// if (textEditingValue.text == '') {
|
||||
// return const Iterable<UserMouModel>.empty();
|
||||
// }
|
||||
// return listUserMou.value.where((UserMouModel option) {
|
||||
// return option.userMouName!
|
||||
// .toLowerCase()
|
||||
// .contains(textEditingValue.text.toLowerCase());
|
||||
// });
|
||||
// },
|
||||
// displayStringForOption: (option) => option.userMouName ?? "",
|
||||
// onSelected: (UserMouModel option) {
|
||||
// selectedUserMou.value = option;
|
||||
// },
|
||||
// ),
|
||||
child: TypeAheadField(
|
||||
builder: (context, controller, focusNode) {
|
||||
return TextField(
|
||||
controller: controller,
|
||||
focusNode: focusNode,
|
||||
enabled: !testLoading.value,
|
||||
// autofocus: true,
|
||||
decoration: InputDecoration(
|
||||
hintStyle: Constant.body2_400(context: context),
|
||||
labelStyle: Constant.body2_400(context: context),
|
||||
fillColor: Constant.primaryBlue,
|
||||
labelText: 'Pilih Agreement',
|
||||
// isCollapsed: true,
|
||||
hintText: 'Pilih Agreement',
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(color: Constant.primaryBlue),
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
)));
|
||||
},
|
||||
controller: userMouCtr,
|
||||
suggestionsCallback: (pattern) async {
|
||||
return listUserMou.value
|
||||
.where(
|
||||
(element) => element.userMouName!
|
||||
.toLowerCase()
|
||||
.contains(pattern.toLowerCase()),
|
||||
)
|
||||
.toList();
|
||||
},
|
||||
itemBuilder: (BuildContext context, UserMouModel value) {
|
||||
return ListTile(
|
||||
title: Text(value.userMouName ?? ""),
|
||||
);
|
||||
},
|
||||
onSelected: (UserMouModel value) {
|
||||
print(selectedtest);
|
||||
print(selectedPacket);
|
||||
|
||||
// if (selectedtest.isNotEmpty || selectedPacket.isNotEmpty) {
|
||||
// SanckbarWidget(
|
||||
// context,
|
||||
// "test dan paket yang sudah dipilih telah di reset",
|
||||
// snackbarType.warning);
|
||||
// }
|
||||
ref.read(selectedTestProvider.notifier).state = List.empty();
|
||||
ref.read(selectedPacketProvider.notifier).state = List.empty();
|
||||
ref.read(selectedMouProvider.notifier).state = value;
|
||||
|
||||
userMouCtr.text = value.userMouName ?? "";
|
||||
getPemeriksaan(value.userMouMouID ?? "0");
|
||||
},
|
||||
),
|
||||
),
|
||||
SizedBox(height: Constant.getActualY(context: context, y: 12)),
|
||||
SizedBox(
|
||||
width: Constant.getActualX(context: context, x: 500),
|
||||
// height: Constant.getActualY(context: context, y: 56),
|
||||
|
||||
66
lib/screen/registrasi/user_mou_provider.dart
Normal file
66
lib/screen/registrasi/user_mou_provider.dart
Normal file
@@ -0,0 +1,66 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:mitra_corporate/model/test_model.dart';
|
||||
import 'package:mitra_corporate/model/user_mou_model.dart';
|
||||
import 'package:mitra_corporate/repository/registration_repository.dart';
|
||||
|
||||
import '../../provider/dio_provider.dart';
|
||||
import '../../repository/base_repository.dart';
|
||||
|
||||
abstract class GetUserMouState extends Equatable {
|
||||
final DateTime date;
|
||||
const GetUserMouState(this.date);
|
||||
@override
|
||||
List<Object?> get props => [date];
|
||||
}
|
||||
|
||||
class GetUserMouStateInit extends GetUserMouState {
|
||||
GetUserMouStateInit() : super(DateTime.now());
|
||||
}
|
||||
|
||||
class GetUserMouStateLoading extends GetUserMouState {
|
||||
GetUserMouStateLoading() : super(DateTime.now());
|
||||
}
|
||||
|
||||
class GetUserMouStateError extends GetUserMouState {
|
||||
final String message;
|
||||
GetUserMouStateError({
|
||||
required this.message,
|
||||
}) : super(DateTime.now());
|
||||
}
|
||||
|
||||
class GetUserMouStateDone extends GetUserMouState {
|
||||
final List<UserMouModel> model;
|
||||
GetUserMouStateDone({
|
||||
required this.model,
|
||||
}) : super(DateTime.now());
|
||||
}
|
||||
|
||||
//notifier
|
||||
class GetUserMouNotifier extends StateNotifier<GetUserMouState> {
|
||||
final Ref ref;
|
||||
GetUserMouNotifier({
|
||||
required this.ref,
|
||||
}) : super(GetUserMouStateInit());
|
||||
|
||||
void getData({required String userID, required String token}) async {
|
||||
try {
|
||||
state = GetUserMouStateLoading();
|
||||
final dio = ref.read(dioProvider);
|
||||
final resp = await RegistrationRepository(dio: dio)
|
||||
.getUserMou(userID: userID, token: token);
|
||||
state = GetUserMouStateDone(model: resp);
|
||||
} catch (e) {
|
||||
if (e is BaseRepositoryException) {
|
||||
state = GetUserMouStateError(message: e.message.toString());
|
||||
} else {
|
||||
state = GetUserMouStateError(message: e.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//provider
|
||||
final GetUserMouProvider =
|
||||
StateNotifierProvider<GetUserMouNotifier, GetUserMouState>(
|
||||
(ref) => GetUserMouNotifier(ref: ref));
|
||||
Reference in New Issue
Block a user