fix null safety
This commit is contained in:
@@ -32,9 +32,6 @@ class AuthFb {
|
||||
try {
|
||||
_authResult = await _fb.signInWithCredential(credential);
|
||||
print("PhoneVerificationCompleted :$_authResult");
|
||||
if (_authResult == null) {
|
||||
throw SigninException("Sigin error!");
|
||||
}
|
||||
} catch (e) {
|
||||
print("Exception:$e");
|
||||
// throw e;
|
||||
@@ -61,7 +58,8 @@ class AuthFb {
|
||||
_verificationId = verificationId;
|
||||
print("codeSent " + phoneNumber);
|
||||
codeSentCompleted = true;
|
||||
completer.complete(fcs.AuthResult(authStatus: AuthStatus.SMS_SENT));
|
||||
if (!completer.isCompleted)
|
||||
completer.complete(fcs.AuthResult(authStatus: AuthStatus.SMS_SENT));
|
||||
};
|
||||
|
||||
final fb.PhoneCodeAutoRetrievalTimeout codeAutoRetrievalTimeout =
|
||||
@@ -70,7 +68,8 @@ class AuthFb {
|
||||
|
||||
_verificationId = verificationId;
|
||||
if (codeSentCompleted) {
|
||||
completer.complete(fcs.AuthResult(authStatus: AuthStatus.SMS_SENT));
|
||||
if (!completer.isCompleted)
|
||||
completer.complete(fcs.AuthResult(authStatus: AuthStatus.SMS_SENT));
|
||||
} else {
|
||||
completer.completeError(SigninException("SMS code failed"));
|
||||
}
|
||||
@@ -92,11 +91,7 @@ class AuthFb {
|
||||
final fb.AuthCredential credential = fb.PhoneAuthProvider.credential(
|
||||
verificationId: _verificationId, smsCode: smsCode);
|
||||
|
||||
fb.UserCredential _authResult =
|
||||
await _fb.signInWithCredential(credential);
|
||||
if (_authResult == null) {
|
||||
throw SigninException("Sigin error!");
|
||||
}
|
||||
await _fb.signInWithCredential(credential);
|
||||
await _addUserToStream(refreshIdToken: true);
|
||||
} on Exception catch (e) {
|
||||
return Future.error(SigninException(e.toString()));
|
||||
@@ -118,7 +113,7 @@ class AuthFb {
|
||||
log.info("Claims:$claims");
|
||||
if (claims == null) return;
|
||||
|
||||
String cid = claims["cid"];
|
||||
String? cid = claims["cid"];
|
||||
User? user;
|
||||
if (cid != null && cid != "") {
|
||||
user = await _getUserFromFirestore(cid);
|
||||
@@ -129,7 +124,7 @@ class AuthFb {
|
||||
}
|
||||
|
||||
// add privileges
|
||||
String privileges = claims["pr"];
|
||||
String? privileges = claims["pr"];
|
||||
if (privileges != null && privileges != "") {
|
||||
user.privileges = privileges.split(":").toList();
|
||||
} else {
|
||||
@@ -238,7 +233,7 @@ class AuthFb {
|
||||
// get privilege from claim
|
||||
fb.IdTokenResult idToken = await firebaseUser.getIdTokenResult(true);
|
||||
|
||||
String privileges = idToken.claims?["pr"] ?? '';
|
||||
String? privileges = idToken.claims?["pr"] ?? '';
|
||||
if (privileges != null && privileges != "") {
|
||||
user.privileges = privileges.split(":").toList();
|
||||
}
|
||||
@@ -274,7 +269,7 @@ class AuthFb {
|
||||
}
|
||||
}
|
||||
|
||||
controller = StreamController<User>(
|
||||
controller = StreamController<User?>(
|
||||
onListen: _start, onPause: _stop, onResume: _start, onCancel: _stop);
|
||||
|
||||
return controller.stream;
|
||||
|
||||
@@ -45,9 +45,13 @@ class MessagingFCM {
|
||||
}
|
||||
});
|
||||
|
||||
String? token = await _firebaseMessaging.getToken();
|
||||
if (onSetupComplete != null && token != null) onSetupComplete(token);
|
||||
log.info("Messaging Token:$token");
|
||||
try {
|
||||
String? token = await _firebaseMessaging.getToken();
|
||||
if (onSetupComplete != null && token != null) onSetupComplete(token);
|
||||
log.info("Messaging Token:$token");
|
||||
} on Exception catch (e) {
|
||||
log.shout("Unable to get messing token:$e");
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> subscribeToTopic(String topic) {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:firebase_core/firebase_core.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
@@ -6,8 +7,9 @@ import 'app.dart';
|
||||
import 'config.dart';
|
||||
import 'data/provider/messaging_fcm.dart';
|
||||
|
||||
void main() {
|
||||
Future<void> main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await Firebase.initializeApp();
|
||||
FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler);
|
||||
|
||||
Config(
|
||||
|
||||
@@ -12,7 +12,7 @@ import 'package:logging/logging.dart';
|
||||
|
||||
class CartonModel extends BaseModel {
|
||||
List<Carton> _boxes = [];
|
||||
late PaginatorListener<Carton> cartonsByFilter;
|
||||
PaginatorListener<Carton>? cartonsByFilter;
|
||||
|
||||
final log = Logger('CartonModel');
|
||||
List<Carton> get boxes => _selectedIndex == 1
|
||||
@@ -165,8 +165,8 @@ class CartonModel extends BaseModel {
|
||||
.where("status", isEqualTo: carton_packed_status)
|
||||
.orderBy(orderName, descending: true);
|
||||
|
||||
cartonsByFilter.refresh(
|
||||
listeningQuery: listenerQuery, pageQuery: pageQuery);
|
||||
cartonsByFilter!
|
||||
.refresh(listeningQuery: listenerQuery, pageQuery: pageQuery);
|
||||
} catch (e) {
|
||||
log.warning("Error!! $e");
|
||||
}
|
||||
@@ -211,7 +211,7 @@ class CartonModel extends BaseModel {
|
||||
if (listener != null) await listener!.cancel();
|
||||
if (cartonListener != null) await cartonListener!.cancel();
|
||||
if (_delivered != null) _delivered!.close();
|
||||
if (cartonsByFilter != null) cartonsByFilter.close();
|
||||
if (cartonsByFilter != null) cartonsByFilter!.close();
|
||||
_boxes = [];
|
||||
}
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ class PartSearchDelegate extends SearchDelegate<Carton> {
|
||||
return Container(
|
||||
padding: EdgeInsets.only(top: 5),
|
||||
child: PaginatorListView<Carton>(
|
||||
paginatorListener: cartonModel.cartonsByFilter,
|
||||
paginatorListener: cartonModel.cartonsByFilter!,
|
||||
rowBuilder: (c) => CartonListRow(
|
||||
key: ValueKey(c.id),
|
||||
carton: c,
|
||||
|
||||
@@ -13,11 +13,11 @@ class DeliveryAddressModel extends BaseModel {
|
||||
|
||||
StreamSubscription<QuerySnapshot>? listener;
|
||||
|
||||
DeliveryAddress get defalutAddress =>
|
||||
deliveryAddresses.firstWhere((e) => e.isDefault, orElse: () => DeliveryAddress());
|
||||
DeliveryAddress get defalutAddress => deliveryAddresses
|
||||
.firstWhere((e) => e.isDefault, orElse: () => DeliveryAddress());
|
||||
|
||||
DeliveryAddress getLocalDeliveryAddress(String id) =>
|
||||
deliveryAddresses.firstWhere((e) => e.id == id, orElse: () => DeliveryAddress());
|
||||
DeliveryAddress getLocalDeliveryAddress(String id) => deliveryAddresses
|
||||
.firstWhere((e) => e.id == id, orElse: () => DeliveryAddress());
|
||||
|
||||
@override
|
||||
void privilegeChanged() {
|
||||
@@ -46,7 +46,8 @@ class DeliveryAddressModel extends BaseModel {
|
||||
deliveryAddresses.clear();
|
||||
deliveryAddresses = snapshot.docs.map((documentSnapshot) {
|
||||
var s = DeliveryAddress.fromMap(
|
||||
documentSnapshot.data as Map<String,dynamic>, documentSnapshot.id);
|
||||
documentSnapshot.data() as Map<String, dynamic>,
|
||||
documentSnapshot.id);
|
||||
return s;
|
||||
}).toList();
|
||||
notifyListeners();
|
||||
@@ -59,7 +60,7 @@ class DeliveryAddressModel extends BaseModel {
|
||||
Future<DeliveryAddress> getDeliveryAddress(String id) async {
|
||||
String path = "/$user_collection/${user!.id}/$delivery_address_collection";
|
||||
var snap = await FirebaseFirestore.instance.collection(path).doc(id).get();
|
||||
return DeliveryAddress.fromMap(snap.data as Map<String,dynamic>, snap.id);
|
||||
return DeliveryAddress.fromMap(snap.data as Map<String, dynamic>, snap.id);
|
||||
}
|
||||
|
||||
void initUser(user) {
|
||||
@@ -95,7 +96,8 @@ class DeliveryAddressModel extends BaseModel {
|
||||
.orderBy("full_name")
|
||||
.get();
|
||||
return querySnap.docs
|
||||
.map((e) => DeliveryAddress.fromMap(e.data as Map<String,dynamic>, e.id))
|
||||
.map((e) =>
|
||||
DeliveryAddress.fromMap(e.data as Map<String, dynamic>, e.id))
|
||||
.toList();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,8 @@ class DiscountModel extends BaseModel {
|
||||
.listen((snaps) {
|
||||
_discounts.clear();
|
||||
snaps.docs.forEach((d) {
|
||||
_discounts.add(Discount.fromMap(d.data as Map<String,dynamic>, d.id));
|
||||
_discounts
|
||||
.add(Discount.fromMap(d.data() as Map<String, dynamic>, d.id));
|
||||
});
|
||||
notifyListeners();
|
||||
});
|
||||
@@ -79,9 +80,9 @@ class DiscountModel extends BaseModel {
|
||||
.where("customer_id", isEqualTo: userID)
|
||||
.where("status", isEqualTo: "available");
|
||||
var snaps = await q.get(const GetOptions(source: Source.server));
|
||||
var discounts = snaps.docs.map((snap) {
|
||||
var discounts = snaps.docs.map((snap) {
|
||||
if (snap.exists) {
|
||||
var s = Discount.fromMap(snap.data as Map<String,dynamic>, snap.id);
|
||||
var s = Discount.fromMap(snap.data as Map<String, dynamic>, snap.id);
|
||||
return s;
|
||||
}
|
||||
}).toList();
|
||||
|
||||
@@ -27,7 +27,7 @@ class FAQModel extends BaseModel {
|
||||
.listen((snaps) {
|
||||
faqs.clear();
|
||||
snaps.docs.forEach((d) {
|
||||
faqs.add(FAQ.fromMap(d.data as Map<String,dynamic>, d.id));
|
||||
faqs.add(FAQ.fromMap(d.data(), d.id));
|
||||
});
|
||||
notifyListeners();
|
||||
});
|
||||
|
||||
@@ -58,7 +58,7 @@ class FcsShipmentModel extends BaseModel {
|
||||
_fcsShipments.clear();
|
||||
_fcsShipments = snapshot.docs.map((documentSnapshot) {
|
||||
var s = FcsShipment.fromMap(
|
||||
documentSnapshot.data as Map<String,dynamic>, documentSnapshot.id);
|
||||
documentSnapshot.data() as Map<String,dynamic>, documentSnapshot.id);
|
||||
return s;
|
||||
}).toList();
|
||||
notifyListeners();
|
||||
|
||||
@@ -20,9 +20,9 @@ class InvoiceModel extends BaseModel {
|
||||
List<Invoice> _invoices = [];
|
||||
|
||||
List<Invoice> get invoices =>
|
||||
_selectedIndex == 1 ? _invoices : List<Invoice>.from(_paginator.values);
|
||||
_selectedIndex == 1 ? _invoices : List<Invoice>.from(_paginator!.values);
|
||||
|
||||
late Paginator _paginator;
|
||||
Paginator? _paginator;
|
||||
|
||||
bool endOfPaidInvoices = false;
|
||||
bool isLoading = false;
|
||||
@@ -43,9 +43,9 @@ class InvoiceModel extends BaseModel {
|
||||
initData(bool forCustomer, bool isCanceled, bool isPaid) {
|
||||
_loadInvoices(forCustomer);
|
||||
|
||||
if (_paginator != null) _paginator.close();
|
||||
if (_paginator != null) _paginator!.close();
|
||||
_paginator = _getPaginator(forCustomer, isCanceled, isPaid);
|
||||
_paginator.load(onFinished: () {
|
||||
_paginator!.load(onFinished: () {
|
||||
notifyListeners();
|
||||
});
|
||||
}
|
||||
@@ -70,7 +70,8 @@ class InvoiceModel extends BaseModel {
|
||||
listener = q.snapshots().listen((QuerySnapshot snapshot) {
|
||||
_invoices.clear();
|
||||
_invoices = snapshot.docs.map((documentSnapshot) {
|
||||
var s = Invoice.fromMap(documentSnapshot.data as Map<String, dynamic>,
|
||||
var s = Invoice.fromMap(
|
||||
documentSnapshot.data() as Map<String, dynamic>,
|
||||
documentSnapshot.id);
|
||||
return s;
|
||||
}).toList();
|
||||
@@ -106,11 +107,11 @@ class InvoiceModel extends BaseModel {
|
||||
}
|
||||
|
||||
Future<void> loadMore({bool? isCustomer}) async {
|
||||
if (_paginator.ended || _selectedIndex == 1)
|
||||
if (_paginator!.ended || _selectedIndex == 1)
|
||||
return; // when paid menu is not selected return
|
||||
isLoading = true;
|
||||
notifyListeners();
|
||||
await _paginator.load(onFinished: () {
|
||||
await _paginator!.load(onFinished: () {
|
||||
isLoading = false;
|
||||
notifyListeners();
|
||||
});
|
||||
@@ -118,7 +119,7 @@ class InvoiceModel extends BaseModel {
|
||||
|
||||
Future<void> refresh({bool? isCustomer}) async {
|
||||
if (_selectedIndex == 1) return; // when paid menu is not selected return
|
||||
await _paginator.refresh(onFinished: () {
|
||||
await _paginator!.refresh(onFinished: () {
|
||||
notifyListeners();
|
||||
});
|
||||
}
|
||||
@@ -128,7 +129,7 @@ class InvoiceModel extends BaseModel {
|
||||
}
|
||||
|
||||
logout() async {
|
||||
if (_paginator != null) _paginator.close();
|
||||
if (_paginator != null) _paginator!.close();
|
||||
if (listener != null) await listener!.cancel();
|
||||
_invoices = [];
|
||||
}
|
||||
|
||||
@@ -27,7 +27,8 @@ class MarketModel extends BaseModel {
|
||||
markets.clear();
|
||||
markets = snapshot.docs.map((documentSnapshot) {
|
||||
var user = Market.fromMap(
|
||||
documentSnapshot.data as Map<String, dynamic>, documentSnapshot.id);
|
||||
documentSnapshot.data() as Map<String, dynamic>,
|
||||
documentSnapshot.id);
|
||||
return user;
|
||||
}).toList();
|
||||
notifyListeners();
|
||||
|
||||
@@ -16,9 +16,9 @@ import 'package:path/path.dart' as Path;
|
||||
class PackageModel extends BaseModel {
|
||||
final log = Logger('PackageModel');
|
||||
|
||||
late PaginatorListener<Package> packages;
|
||||
late PaginatorListener<Package> customerPackages;
|
||||
late PaginatorListener<Package> activePackages;
|
||||
PaginatorListener<Package>? packages;
|
||||
PaginatorListener<Package>? customerPackages;
|
||||
PaginatorListener<Package>? activePackages;
|
||||
|
||||
bool isLoading = false;
|
||||
int _menuSelectedIndex = 1;
|
||||
@@ -63,9 +63,9 @@ class PackageModel extends BaseModel {
|
||||
|
||||
@override
|
||||
logout() async {
|
||||
if (customerPackages != null) customerPackages.close();
|
||||
if (packages != null) packages.close();
|
||||
if (activePackages != null) activePackages.close();
|
||||
if (customerPackages != null) customerPackages!.close();
|
||||
if (packages != null) packages!.close();
|
||||
if (activePackages != null) activePackages!.close();
|
||||
}
|
||||
|
||||
Future<void> _loadPackages(bool isDelivered) async {
|
||||
@@ -84,7 +84,7 @@ class PackageModel extends BaseModel {
|
||||
.where("is_delivered", isEqualTo: isDelivered);
|
||||
|
||||
pageQuery = pageQuery.orderBy("update_time", descending: true);
|
||||
packages.refresh(listeningQuery: listenerQuery, pageQuery: pageQuery);
|
||||
packages!.refresh(listeningQuery: listenerQuery, pageQuery: pageQuery);
|
||||
} catch (e) {
|
||||
log.warning("Error!! $e");
|
||||
}
|
||||
@@ -105,8 +105,8 @@ class PackageModel extends BaseModel {
|
||||
.where("user_id", isEqualTo: user!.id)
|
||||
.orderBy("update_time", descending: true);
|
||||
|
||||
customerPackages.refresh(
|
||||
listeningQuery: listenerQuery, pageQuery: pageQuery);
|
||||
customerPackages!
|
||||
.refresh(listeningQuery: listenerQuery, pageQuery: pageQuery);
|
||||
} catch (e) {
|
||||
log.warning("Error!! $e");
|
||||
}
|
||||
@@ -128,8 +128,8 @@ class PackageModel extends BaseModel {
|
||||
.where("is_delivered", isEqualTo: false);
|
||||
|
||||
pageQuery = pageQuery.orderBy("update_time", descending: true);
|
||||
activePackages.refresh(
|
||||
listeningQuery: listenerQuery, pageQuery: pageQuery);
|
||||
activePackages!
|
||||
.refresh(listeningQuery: listenerQuery, pageQuery: pageQuery);
|
||||
} catch (e) {
|
||||
log.warning("Error!! $e");
|
||||
}
|
||||
@@ -163,8 +163,7 @@ class PackageModel extends BaseModel {
|
||||
.get(const GetOptions(source: Source.server));
|
||||
if (snaps.docs.length == 1) {
|
||||
var snap = snaps.docs[0];
|
||||
var package =
|
||||
Package.fromMap(snap.data as Map<String, dynamic>, snap.id);
|
||||
var package = Package.fromMap(snap.data(), snap.id);
|
||||
return package;
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
@@ -38,7 +38,7 @@ class PackageInfo extends StatefulWidget {
|
||||
|
||||
class _PackageInfoState extends State<PackageInfo> {
|
||||
var dateFormatter = new DateFormat('dd MMM yyyy');
|
||||
Package? _package;
|
||||
Package? _package = Package();
|
||||
bool _isLoading = false;
|
||||
MultiImgController multiImgController = MultiImgController();
|
||||
|
||||
@@ -48,13 +48,19 @@ class _PackageInfoState extends State<PackageInfo> {
|
||||
initPackage(widget.package!);
|
||||
}
|
||||
|
||||
initPackage(Package pkg) async {
|
||||
initPackage(Package? pkg) async {
|
||||
setState(() {
|
||||
_isLoading = true;
|
||||
});
|
||||
if (pkg == null) return;
|
||||
PackageModel packageModel =
|
||||
Provider.of<PackageModel>(context, listen: false);
|
||||
Package? package = await packageModel.getPackageByTrackingID(pkg.trackingID!);
|
||||
Package? package =
|
||||
await packageModel.getPackageByTrackingID(pkg!.trackingID!);
|
||||
setState(() {
|
||||
_package = package;
|
||||
multiImgController.setImageUrls = package!.photoUrls;
|
||||
_isLoading = false;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ class _PackageListState extends State<PackageList> {
|
||||
],
|
||||
),
|
||||
body: PaginatorListView<Package>(
|
||||
paginatorListener: packages,
|
||||
paginatorListener: packages!,
|
||||
rowBuilder: (p) => PackageListRow(
|
||||
key: ValueKey(p.id),
|
||||
package: p,
|
||||
|
||||
@@ -26,8 +26,7 @@ class PaymentMethodModel extends BaseModel {
|
||||
.listen((snaps) {
|
||||
paymentMethods.clear();
|
||||
snaps.docs.forEach((d) {
|
||||
paymentMethods
|
||||
.add(PaymentMethod.fromMap(d.data as Map<String, dynamic>, d.id));
|
||||
paymentMethods.add(PaymentMethod.fromMap(d.data(), d.id));
|
||||
});
|
||||
notifyListeners();
|
||||
});
|
||||
|
||||
@@ -73,7 +73,7 @@ class _ProcessingListState extends State<ProcessingList> {
|
||||
backgroundColor: primaryColor,
|
||||
),
|
||||
body: PaginatorListView<Package>(
|
||||
paginatorListener: packages,
|
||||
paginatorListener: packages!,
|
||||
rowBuilder: (p) => ProcessingListRow(
|
||||
key: ValueKey(p.id),
|
||||
package: p,
|
||||
|
||||
@@ -65,7 +65,7 @@ class _ProcessingListState extends State<ProcessingList> {
|
||||
],
|
||||
),
|
||||
body: PaginatorListView<Package>(
|
||||
paginatorListener: packages,
|
||||
paginatorListener: packages!,
|
||||
rowBuilder: (p) => ProcessingListRow(
|
||||
key: ValueKey(p.id),
|
||||
package: p,
|
||||
|
||||
@@ -75,7 +75,7 @@ class _ReceivingListState extends State<ReceivingList> {
|
||||
backgroundColor: primaryColor,
|
||||
),
|
||||
body: PaginatorListView<Package>(
|
||||
paginatorListener: packages,
|
||||
paginatorListener: packages!,
|
||||
rowBuilder: (p) => ReceivingListRow(
|
||||
key: ValueKey(p.id),
|
||||
package: p,
|
||||
|
||||
@@ -15,11 +15,11 @@ class ShipmentModel extends BaseModel {
|
||||
|
||||
List<Shipment> get shipments => _menuSelectedIndex == 1
|
||||
? _shipments
|
||||
: List<Shipment>.from(_delivered.values);
|
||||
: List<Shipment>.from(_delivered!.values);
|
||||
|
||||
List<Shipment> _shipments = [];
|
||||
|
||||
late Paginator _delivered;
|
||||
Paginator? _delivered;
|
||||
bool isLoading = false;
|
||||
int _menuSelectedIndex = 1;
|
||||
|
||||
@@ -34,7 +34,7 @@ class ShipmentModel extends BaseModel {
|
||||
logout();
|
||||
_loadShipments(forCustomer, myPickup);
|
||||
_delivered = _getDelivered(forCustomer);
|
||||
_delivered.load(onFinished: () {
|
||||
_delivered!.load(onFinished: () {
|
||||
isLoading = false;
|
||||
notifyListeners();
|
||||
});
|
||||
@@ -42,7 +42,7 @@ class ShipmentModel extends BaseModel {
|
||||
|
||||
@override
|
||||
logout() async {
|
||||
if (_delivered != null) _delivered.close();
|
||||
if (_delivered != null) _delivered!.close();
|
||||
if (listener != null) await listener!.cancel();
|
||||
_shipments = [];
|
||||
}
|
||||
@@ -50,10 +50,10 @@ class ShipmentModel extends BaseModel {
|
||||
Future<void> loadMore({bool? isCustomer}) async {
|
||||
if (menuSelectedIndex == 1)
|
||||
return; // when delivered menu is not selected return
|
||||
if (_delivered.ended) return;
|
||||
if (_delivered!.ended) return;
|
||||
isLoading = true;
|
||||
notifyListeners();
|
||||
await _delivered.load(onFinished: () {
|
||||
await _delivered!.load(onFinished: () {
|
||||
isLoading = false;
|
||||
notifyListeners();
|
||||
});
|
||||
@@ -62,7 +62,7 @@ class ShipmentModel extends BaseModel {
|
||||
Future<void> refresh({bool? isCustomer}) async {
|
||||
if (menuSelectedIndex == 1)
|
||||
return; // when delivered menu is not selected return
|
||||
await _delivered.refresh(onFinished: () {
|
||||
await _delivered!.refresh(onFinished: () {
|
||||
notifyListeners();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -46,8 +46,9 @@ class StaffModel extends BaseModel {
|
||||
.listen((QuerySnapshot snapshot) {
|
||||
employees.clear();
|
||||
employees = snapshot.docs.map((documentSnapshot) {
|
||||
var user =
|
||||
User.fromMap(documentSnapshot.data as Map<String,dynamic>, documentSnapshot.id);
|
||||
var user = User.fromMap(
|
||||
documentSnapshot.data() as Map<String, dynamic>,
|
||||
documentSnapshot.id);
|
||||
return user;
|
||||
}).toList();
|
||||
notifyListeners();
|
||||
@@ -66,7 +67,8 @@ class StaffModel extends BaseModel {
|
||||
privileges.clear();
|
||||
privileges = snapshot.docs.map((documentSnapshot) {
|
||||
var privilege = Privilege.fromMap(
|
||||
documentSnapshot.data as Map<String,dynamic>, documentSnapshot.id);
|
||||
documentSnapshot.data() as Map<String, dynamic>,
|
||||
documentSnapshot.id);
|
||||
return privilege;
|
||||
}).toList();
|
||||
notifyListeners();
|
||||
@@ -101,8 +103,8 @@ class StaffModel extends BaseModel {
|
||||
.where("privileges", arrayContains: privilege)
|
||||
.get(const GetOptions(source: Source.server));
|
||||
users = snaps.docs.map((documentSnapshot) {
|
||||
var user =
|
||||
User.fromMap(documentSnapshot.data as Map<String,dynamic>, documentSnapshot.id);
|
||||
var user = User.fromMap(
|
||||
documentSnapshot.data as Map<String, dynamic>, documentSnapshot.id);
|
||||
return user;
|
||||
}).toList();
|
||||
} catch (e) {
|
||||
|
||||
@@ -7,9 +7,9 @@ import 'package:fcs/helpers/theme.dart';
|
||||
class LocalText extends Text {
|
||||
final BuildContext context;
|
||||
LocalText(this.context, String translationKey,
|
||||
{Color? color,
|
||||
double? fontSize,
|
||||
FontWeight? fontWeight,
|
||||
{Color color = secondaryColor,
|
||||
double fontSize = 13,
|
||||
FontWeight fontWeight = FontWeight.w500,
|
||||
List<String>? translationVariables,
|
||||
String? text,
|
||||
bool underline = false})
|
||||
@@ -19,14 +19,14 @@ class LocalText extends Text {
|
||||
translationVariables: translationVariables),
|
||||
style: Provider.of<LanguageModel>(context, listen: false).isEng
|
||||
? newLabelStyle(
|
||||
color: color!,
|
||||
fontSize: fontSize!,
|
||||
fontWeight: fontWeight!,
|
||||
color: color,
|
||||
fontSize: fontSize,
|
||||
fontWeight: fontWeight,
|
||||
underline: underline)
|
||||
: newLabelStyleMM(
|
||||
color: color!,
|
||||
fontSize: fontSize!,
|
||||
fontWeight: fontWeight!,
|
||||
color: color,
|
||||
fontSize: fontSize,
|
||||
fontWeight: fontWeight,
|
||||
underline: underline));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user