pickup
This commit is contained in:
@@ -580,10 +580,14 @@
|
|||||||
"pickup.edit.title":"Pickup",
|
"pickup.edit.title":"Pickup",
|
||||||
"pickup.pickup_number":"Pickup Number",
|
"pickup.pickup_number":"Pickup Number",
|
||||||
"pickup.date":"Pickup Date",
|
"pickup.date":"Pickup Date",
|
||||||
"pickup.time":"Pickup Time",
|
"pickup.from_time":"From Time",
|
||||||
|
"pickup.to_time":"To Time",
|
||||||
"pickup.status":"Status",
|
"pickup.status":"Status",
|
||||||
"pickup.desc":"Description",
|
"pickup.desc":"Description",
|
||||||
"pickup.remark":"Remark",
|
"pickup.remark":"Remark",
|
||||||
|
"pickup.staff.name":"Staff",
|
||||||
"pickup.edit.complete.btn":"Complete pickup",
|
"pickup.edit.complete.btn":"Complete pickup",
|
||||||
|
"pickup.continue.btn":"Continue to complete",
|
||||||
|
"pickup.confirm.complete":"Complete confirm?",
|
||||||
"Pickup End ===================================================================":""
|
"Pickup End ===================================================================":""
|
||||||
}
|
}
|
||||||
@@ -573,15 +573,19 @@
|
|||||||
"Processing End ================================================================":"",
|
"Processing End ================================================================":"",
|
||||||
|
|
||||||
"Pickup Start ================================================================":"",
|
"Pickup Start ================================================================":"",
|
||||||
"pickup.title":"Pickups",
|
"pickup.title":"ပို့ဆောင်ခြင်းများ",
|
||||||
"pickup.info.title":"Pickup",
|
"pickup.info.title":"ပို့ဆောင်ခြင်း",
|
||||||
"pickup.edit.title":"Pickup",
|
"pickup.edit.title":"ပို့ဆောင်ခြင်း",
|
||||||
"pickup.pickup_number":"Pickup Number",
|
"pickup.pickup_number":"ပို့ဆောင်ခြင်း နံပါတ်",
|
||||||
"pickup.date":"Pickup Date",
|
"pickup.date":"ပို့ဆောင်ခြင်း ရက်စွဲ",
|
||||||
"pickup.time":"Pickup Time",
|
"pickup.from_time":"အချိန်(မှ)",
|
||||||
|
"pickup.to_time":"အချိန်(တွင်း)",
|
||||||
"pickup.status":"အခြေအနေ",
|
"pickup.status":"အခြေအနေ",
|
||||||
"pickup.desc":"ဖော်ပြချက်",
|
"pickup.desc":"ဖော်ပြချက်",
|
||||||
"pickup.remark":"မှတ်ချက်",
|
"pickup.remark":"မှတ်ချက်",
|
||||||
"pickup.edit.complete.btn":"Complete pickup",
|
"pickup.staff.name":"ဝန်ထမ်း",
|
||||||
|
"pickup.edit.complete.btn":"ပို့ဆောင်ခြင်း ပြီးဆုံးသည်",
|
||||||
|
"pickup.continue.btn":"Continue to complete",
|
||||||
|
"pickup.confirm.complete":"Complete confirm?",
|
||||||
"Pickup End ===================================================================":""
|
"Pickup End ===================================================================":""
|
||||||
}
|
}
|
||||||
90
lib/domain/entities/pickup.dart
Normal file
90
lib/domain/entities/pickup.dart
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||||
|
import 'package:fcs/domain/entities/package.dart';
|
||||||
|
|
||||||
|
class Pickup {
|
||||||
|
String? id;
|
||||||
|
DateTime? pickupDate;
|
||||||
|
String? fromTime;
|
||||||
|
String? toTime;
|
||||||
|
//for consignee
|
||||||
|
String? userID;
|
||||||
|
String? userName;
|
||||||
|
String? userPhoneNumber;
|
||||||
|
|
||||||
|
String? staffId;
|
||||||
|
String? staffName;
|
||||||
|
String? staffPhoneNumber;
|
||||||
|
//for shipper
|
||||||
|
String? fcsID;
|
||||||
|
String? shipperName;
|
||||||
|
String? shipperPhoneNumber;
|
||||||
|
String? status;
|
||||||
|
|
||||||
|
List<Package> packages;
|
||||||
|
|
||||||
|
Pickup(
|
||||||
|
{this.id,
|
||||||
|
this.userID,
|
||||||
|
this.userName,
|
||||||
|
this.userPhoneNumber,
|
||||||
|
this.staffId,
|
||||||
|
this.staffName,
|
||||||
|
this.staffPhoneNumber,
|
||||||
|
this.pickupDate,
|
||||||
|
this.fromTime,
|
||||||
|
this.toTime,
|
||||||
|
this.fcsID,
|
||||||
|
this.shipperName,
|
||||||
|
this.shipperPhoneNumber,
|
||||||
|
this.status,
|
||||||
|
this.packages = const []});
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) => other is Pickup && other.id == id;
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => id.hashCode;
|
||||||
|
|
||||||
|
bool isChangedForEdit(Pickup Pickup) {
|
||||||
|
return Pickup.userID != this.userID ||
|
||||||
|
Pickup.fcsID != this.fcsID ||
|
||||||
|
Pickup.packages != this.packages;
|
||||||
|
}
|
||||||
|
|
||||||
|
factory Pickup.fromMap(Map<String, dynamic> map, String id) {
|
||||||
|
var _pickupDate = (map['pickup_date'] as Timestamp);
|
||||||
|
return Pickup(
|
||||||
|
id: id,
|
||||||
|
pickupDate: _pickupDate.toDate(),
|
||||||
|
fromTime: map['from_time'],
|
||||||
|
toTime: map['to_time'],
|
||||||
|
staffId: map['staff_id'],
|
||||||
|
staffName: map['staff_name'],
|
||||||
|
staffPhoneNumber: map['staff_phone_number'],
|
||||||
|
userID: map['user_id'],
|
||||||
|
userName: map['user_name'],
|
||||||
|
userPhoneNumber: map['user_phone_number'],
|
||||||
|
status: map['status']);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toMap() {
|
||||||
|
return {
|
||||||
|
"id": id,
|
||||||
|
"pickup_date": pickupDate?.toUtc().toIso8601String(),
|
||||||
|
'from_time': fromTime,
|
||||||
|
'to_time': toTime,
|
||||||
|
'staff_id': staffId,
|
||||||
|
'staff_name': staffName,
|
||||||
|
"staff_phone_number": staffPhoneNumber,
|
||||||
|
'user_id': userID,
|
||||||
|
'user_name': userName,
|
||||||
|
'user_phone_number': userPhoneNumber,
|
||||||
|
'status': status,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'Pickup{id: $id}';
|
||||||
|
}
|
||||||
|
}
|
||||||
54
lib/pages/pickup/model/pickup_model.dart
Normal file
54
lib/pages/pickup/model/pickup_model.dart
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||||
|
import 'package:fcs/domain/entities/package.dart';
|
||||||
|
import 'package:fcs/domain/entities/processing.dart';
|
||||||
|
import 'package:fcs/pages/main/model/base_model.dart';
|
||||||
|
import 'package:fcs/pagination/paginator_listener.dart';
|
||||||
|
import 'package:logging/logging.dart';
|
||||||
|
|
||||||
|
class PickupModel extends BaseModel {
|
||||||
|
// List<Processing> pickups = [];
|
||||||
|
final log = Logger('PickupModel');
|
||||||
|
|
||||||
|
StreamSubscription<QuerySnapshot>? listener;
|
||||||
|
|
||||||
|
PaginatorListener<Package>? pickups;
|
||||||
|
|
||||||
|
int _menuSelectedIndex = 1;
|
||||||
|
|
||||||
|
set menuSelectedIndex(int index) {
|
||||||
|
_menuSelectedIndex = index;
|
||||||
|
|
||||||
|
// _loadPackages(_menuSelectedIndex == 2);
|
||||||
|
// _loadCustomerPackages(_menuSelectedIndex == 2);
|
||||||
|
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
int get menuSelectedIndex => _menuSelectedIndex;
|
||||||
|
|
||||||
|
void initUser(user) {
|
||||||
|
super.initUser(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
void privilegeChanged() {
|
||||||
|
if (user != null) {
|
||||||
|
_initData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _initData() async {}
|
||||||
|
|
||||||
|
@override
|
||||||
|
logout() async {
|
||||||
|
if (listener != null) await listener!.cancel();
|
||||||
|
if (pickups != null) pickups!.close();
|
||||||
|
// pickups = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> createProcessing(Processing processing) async {}
|
||||||
|
|
||||||
|
Future<void> updateProcessing(Processing processing) async {}
|
||||||
|
}
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
import 'dart:async';
|
|
||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
|
||||||
import 'package:fcs/domain/entities/package.dart';
|
|
||||||
import 'package:fcs/domain/entities/processing.dart';
|
|
||||||
import 'package:fcs/pages/main/model/base_model.dart';
|
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
|
|
||||||
class ProcessingModel extends BaseModel {
|
|
||||||
List<Processing> processings = [];
|
|
||||||
final log = Logger('ProcessingModel');
|
|
||||||
|
|
||||||
StreamSubscription<QuerySnapshot>? listener;
|
|
||||||
|
|
||||||
void initUser(user) {
|
|
||||||
super.initUser(user);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
logout() async {
|
|
||||||
if (listener != null) await listener!.cancel();
|
|
||||||
|
|
||||||
processings = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> createProcessing(Processing processing) async {}
|
|
||||||
|
|
||||||
Future<void> updateProcessing(Processing processing) async {}
|
|
||||||
}
|
|
||||||
@@ -64,18 +64,17 @@ class _PickupEditorState extends State<PickupEditor> {
|
|||||||
Container(
|
Container(
|
||||||
width: 150,
|
width: 150,
|
||||||
child: DisplayText(
|
child: DisplayText(
|
||||||
text: '',
|
text: '9:00 AM',
|
||||||
labelTextKey: "pickup.time",
|
labelTextKey: "pickup.from_time",
|
||||||
iconData: Icons.timer,
|
iconData: MaterialCommunityIcons.clock_start,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Container(
|
Container(
|
||||||
width: 150,
|
width: 150,
|
||||||
child: DisplayText(
|
child: DisplayText(
|
||||||
text: '',
|
text: '12:00 AM',
|
||||||
labelTextKey: "pickup.time",
|
labelTextKey: "pickup.to_time",
|
||||||
iconData: Icons.timer,
|
iconData: MaterialCommunityIcons.clock_end),
|
||||||
),
|
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@@ -94,18 +93,25 @@ class _PickupEditorState extends State<PickupEditor> {
|
|||||||
final completeProcessingBtn = fcsButton(
|
final completeProcessingBtn = fcsButton(
|
||||||
context,
|
context,
|
||||||
getLocalString(context, 'pickup.edit.complete.btn'),
|
getLocalString(context, 'pickup.edit.complete.btn'),
|
||||||
callack: _completeProcessing,
|
callack: _confirmComplete,
|
||||||
);
|
);
|
||||||
final descBox = DisplayText(
|
|
||||||
text: _package!.desc ?? "",
|
final staffNameBox = DisplayText(
|
||||||
labelTextKey: 'processing.desc',
|
text: _package != null ? _package!.userName : "",
|
||||||
iconData: MaterialCommunityIcons.message_text_outline,
|
labelTextKey: "pickup.staff.name",
|
||||||
|
iconData: Icons.perm_identity,
|
||||||
);
|
);
|
||||||
final remarkBox = InputText(
|
final remarkBox = InputText(
|
||||||
labelTextKey: 'pickup.remark',
|
labelTextKey: 'pickup.remark',
|
||||||
iconData: Entypo.new_message,
|
iconData: Entypo.new_message,
|
||||||
controller: _remarkCtl);
|
controller: _remarkCtl);
|
||||||
|
|
||||||
|
final statusBox = DisplayText(
|
||||||
|
text: _package != null ? _package!.status : "",
|
||||||
|
labelTextKey: "pickup.status",
|
||||||
|
iconData: Icons.av_timer,
|
||||||
|
);
|
||||||
|
|
||||||
final img = MultiImageFile(
|
final img = MultiImageFile(
|
||||||
enabled: true,
|
enabled: true,
|
||||||
controller: multiImgController,
|
controller: multiImgController,
|
||||||
@@ -144,7 +150,8 @@ class _PickupEditorState extends State<PickupEditor> {
|
|||||||
pickupNumberBox,
|
pickupNumberBox,
|
||||||
pickupDateBox,
|
pickupDateBox,
|
||||||
timeBox,
|
timeBox,
|
||||||
descBox,
|
staffNameBox,
|
||||||
|
statusBox,
|
||||||
remarkBox,
|
remarkBox,
|
||||||
img,
|
img,
|
||||||
_package!.status == 'packed'
|
_package!.status == 'packed'
|
||||||
@@ -236,7 +243,7 @@ class _PickupEditorState extends State<PickupEditor> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
_completeProcessing() async {
|
_completePickup() async {
|
||||||
if (_user!.fcsID == null || _user!.fcsID == "") {
|
if (_user!.fcsID == null || _user!.fcsID == "") {
|
||||||
showMsgDialog(context, "Error", "Expected FCS-ID");
|
showMsgDialog(context, "Error", "Expected FCS-ID");
|
||||||
return;
|
return;
|
||||||
@@ -247,12 +254,12 @@ class _PickupEditorState extends State<PickupEditor> {
|
|||||||
PackageModel packageModel =
|
PackageModel packageModel =
|
||||||
Provider.of<PackageModel>(context, listen: false);
|
Provider.of<PackageModel>(context, listen: false);
|
||||||
try {
|
try {
|
||||||
_package!.fcsID = _user!.fcsID;
|
// _package!.fcsID = _user!.fcsID;
|
||||||
_package!.desc = _descCtl.text;
|
// _package!.desc = _descCtl.text;
|
||||||
_package!.remark = _remarkCtl.text;
|
// _package!.remark = _remarkCtl.text;
|
||||||
_package!.market = selectedMarket!;
|
// _package!.market = selectedMarket!;
|
||||||
await packageModel.updateProcessing(_package!,
|
// await packageModel.updateProcessing(_package!,
|
||||||
multiImgController.getAddedFile, multiImgController.getDeletedUrl);
|
// multiImgController.getAddedFile, multiImgController.getDeletedUrl);
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showMsgDialog(context, "Error", e.toString());
|
showMsgDialog(context, "Error", e.toString());
|
||||||
@@ -263,6 +270,12 @@ class _PickupEditorState extends State<PickupEditor> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_confirmComplete() {
|
||||||
|
showConfirmDialog(context, "pickup.confirm.complete", () {
|
||||||
|
_completePickup();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
isDataChanged() {
|
isDataChanged() {
|
||||||
if (isNew) {
|
if (isNew) {
|
||||||
return _user!.fcsID != "" ||
|
return _user!.fcsID != "" ||
|
||||||
|
|||||||
@@ -54,55 +54,29 @@ class _PickupInfoState extends State<PickupInfo> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final pickupNumberBox = DisplayText(
|
final pickupNumberBox = DisplayText(
|
||||||
text: _package != null ? _package!.trackingID : '',
|
text: _package != null ? '210502-ASDFRE' : '210502-ASDFRE',
|
||||||
labelTextKey: "pickup.pickup_number",
|
labelTextKey: "pickup.pickup_number",
|
||||||
iconData: SimpleLineIcons.direction,
|
iconData: SimpleLineIcons.direction,
|
||||||
);
|
);
|
||||||
var fcsIDBox = DisplayText(
|
|
||||||
text: _package != null ? _package!.fcsID : "",
|
final staffNameBox = DisplayText(
|
||||||
labelTextKey: "pickup.fcs.id",
|
|
||||||
icon: FcsIDIcon(),
|
|
||||||
);
|
|
||||||
final phoneNumberBox = DisplayText(
|
|
||||||
text: _package != null ? _package!.phoneNumber : "",
|
|
||||||
labelTextKey: "pickup.phone",
|
|
||||||
iconData: Icons.phone,
|
|
||||||
);
|
|
||||||
final customerNameBox = DisplayText(
|
|
||||||
text: _package != null ? _package!.userName : "",
|
text: _package != null ? _package!.userName : "",
|
||||||
labelTextKey: "pickup.consignee.name",
|
labelTextKey: "pickup.staff.name",
|
||||||
iconData: Icons.perm_identity,
|
iconData: Icons.perm_identity,
|
||||||
);
|
);
|
||||||
var senderFcsIDBox = DisplayText(
|
|
||||||
text: _package != null ? _package!.senderFCSID : "",
|
|
||||||
labelTextKey: "pickup.fcs.id",
|
|
||||||
icon: FcsIDIcon(),
|
|
||||||
);
|
|
||||||
final senderPhoneNumberBox = DisplayText(
|
|
||||||
text: _package != null ? _package!.senderPhoneNumber : "",
|
|
||||||
labelTextKey: "pickup.phone",
|
|
||||||
iconData: Icons.phone,
|
|
||||||
);
|
|
||||||
final senderNameBox = DisplayText(
|
|
||||||
text: _package != null ? _package!.senderName : "",
|
|
||||||
labelTextKey: "pickup.shipper.name",
|
|
||||||
iconData: Icons.perm_identity,
|
|
||||||
);
|
|
||||||
final marketBox = DisplayText(
|
|
||||||
text: _package != null ? _package!.market : "-",
|
|
||||||
labelTextKey: "pickup.market",
|
|
||||||
iconData: Icons.store,
|
|
||||||
);
|
|
||||||
final descBox = DisplayText(
|
|
||||||
text: _package != null ? _package!.desc : "-",
|
|
||||||
labelTextKey: "pickup.desc",
|
|
||||||
iconData: MaterialCommunityIcons.message_text_outline,
|
|
||||||
);
|
|
||||||
final remarkBox = DisplayText(
|
final remarkBox = DisplayText(
|
||||||
text: _package != null ? _package!.remark : "-",
|
text: _package != null ? _package!.remark : "-",
|
||||||
labelTextKey: "pickup.remark",
|
labelTextKey: "pickup.remark",
|
||||||
iconData: Entypo.new_message,
|
iconData: Entypo.new_message,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
final statusBox = DisplayText(
|
||||||
|
text: _package != null ? _package!.status : "",
|
||||||
|
labelTextKey: "pickup.status",
|
||||||
|
iconData: Icons.av_timer,
|
||||||
|
);
|
||||||
|
|
||||||
final img = MultiImageFile(
|
final img = MultiImageFile(
|
||||||
enabled: false,
|
enabled: false,
|
||||||
controller: multiImgController,
|
controller: multiImgController,
|
||||||
@@ -115,39 +89,26 @@ class _PickupInfoState extends State<PickupInfo> {
|
|||||||
Container(
|
Container(
|
||||||
width: 150,
|
width: 150,
|
||||||
child: DisplayText(
|
child: DisplayText(
|
||||||
text: '',
|
text: '9:00 AM',
|
||||||
labelTextKey: "pickup.time",
|
labelTextKey: "pickup.from_time",
|
||||||
iconData: Icons.timer,
|
iconData: MaterialCommunityIcons.clock_start,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Container(
|
Container(
|
||||||
width: 150,
|
width: 150,
|
||||||
child: DisplayText(
|
child: DisplayText(
|
||||||
text: '',
|
text: '12:00 AM',
|
||||||
labelTextKey: "pickup.time",
|
labelTextKey: "pickup.to_time",
|
||||||
iconData: Icons.timer,
|
iconData: MaterialCommunityIcons.clock_end,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
final consigneeBox = Container(
|
final continueBtn = fcsButton(
|
||||||
child: Column(
|
context,
|
||||||
children: [
|
getLocalString(context, 'pickup.continue.btn'),
|
||||||
fcsIDBox,
|
callack: _gotoEditor,
|
||||||
phoneNumberBox,
|
|
||||||
customerNameBox,
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
final shipperBox = Container(
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
senderFcsIDBox,
|
|
||||||
senderPhoneNumberBox,
|
|
||||||
senderNameBox,
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
final pickupDateBox = DisplayText(
|
final pickupDateBox = DisplayText(
|
||||||
@@ -173,16 +134,6 @@ class _PickupInfoState extends State<PickupInfo> {
|
|||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
color: primaryColor,
|
color: primaryColor,
|
||||||
),
|
),
|
||||||
actions: <Widget>[
|
|
||||||
IconButton(
|
|
||||||
icon: Icon(Icons.delete, color: primaryColor),
|
|
||||||
onPressed: _delete,
|
|
||||||
),
|
|
||||||
IconButton(
|
|
||||||
icon: Icon(Icons.edit, color: primaryColor),
|
|
||||||
onPressed: _gotoEditor,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
body: Card(
|
body: Card(
|
||||||
child: Column(
|
child: Column(
|
||||||
@@ -194,12 +145,11 @@ class _PickupInfoState extends State<PickupInfo> {
|
|||||||
pickupNumberBox,
|
pickupNumberBox,
|
||||||
pickupDateBox,
|
pickupDateBox,
|
||||||
timeBox,
|
timeBox,
|
||||||
descBox,
|
staffNameBox,
|
||||||
remarkBox,
|
remarkBox,
|
||||||
|
statusBox,
|
||||||
_package!.photoUrls.length == 0 ? Container() : img,
|
_package!.photoUrls.length == 0 ? Container() : img,
|
||||||
StatusTree(
|
_package!.status == "packed" ? continueBtn : Container(),
|
||||||
shipmentHistory: _package!.shipmentHistory,
|
|
||||||
currentStatus: _package!.status ?? ""),
|
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -147,11 +147,11 @@ class _MultiImageFileState extends State<MultiImageFile> {
|
|||||||
errorWidget: (context, url, error) =>
|
errorWidget: (context, url, error) =>
|
||||||
Icon(Icons.error),
|
Icon(Icons.error),
|
||||||
)
|
)
|
||||||
: FittedBox(
|
: Image.file(
|
||||||
fit: BoxFit.cover,
|
|
||||||
child: Image.file(
|
|
||||||
fileContainers[index].file!,
|
fileContainers[index].file!,
|
||||||
),
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
fit: BoxFit.cover,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user