null safety
This commit is contained in:
@@ -16,9 +16,9 @@ import 'package:path/path.dart' as Path;
|
||||
class PackageModel extends BaseModel {
|
||||
final log = Logger('PackageModel');
|
||||
|
||||
PaginatorListener? packages;
|
||||
PaginatorListener? customerPackages;
|
||||
PaginatorListener? activePackages;
|
||||
late PaginatorListener<Package> packages;
|
||||
late PaginatorListener<Package> customerPackages;
|
||||
late PaginatorListener<Package> activePackages;
|
||||
|
||||
bool isLoading = false;
|
||||
int _menuSelectedIndex = 1;
|
||||
@@ -63,15 +63,16 @@ 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 {
|
||||
if (user == null) return;
|
||||
if (!((user!.hasPackages() || user!.hasReceiving() || user!.hasProcessing())))
|
||||
return;
|
||||
if (!((user!.hasPackages() ||
|
||||
user!.hasReceiving() ||
|
||||
user!.hasProcessing()))) return;
|
||||
String path = "/$packages_collection";
|
||||
|
||||
try {
|
||||
@@ -83,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");
|
||||
}
|
||||
@@ -104,7 +105,7 @@ class PackageModel extends BaseModel {
|
||||
.where("user_id", isEqualTo: user!.id)
|
||||
.orderBy("update_time", descending: true);
|
||||
|
||||
customerPackages!.refresh(
|
||||
customerPackages.refresh(
|
||||
listeningQuery: listenerQuery, pageQuery: pageQuery);
|
||||
} catch (e) {
|
||||
log.warning("Error!! $e");
|
||||
@@ -113,8 +114,9 @@ class PackageModel extends BaseModel {
|
||||
|
||||
Future<void> _loadActivePackages() async {
|
||||
if (user == null) return;
|
||||
if (!((user!.hasPackages() || user!.hasReceiving() || user!.hasProcessing())))
|
||||
return;
|
||||
if (!((user!.hasPackages() ||
|
||||
user!.hasReceiving() ||
|
||||
user!.hasProcessing()))) return;
|
||||
String path = "/$packages_collection";
|
||||
|
||||
try {
|
||||
@@ -126,7 +128,7 @@ class PackageModel extends BaseModel {
|
||||
.where("is_delivered", isEqualTo: false);
|
||||
|
||||
pageQuery = pageQuery.orderBy("update_time", descending: true);
|
||||
activePackages!.refresh(
|
||||
activePackages.refresh(
|
||||
listeningQuery: listenerQuery, pageQuery: pageQuery);
|
||||
} catch (e) {
|
||||
log.warning("Error!! $e");
|
||||
@@ -161,7 +163,8 @@ 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 as Map<String, dynamic>, snap.id);
|
||||
return package;
|
||||
}
|
||||
} catch (e) {
|
||||
@@ -184,7 +187,8 @@ class PackageModel extends BaseModel {
|
||||
if (qsnap.docs.length > 0) {
|
||||
var snap = qsnap.docs[0];
|
||||
if (snap.exists) {
|
||||
var package = Package.fromMap(snap.data as Map<String, dynamic>, snap.id);
|
||||
var package =
|
||||
Package.fromMap(snap.data as Map<String, dynamic>, snap.id);
|
||||
return package;
|
||||
}
|
||||
}
|
||||
@@ -198,7 +202,8 @@ class PackageModel extends BaseModel {
|
||||
if (qsnap.docs.length > 0) {
|
||||
var snap = qsnap.docs[0];
|
||||
if (snap.exists) {
|
||||
var package = Package.fromMap(snap.data as Map<String, dynamic>, snap.id);
|
||||
var package =
|
||||
Package.fromMap(snap.data as Map<String, dynamic>, snap.id);
|
||||
return package;
|
||||
}
|
||||
}
|
||||
@@ -218,8 +223,8 @@ class PackageModel extends BaseModel {
|
||||
.where("is_deleted", isEqualTo: false)
|
||||
.get(const GetOptions(source: Source.server));
|
||||
packages = snaps.docs.map((documentSnapshot) {
|
||||
var p =
|
||||
Package.fromMap(documentSnapshot.data as Map<String, dynamic>, documentSnapshot.id);
|
||||
var p = Package.fromMap(
|
||||
documentSnapshot.data as Map<String, dynamic>, documentSnapshot.id);
|
||||
return p;
|
||||
}).toList();
|
||||
} catch (e) {
|
||||
|
||||
@@ -38,8 +38,8 @@ class _PackageEditorPageState extends State<PackageEditorPage> {
|
||||
super.initState();
|
||||
_package = widget.package!;
|
||||
selectedMarket = _package!.market;
|
||||
_descCtl.text = _package!.desc;
|
||||
_remarkCtl.text = _package!.remark;
|
||||
_descCtl.text = _package!.desc!;
|
||||
_remarkCtl.text = _package!.remark!;
|
||||
multiImgController.setImageUrls = _package!.photoUrls;
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ class _PackageEditorPageState extends State<PackageEditorPage> {
|
||||
String? selectedMarket;
|
||||
Widget marketDropdown() {
|
||||
List<Market> _markets = Provider.of<MarketModel>(context).markets;
|
||||
List<String> markets = _markets.map((e) => e.name).toList();
|
||||
List<String?> markets = _markets.map((e) => e.name).toList();
|
||||
markets.insert(0, MANAGE_MARKET);
|
||||
if (!markets.contains(selectedMarket)) {
|
||||
markets.insert(0, selectedMarket!);
|
||||
@@ -194,10 +194,10 @@ class _PackageEditorPageState extends State<PackageEditorPage> {
|
||||
});
|
||||
},
|
||||
isExpanded: true,
|
||||
items: markets.map<DropdownMenuItem<String>>((String value) {
|
||||
items: markets.map<DropdownMenuItem<String>>((String? value) {
|
||||
return DropdownMenuItem<String>(
|
||||
value: value,
|
||||
child: Text(value,
|
||||
child: Text(value ?? "",
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(
|
||||
color: value == MANAGE_MARKET
|
||||
|
||||
@@ -51,10 +51,10 @@ class _PackageInfoState extends State<PackageInfo> {
|
||||
initPackage(Package pkg) async {
|
||||
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;
|
||||
multiImgController.setImageUrls = package!.photoUrls;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ class _PackageInfoState extends State<PackageInfo> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
String id = Provider.of<MainModel>(context).user.id;
|
||||
String? id = Provider.of<MainModel>(context).user!.id;
|
||||
bool owner = _package?.userID == id;
|
||||
bool canChangeDeliveryAddress =
|
||||
_package?.status == package_received_status ||
|
||||
@@ -199,7 +199,7 @@ class _PackageInfoState extends State<PackageInfo> {
|
||||
try {
|
||||
await packageModel.changeDeliveryAddress(_package!, deliveryAddress);
|
||||
var da =
|
||||
await deliveryAddressModel.getDeliveryAddress(deliveryAddress.id);
|
||||
await deliveryAddressModel.getDeliveryAddress(deliveryAddress.id!);
|
||||
setState(() {
|
||||
_package!.deliveryAddress = da;
|
||||
});
|
||||
|
||||
@@ -97,7 +97,7 @@ class _PackageListState extends State<PackageList> {
|
||||
|
||||
_searchCallback(Package package) async {
|
||||
var packageModel = Provider.of<PackageModel>(context, listen: false);
|
||||
Package _package = await packageModel.getPackage(package.id);
|
||||
Package? _package = await packageModel.getPackage(package.id!);
|
||||
if (_package == null) return;
|
||||
Navigator.push(
|
||||
context,
|
||||
|
||||
@@ -60,7 +60,9 @@ class PackageListRow extends StatelessWidget {
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 8.0),
|
||||
child: new Text(
|
||||
package!.id == null ? '' : package!.trackingID,
|
||||
package!.id == null
|
||||
? ''
|
||||
: package!.trackingID!,
|
||||
style: new TextStyle(
|
||||
fontSize: 15.0, color: Colors.black),
|
||||
),
|
||||
@@ -68,7 +70,9 @@ class PackageListRow extends StatelessWidget {
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 8.0),
|
||||
child: new Text(
|
||||
package!.market == null ? '' : package!.market,
|
||||
package!.market == null
|
||||
? ''
|
||||
: package!.market!,
|
||||
style: new TextStyle(
|
||||
fontSize: 15.0, color: Colors.black),
|
||||
),
|
||||
@@ -84,12 +88,14 @@ class PackageListRow extends StatelessWidget {
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(3.0),
|
||||
child: getStatus(package!.status),
|
||||
child: getStatus(package!.status??""),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(0),
|
||||
child: new Text(
|
||||
dateFormat.format(package!.currentStatusDate),
|
||||
package!.currentStatusDate != null
|
||||
? dateFormat.format(package!.currentStatusDate!)
|
||||
: '',
|
||||
style:
|
||||
new TextStyle(fontSize: 15.0, color: Colors.grey),
|
||||
),
|
||||
|
||||
@@ -144,8 +144,8 @@ class _PackageNewState extends State<PackageNew> {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(packages[index].market),
|
||||
Text(packages[index].trackingID),
|
||||
Text(packages[index].market!),
|
||||
Text(packages[index].trackingID!),
|
||||
// DisplayText(
|
||||
// labelText: "Tracking ID",
|
||||
// text: packages[index].trackingID,
|
||||
|
||||
@@ -87,7 +87,7 @@ class _TrackingIDPageState extends State<TrackingIDPage> {
|
||||
String? selectedMarket;
|
||||
Widget dropDown() {
|
||||
List<Market> _markets = Provider.of<MarketModel>(context).markets;
|
||||
List<String> markets = _markets.map((e) => e.name).toList();
|
||||
List<String?> markets = _markets.map((e) => e.name).toList();
|
||||
markets.insert(0, MANAGE_MARKET);
|
||||
markets.insert(0, SELECT_MARKET);
|
||||
|
||||
@@ -126,10 +126,10 @@ class _TrackingIDPageState extends State<TrackingIDPage> {
|
||||
});
|
||||
},
|
||||
isExpanded: true,
|
||||
items: markets.map<DropdownMenuItem<String>>((String value) {
|
||||
items: markets.map<DropdownMenuItem<String>>((String? value) {
|
||||
return DropdownMenuItem<String>(
|
||||
value: value,
|
||||
child: Text(value,
|
||||
child: Text(value ?? "",
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(
|
||||
color: value == MANAGE_MARKET
|
||||
@@ -146,7 +146,7 @@ class _TrackingIDPageState extends State<TrackingIDPage> {
|
||||
_manageMarket() {
|
||||
Navigator.push<Package>(
|
||||
context,
|
||||
CupertinoPageRoute(builder: (context) => MarketEditor()),
|
||||
CupertinoPageRoute(builder: (context) => MarketEditor()),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user