Merge branch 'master' of phyothandar/fcs.kl into master
This commit is contained in:
@@ -572,5 +572,18 @@
|
|||||||
"processing.package.create":"New Package",
|
"processing.package.create":"New Package",
|
||||||
"processing.package.update":"Update Package",
|
"processing.package.update":"Update Package",
|
||||||
"processing.package.delete_confirm":"Remove this package?",
|
"processing.package.delete_confirm":"Remove this package?",
|
||||||
"Processing End ================================================================":""
|
"Processing End ================================================================":"",
|
||||||
|
|
||||||
|
"Pickup Start ================================================================":"",
|
||||||
|
"pickup.title":"Pickups",
|
||||||
|
"pickup.info.title":"Pickup",
|
||||||
|
"pickup.edit.title":"Pickup",
|
||||||
|
"pickup.pickup_number":"Pickup Number",
|
||||||
|
"pickup.date":"Pickup Date",
|
||||||
|
"pickup.time":"Pickup Time",
|
||||||
|
"pickup.status":"Status",
|
||||||
|
"pickup.desc":"Description",
|
||||||
|
"pickup.remark":"Remark",
|
||||||
|
"pickup.edit.complete.btn":"Complete pickup",
|
||||||
|
"Pickup End ===================================================================":""
|
||||||
}
|
}
|
||||||
@@ -570,7 +570,18 @@
|
|||||||
"processing.package.create":"အထုပ် အသစ်",
|
"processing.package.create":"အထုပ် အသစ်",
|
||||||
"processing.package.update":"အထုပ် ပြင်ဆင်ခြင်း ",
|
"processing.package.update":"အထုပ် ပြင်ဆင်ခြင်း ",
|
||||||
"processing.package.delete_confirm":"Remove this package?",
|
"processing.package.delete_confirm":"Remove this package?",
|
||||||
"Processing End ================================================================":""
|
"Processing End ================================================================":"",
|
||||||
|
|
||||||
|
"Pickup Start ================================================================":"",
|
||||||
|
"pickup.title":"Pickups",
|
||||||
|
"pickup.info.title":"Pickup",
|
||||||
|
"pickup.edit.title":"Pickup",
|
||||||
|
"pickup.pickup_number":"Pickup Number",
|
||||||
|
"pickup.date":"Pickup Date",
|
||||||
|
"pickup.time":"Pickup Time",
|
||||||
|
"pickup.status":"အခြေအနေ",
|
||||||
|
"pickup.desc":"ဖော်ပြချက်",
|
||||||
|
"pickup.remark":"မှတ်ချက်",
|
||||||
|
"pickup.edit.complete.btn":"Complete pickup",
|
||||||
|
"Pickup End ===================================================================":""
|
||||||
}
|
}
|
||||||
@@ -23,6 +23,7 @@ import 'package:fcs/pages/main/util.dart';
|
|||||||
import 'package:fcs/pages/package/model/package_model.dart';
|
import 'package:fcs/pages/package/model/package_model.dart';
|
||||||
import 'package:fcs/pages/package/package_info.dart';
|
import 'package:fcs/pages/package/package_info.dart';
|
||||||
import 'package:fcs/pages/package/package_list.dart';
|
import 'package:fcs/pages/package/package_list.dart';
|
||||||
|
import 'package:fcs/pages/pickup/pickup_list.dart';
|
||||||
import 'package:fcs/pages/processing/processing_list.dart';
|
import 'package:fcs/pages/processing/processing_list.dart';
|
||||||
import 'package:fcs/pages/rates/shipment_rates.dart';
|
import 'package:fcs/pages/rates/shipment_rates.dart';
|
||||||
import 'package:fcs/pages/receiving/receiving_list.dart';
|
import 'package:fcs/pages/receiving/receiving_list.dart';
|
||||||
@@ -266,6 +267,11 @@ class _HomePageState extends State<HomePage> {
|
|||||||
forCustomer: false,
|
forCustomer: false,
|
||||||
))));
|
))));
|
||||||
|
|
||||||
|
final pickupBtnFcs = TaskButton("pickup.title",
|
||||||
|
icon: SimpleLineIcons.direction,
|
||||||
|
btnCallback: () => Navigator.of(context).push<void>(
|
||||||
|
CupertinoPageRoute(builder: (context) => PickupList())));
|
||||||
|
|
||||||
final fcsShipmentBtn = TaskButton("FCSshipment.title",
|
final fcsShipmentBtn = TaskButton("FCSshipment.title",
|
||||||
icon: Ionicons.ios_airplane,
|
icon: Ionicons.ios_airplane,
|
||||||
btnCallback: () => Navigator.of(context).push(CupertinoPageRoute(
|
btnCallback: () => Navigator.of(context).push(CupertinoPageRoute(
|
||||||
@@ -335,6 +341,7 @@ class _HomePageState extends State<HomePage> {
|
|||||||
if (user.hasAdmin() || user.hasSupport()) widgetsFcs.add(rateBtnFcs);
|
if (user.hasAdmin() || user.hasSupport()) widgetsFcs.add(rateBtnFcs);
|
||||||
if (user.hasPackages()) widgetsFcs.add(packagesBtnFcs);
|
if (user.hasPackages()) widgetsFcs.add(packagesBtnFcs);
|
||||||
if (user.hasShipment()) widgetsFcs.add(shipmentBtnFcs);
|
if (user.hasShipment()) widgetsFcs.add(shipmentBtnFcs);
|
||||||
|
if (user.hasShipment()) widgetsFcs.add(pickupBtnFcs);
|
||||||
if (user.hasInvoices()) widgetsFcs.add(invoicesBtnFcs);
|
if (user.hasInvoices()) widgetsFcs.add(invoicesBtnFcs);
|
||||||
|
|
||||||
if (user.hasFcsShipments()) widgetsFcs.add(fcsShipmentBtn);
|
if (user.hasFcsShipments()) widgetsFcs.add(fcsShipmentBtn);
|
||||||
|
|||||||
30
lib/pages/pickup/model/processing_model.dart
Normal file
30
lib/pages/pickup/model/processing_model.dart
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
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 {}
|
||||||
|
}
|
||||||
286
lib/pages/pickup/pickup_editor.dart
Normal file
286
lib/pages/pickup/pickup_editor.dart
Normal file
@@ -0,0 +1,286 @@
|
|||||||
|
import 'package:fcs/domain/entities/market.dart';
|
||||||
|
import 'package:fcs/domain/entities/package.dart';
|
||||||
|
import 'package:fcs/domain/entities/user.dart';
|
||||||
|
import 'package:fcs/helpers/theme.dart';
|
||||||
|
import 'package:fcs/pages/market/market_editor.dart';
|
||||||
|
import 'package:fcs/pages/market/model/market_model.dart';
|
||||||
|
import 'package:fcs/pages/package/model/package_model.dart';
|
||||||
|
import 'package:fcs/pages/package/tracking_id_page.dart';
|
||||||
|
import 'package:fcs/pages/main/util.dart';
|
||||||
|
import 'package:fcs/pages/user_search/user_serach.dart';
|
||||||
|
import 'package:fcs/pages/widgets/display_text.dart';
|
||||||
|
import 'package:fcs/pages/widgets/fcs_id_icon.dart';
|
||||||
|
import 'package:fcs/pages/widgets/input_text.dart';
|
||||||
|
import 'package:fcs/pages/widgets/local_text.dart';
|
||||||
|
import 'package:fcs/pages/widgets/multi_img_controller.dart';
|
||||||
|
import 'package:fcs/pages/widgets/multi_img_file.dart';
|
||||||
|
import 'package:fcs/pages/widgets/progress.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_vector_icons/flutter_vector_icons.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
class PickupEditor extends StatefulWidget {
|
||||||
|
final Package? package;
|
||||||
|
PickupEditor({this.package});
|
||||||
|
|
||||||
|
@override
|
||||||
|
_PickupEditorState createState() => _PickupEditorState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _PickupEditorState extends State<PickupEditor> {
|
||||||
|
TextEditingController _remarkCtl = new TextEditingController();
|
||||||
|
TextEditingController _descCtl = new TextEditingController();
|
||||||
|
|
||||||
|
Package? _package;
|
||||||
|
User? _user;
|
||||||
|
bool _isLoading = false;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_package = widget.package;
|
||||||
|
selectedMarket = _package!.market ?? "";
|
||||||
|
_descCtl.text = _package!.desc ?? "";
|
||||||
|
_remarkCtl.text = _package!.remark ?? "";
|
||||||
|
multiImgController.setImageUrls = _package!.photoUrls;
|
||||||
|
_user = User(
|
||||||
|
fcsID: _package!.fcsID ?? "",
|
||||||
|
name: _package!.userName ?? "",
|
||||||
|
phoneNumber: _package!.phoneNumber ?? "");
|
||||||
|
}
|
||||||
|
|
||||||
|
final DateFormat dateFormat = DateFormat("d MMM yyyy");
|
||||||
|
|
||||||
|
bool isNew = false;
|
||||||
|
MultiImgController multiImgController = MultiImgController();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
var timeBox = Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
width: 150,
|
||||||
|
child: DisplayText(
|
||||||
|
text: '',
|
||||||
|
labelTextKey: "pickup.time",
|
||||||
|
iconData: Icons.timer,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: 150,
|
||||||
|
child: DisplayText(
|
||||||
|
text: '',
|
||||||
|
labelTextKey: "pickup.time",
|
||||||
|
iconData: Icons.timer,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
final pickupDateBox = DisplayText(
|
||||||
|
text: "12-05-2021",
|
||||||
|
labelTextKey: "pickup.date",
|
||||||
|
iconData: Icons.date_range,
|
||||||
|
);
|
||||||
|
|
||||||
|
final pickupNumberBox = DisplayText(
|
||||||
|
text: "210502-ASDFRE",
|
||||||
|
labelTextKey: "pickup.pickup_number",
|
||||||
|
iconData: SimpleLineIcons.direction,
|
||||||
|
);
|
||||||
|
final completeProcessingBtn = fcsButton(
|
||||||
|
context,
|
||||||
|
getLocalString(context, 'pickup.edit.complete.btn'),
|
||||||
|
callack: _completeProcessing,
|
||||||
|
);
|
||||||
|
final descBox = DisplayText(
|
||||||
|
text: _package!.desc ?? "",
|
||||||
|
labelTextKey: 'processing.desc',
|
||||||
|
iconData: MaterialCommunityIcons.message_text_outline,
|
||||||
|
);
|
||||||
|
final remarkBox = InputText(
|
||||||
|
labelTextKey: 'pickup.remark',
|
||||||
|
iconData: Entypo.new_message,
|
||||||
|
controller: _remarkCtl);
|
||||||
|
|
||||||
|
final img = MultiImageFile(
|
||||||
|
enabled: true,
|
||||||
|
controller: multiImgController,
|
||||||
|
title: "Receipt File",
|
||||||
|
);
|
||||||
|
return LocalProgress(
|
||||||
|
inAsyncCall: _isLoading,
|
||||||
|
child: Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
centerTitle: true,
|
||||||
|
leading: new IconButton(
|
||||||
|
icon: new Icon(CupertinoIcons.back, color: primaryColor, size: 30),
|
||||||
|
onPressed: () {
|
||||||
|
if (isDataChanged()) {
|
||||||
|
showConfirmDialog(context, "back.button_confirm", () {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
|
shadowColor: Colors.transparent,
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
title: LocalText(
|
||||||
|
context,
|
||||||
|
"pickup.edit.title",
|
||||||
|
fontSize: 20,
|
||||||
|
color: primaryColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
body: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: ListView(
|
||||||
|
children: [
|
||||||
|
pickupNumberBox,
|
||||||
|
pickupDateBox,
|
||||||
|
timeBox,
|
||||||
|
descBox,
|
||||||
|
remarkBox,
|
||||||
|
img,
|
||||||
|
_package!.status == 'packed'
|
||||||
|
? completeProcessingBtn
|
||||||
|
: Container(),
|
||||||
|
SizedBox(
|
||||||
|
height: 20,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
String? selectedMarket;
|
||||||
|
Widget marketDropdown() {
|
||||||
|
List<Market> _markets = Provider.of<MarketModel>(context).markets;
|
||||||
|
List<String?> markets = _markets.map((e) => e.name).toList();
|
||||||
|
markets.insert(0, MANAGE_MARKET);
|
||||||
|
if (!markets.contains(selectedMarket)) {
|
||||||
|
markets.insert(0, selectedMarket!);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 5.0, right: 0),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 0, right: 10),
|
||||||
|
child: Icon(Icons.store, color: primaryColor),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(right: 18.0),
|
||||||
|
child: LocalText(
|
||||||
|
context,
|
||||||
|
"processing.market",
|
||||||
|
color: Colors.black54,
|
||||||
|
fontSize: 16,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
DropdownButton<String>(
|
||||||
|
isDense: true,
|
||||||
|
value: selectedMarket,
|
||||||
|
style: TextStyle(color: Colors.black, fontSize: 14),
|
||||||
|
underline: Container(
|
||||||
|
height: 1,
|
||||||
|
color: Colors.grey,
|
||||||
|
),
|
||||||
|
onChanged: (String? newValue) {
|
||||||
|
setState(() {
|
||||||
|
if (newValue == MANAGE_MARKET) {
|
||||||
|
selectedMarket = null;
|
||||||
|
_manageMarket();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
selectedMarket = newValue;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
isExpanded: true,
|
||||||
|
items: markets.map<DropdownMenuItem<String>>((String? value) {
|
||||||
|
return DropdownMenuItem<String>(
|
||||||
|
value: value,
|
||||||
|
child: Text(value ?? "",
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: TextStyle(
|
||||||
|
color: value == MANAGE_MARKET
|
||||||
|
? secondaryColor
|
||||||
|
: primaryColor)),
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
_manageMarket() {
|
||||||
|
Navigator.push<Package>(
|
||||||
|
context,
|
||||||
|
CupertinoPageRoute(builder: (context) => MarketEditor()),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
_completeProcessing() async {
|
||||||
|
if (_user!.fcsID == null || _user!.fcsID == "") {
|
||||||
|
showMsgDialog(context, "Error", "Expected FCS-ID");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setState(() {
|
||||||
|
_isLoading = true;
|
||||||
|
});
|
||||||
|
PackageModel packageModel =
|
||||||
|
Provider.of<PackageModel>(context, listen: false);
|
||||||
|
try {
|
||||||
|
_package!.fcsID = _user!.fcsID;
|
||||||
|
_package!.desc = _descCtl.text;
|
||||||
|
_package!.remark = _remarkCtl.text;
|
||||||
|
_package!.market = selectedMarket!;
|
||||||
|
await packageModel.updateProcessing(_package!,
|
||||||
|
multiImgController.getAddedFile, multiImgController.getDeletedUrl);
|
||||||
|
Navigator.pop(context);
|
||||||
|
} catch (e) {
|
||||||
|
showMsgDialog(context, "Error", e.toString());
|
||||||
|
} finally {
|
||||||
|
setState(() {
|
||||||
|
_isLoading = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
isDataChanged() {
|
||||||
|
if (isNew) {
|
||||||
|
return _user!.fcsID != "" ||
|
||||||
|
selectedMarket != null ||
|
||||||
|
_descCtl.text != "" ||
|
||||||
|
_remarkCtl.text != "" ||
|
||||||
|
multiImgController.getAddedFile.isNotEmpty;
|
||||||
|
} else {
|
||||||
|
var _package = Package(
|
||||||
|
trackingID: widget.package!.trackingID,
|
||||||
|
fcsID: _user!.fcsID,
|
||||||
|
market: selectedMarket!,
|
||||||
|
desc: _descCtl.text,
|
||||||
|
remark: _remarkCtl.text,
|
||||||
|
photoUrls: widget.package!.photoUrls);
|
||||||
|
return widget.package!.isChangedForEditProcessing(_package) ||
|
||||||
|
multiImgController.getAddedFile.isNotEmpty ||
|
||||||
|
multiImgController.getDeletedUrl.isNotEmpty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
253
lib/pages/pickup/pickup_info.dart
Normal file
253
lib/pages/pickup/pickup_info.dart
Normal file
@@ -0,0 +1,253 @@
|
|||||||
|
import 'package:fcs/domain/entities/package.dart';
|
||||||
|
import 'package:fcs/helpers/theme.dart';
|
||||||
|
import 'package:fcs/pages/main/util.dart';
|
||||||
|
import 'package:fcs/pages/package/model/package_model.dart';
|
||||||
|
import 'package:fcs/pages/pickup/pickup_editor.dart';
|
||||||
|
import 'package:fcs/pages/widgets/display_text.dart';
|
||||||
|
import 'package:fcs/pages/widgets/fcs_id_icon.dart';
|
||||||
|
import 'package:fcs/pages/widgets/local_text.dart';
|
||||||
|
import 'package:fcs/pages/widgets/multi_img_controller.dart';
|
||||||
|
import 'package:fcs/pages/widgets/multi_img_file.dart';
|
||||||
|
import 'package:fcs/pages/widgets/progress.dart';
|
||||||
|
import 'package:fcs/pages/widgets/status_tree.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_vector_icons/flutter_vector_icons.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
final DateFormat dateFormat = DateFormat("d MMM yyyy");
|
||||||
|
|
||||||
|
class PickupInfo extends StatefulWidget {
|
||||||
|
final Package? package;
|
||||||
|
PickupInfo({this.package});
|
||||||
|
|
||||||
|
@override
|
||||||
|
_PickupInfoState createState() => _PickupInfoState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _PickupInfoState extends State<PickupInfo> {
|
||||||
|
var dateFormatter = new DateFormat('dd MMM yyyy');
|
||||||
|
Package? _package;
|
||||||
|
bool _isLoading = false;
|
||||||
|
MultiImgController multiImgController = MultiImgController();
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
initPackage(widget.package!);
|
||||||
|
}
|
||||||
|
|
||||||
|
initPackage(Package? package) {
|
||||||
|
if (package == null) return;
|
||||||
|
setState(() {
|
||||||
|
_package = package;
|
||||||
|
multiImgController.setImageUrls = package.photoUrls;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final pickupNumberBox = DisplayText(
|
||||||
|
text: _package != null ? _package!.trackingID : '',
|
||||||
|
labelTextKey: "pickup.pickup_number",
|
||||||
|
iconData: SimpleLineIcons.direction,
|
||||||
|
);
|
||||||
|
var fcsIDBox = DisplayText(
|
||||||
|
text: _package != null ? _package!.fcsID : "",
|
||||||
|
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 : "",
|
||||||
|
labelTextKey: "pickup.consignee.name",
|
||||||
|
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(
|
||||||
|
text: _package != null ? _package!.remark : "-",
|
||||||
|
labelTextKey: "pickup.remark",
|
||||||
|
iconData: Entypo.new_message,
|
||||||
|
);
|
||||||
|
final img = MultiImageFile(
|
||||||
|
enabled: false,
|
||||||
|
controller: multiImgController,
|
||||||
|
title: "Receipt File",
|
||||||
|
);
|
||||||
|
|
||||||
|
var timeBox = Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
width: 150,
|
||||||
|
child: DisplayText(
|
||||||
|
text: '',
|
||||||
|
labelTextKey: "pickup.time",
|
||||||
|
iconData: Icons.timer,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: 150,
|
||||||
|
child: DisplayText(
|
||||||
|
text: '',
|
||||||
|
labelTextKey: "pickup.time",
|
||||||
|
iconData: Icons.timer,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
final consigneeBox = Container(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
fcsIDBox,
|
||||||
|
phoneNumberBox,
|
||||||
|
customerNameBox,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
final shipperBox = Container(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
senderFcsIDBox,
|
||||||
|
senderPhoneNumberBox,
|
||||||
|
senderNameBox,
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
final pickupDateBox = DisplayText(
|
||||||
|
text: "12-05-2021",
|
||||||
|
labelTextKey: "pickup.date",
|
||||||
|
iconData: Icons.date_range,
|
||||||
|
);
|
||||||
|
|
||||||
|
return LocalProgress(
|
||||||
|
inAsyncCall: _isLoading,
|
||||||
|
child: Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
centerTitle: true,
|
||||||
|
leading: new IconButton(
|
||||||
|
icon: new Icon(CupertinoIcons.back, color: primaryColor, size: 30),
|
||||||
|
onPressed: () => Navigator.of(context).pop(),
|
||||||
|
),
|
||||||
|
shadowColor: Colors.transparent,
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
title: LocalText(
|
||||||
|
context,
|
||||||
|
"pickup.info.title",
|
||||||
|
fontSize: 20,
|
||||||
|
color: primaryColor,
|
||||||
|
),
|
||||||
|
actions: <Widget>[
|
||||||
|
IconButton(
|
||||||
|
icon: Icon(Icons.delete, color: primaryColor),
|
||||||
|
onPressed: _delete,
|
||||||
|
),
|
||||||
|
IconButton(
|
||||||
|
icon: Icon(Icons.edit, color: primaryColor),
|
||||||
|
onPressed: _gotoEditor,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
body: Card(
|
||||||
|
child: Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(10.0),
|
||||||
|
child: ListView(children: <Widget>[
|
||||||
|
pickupNumberBox,
|
||||||
|
pickupDateBox,
|
||||||
|
timeBox,
|
||||||
|
descBox,
|
||||||
|
remarkBox,
|
||||||
|
_package!.photoUrls.length == 0 ? Container() : img,
|
||||||
|
StatusTree(
|
||||||
|
shipmentHistory: _package!.shipmentHistory,
|
||||||
|
currentStatus: _package!.status ?? ""),
|
||||||
|
SizedBox(
|
||||||
|
height: 20,
|
||||||
|
)
|
||||||
|
]),
|
||||||
|
)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
_delete() {
|
||||||
|
showConfirmDialog(context, "pickup.delete.confirm", _deletePackage);
|
||||||
|
}
|
||||||
|
|
||||||
|
_deletePackage() async {
|
||||||
|
setState(() {
|
||||||
|
_isLoading = true;
|
||||||
|
});
|
||||||
|
PackageModel packageModel =
|
||||||
|
Provider.of<PackageModel>(context, listen: false);
|
||||||
|
try {
|
||||||
|
await packageModel.deleteProcessing(_package!);
|
||||||
|
Navigator.pop<bool>(context, true);
|
||||||
|
} catch (e) {
|
||||||
|
showMsgDialog(context, "Error", e.toString());
|
||||||
|
} finally {
|
||||||
|
setState(() {
|
||||||
|
_isLoading = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_gotoEditor() async {
|
||||||
|
bool? deleted = await Navigator.push<bool>(
|
||||||
|
context,
|
||||||
|
CupertinoPageRoute(
|
||||||
|
builder: (context) => PickupEditor(
|
||||||
|
package: widget.package,
|
||||||
|
)));
|
||||||
|
if (deleted ?? false) {
|
||||||
|
Navigator.pop(context);
|
||||||
|
} else {
|
||||||
|
PackageModel packageModel =
|
||||||
|
Provider.of<PackageModel>(context, listen: false);
|
||||||
|
Package? p = await packageModel.getPackage(_package!.id!);
|
||||||
|
initPackage(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
86
lib/pages/pickup/pickup_list.dart
Normal file
86
lib/pages/pickup/pickup_list.dart
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
import 'package:fcs/domain/entities/package.dart';
|
||||||
|
import 'package:fcs/helpers/theme.dart';
|
||||||
|
import 'package:fcs/pages/package/model/package_model.dart';
|
||||||
|
import 'package:fcs/pages/package_search/package_serach.dart';
|
||||||
|
import 'package:fcs/pages/pickup/pickup_editor.dart';
|
||||||
|
import 'package:fcs/pages/pickup/pickup_info.dart';
|
||||||
|
import 'package:fcs/pages/pickup/pickup_list_row.dart';
|
||||||
|
import 'package:fcs/pages/widgets/local_text.dart';
|
||||||
|
import 'package:fcs/pages/widgets/progress.dart';
|
||||||
|
import 'package:fcs/pagination/paginator_listview.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
class PickupList extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
_PickupListState createState() => _PickupListState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _PickupListState extends State<PickupList> {
|
||||||
|
bool _isLoading = false;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
var packageModel = Provider.of<PackageModel>(context);
|
||||||
|
var packages = packageModel.activePackages;
|
||||||
|
|
||||||
|
return LocalProgress(
|
||||||
|
inAsyncCall: _isLoading,
|
||||||
|
child: Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
centerTitle: true,
|
||||||
|
leading: new IconButton(
|
||||||
|
icon: new Icon(CupertinoIcons.back),
|
||||||
|
onPressed: () => Navigator.of(context).pop(),
|
||||||
|
),
|
||||||
|
backgroundColor: primaryColor,
|
||||||
|
title: LocalText(
|
||||||
|
context,
|
||||||
|
"pickup.title",
|
||||||
|
fontSize: 20,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
actions: <Widget>[
|
||||||
|
IconButton(
|
||||||
|
icon: Icon(
|
||||||
|
Icons.search,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
iconSize: 30,
|
||||||
|
onPressed: () => searchPackage(context,
|
||||||
|
callbackPackageSelect: _searchCallback),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
body: PaginatorListView<Package>(
|
||||||
|
paginatorListener: packages!,
|
||||||
|
rowBuilder: (p) => PickupListRow(
|
||||||
|
key: ValueKey(p.id),
|
||||||
|
package: p,
|
||||||
|
),
|
||||||
|
color: primaryColor,
|
||||||
|
)),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
_searchCallback(Package package) async {
|
||||||
|
var packageModel = Provider.of<PackageModel>(context, listen: false);
|
||||||
|
Package? _package = await packageModel.getPackage(package.id!);
|
||||||
|
if (_package == null) return;
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
CupertinoPageRoute(builder: (context) => PickupInfo(package: _package)),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
101
lib/pages/pickup/pickup_list_row.dart
Normal file
101
lib/pages/pickup/pickup_list_row.dart
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
import 'package:fcs/domain/entities/package.dart';
|
||||||
|
import 'package:fcs/helpers/theme.dart';
|
||||||
|
import 'package:fcs/pages/main/util.dart';
|
||||||
|
import 'package:fcs/pages/pickup/pickup_info.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_vector_icons/flutter_vector_icons.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
|
typedef CallbackPackageSelect(Package package);
|
||||||
|
|
||||||
|
class PickupListRow extends StatelessWidget {
|
||||||
|
final Package? package;
|
||||||
|
final CallbackPackageSelect? callbackPackageSelect;
|
||||||
|
final double dotSize = 15.0;
|
||||||
|
final DateFormat dateFormat = new DateFormat("dd MMM yyyy");
|
||||||
|
|
||||||
|
PickupListRow({Key? key, this.package, this.callbackPackageSelect})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return InkWell(
|
||||||
|
onTap: () {
|
||||||
|
if (callbackPackageSelect != null) {
|
||||||
|
callbackPackageSelect!(package!);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
CupertinoPageRoute(
|
||||||
|
builder: (context) => PickupInfo(package: package)),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
padding: EdgeInsets.only(left: 15, right: 15),
|
||||||
|
child: Row(
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
child: new Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 16.0),
|
||||||
|
child: new Row(
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
padding: EdgeInsets.only(left: 5, right: 10),
|
||||||
|
child: Icon(
|
||||||
|
SimpleLineIcons.direction,
|
||||||
|
color: primaryColor,
|
||||||
|
size: 30,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
new Expanded(
|
||||||
|
child: new Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 8.0),
|
||||||
|
child: new Text(
|
||||||
|
package!.id == null ? '' : package!.trackingID!,
|
||||||
|
style: new TextStyle(
|
||||||
|
fontSize: 15.0, color: Colors.black),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 8.0),
|
||||||
|
child: new Text(
|
||||||
|
package!.market == null ? '' : package!.market!,
|
||||||
|
style: new TextStyle(
|
||||||
|
fontSize: 15.0, color: Colors.black),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(3.0),
|
||||||
|
child: getStatus(package!.status ?? ""),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(0),
|
||||||
|
child: new Text(
|
||||||
|
package!.currentStatusDate != null
|
||||||
|
? dateFormat.format(package!.currentStatusDate!)
|
||||||
|
: '',
|
||||||
|
style: new TextStyle(fontSize: 15.0, color: Colors.grey),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,12 +10,13 @@ import 'package:flutter/cupertino.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_icons_null_safety/flutter_icons_null_safety.dart';
|
import 'package:flutter_icons_null_safety/flutter_icons_null_safety.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
import 'package:zefyrka/zefyrka.dart';
|
||||||
// import 'package:zefyr/zefyr.dart';
|
// import 'package:zefyr/zefyr.dart';
|
||||||
|
|
||||||
typedef void ProfileCallback();
|
typedef void ProfileCallback();
|
||||||
|
|
||||||
class TermEdit extends StatefulWidget {
|
class TermEdit extends StatefulWidget {
|
||||||
final Term term;
|
final Term? term;
|
||||||
TermEdit({required this.term});
|
TermEdit({required this.term});
|
||||||
@override
|
@override
|
||||||
_TermEditState createState() => _TermEditState();
|
_TermEditState createState() => _TermEditState();
|
||||||
@@ -23,12 +24,12 @@ class TermEdit extends StatefulWidget {
|
|||||||
|
|
||||||
class _TermEditState extends State<TermEdit> {
|
class _TermEditState extends State<TermEdit> {
|
||||||
/// Allows to control the editor and the document.
|
/// Allows to control the editor and the document.
|
||||||
// ZefyrController _controllerEng;
|
late ZefyrController _controllerEng;
|
||||||
// ZefyrController _controllerMm;
|
late ZefyrController _controllerMm;
|
||||||
|
|
||||||
/// Zefyr editor like any other input field requires a focus node.
|
/// Zefyr editor like any other input field requires a focus node.
|
||||||
// FocusNode _focusNodeEng;
|
late FocusNode _focusNodeEng;
|
||||||
// FocusNode _focusNodeMm;
|
late FocusNode _focusNodeMm;
|
||||||
bool _isLoading = false;
|
bool _isLoading = false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -37,23 +38,23 @@ class _TermEditState extends State<TermEdit> {
|
|||||||
_isLoading = false;
|
_isLoading = false;
|
||||||
|
|
||||||
// Here we must load the document and pass it to Zefyr controller.
|
// Here we must load the document and pass it to Zefyr controller.
|
||||||
// _controllerEng = ZefyrController(_loadDocument(widget.term.termEng));
|
_controllerEng = ZefyrController(_loadDocument(widget.term!.termEng ?? ""));
|
||||||
// _controllerMm = ZefyrController(_loadDocument(widget.term.termMm));
|
_controllerMm = ZefyrController(_loadDocument(widget.term!.termMm ?? ""));
|
||||||
// _focusNodeEng = FocusNode();
|
_focusNodeEng = FocusNode();
|
||||||
// _focusNodeMm = FocusNode();
|
_focusNodeMm = FocusNode();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Loads the document to be edited in Zefyr.
|
/// Loads the document to be edited in Zefyr.
|
||||||
// NotusDocument _loadDocument(String data) {
|
NotusDocument _loadDocument(String data) {
|
||||||
// NotusDocument doc;
|
late NotusDocument doc;
|
||||||
// try {
|
try {
|
||||||
// doc = NotusDocument.fromJson(jsonDecode(data));
|
doc = NotusDocument.fromJson(jsonDecode(data));
|
||||||
// } catch (e) {}
|
} catch (e) {}
|
||||||
// if (doc == null) {
|
if (doc == null) {
|
||||||
// doc = NotusDocument();
|
doc = NotusDocument();
|
||||||
// }
|
}
|
||||||
// return doc;
|
return doc;
|
||||||
// }
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -116,8 +117,8 @@ class _TermEditState extends State<TermEdit> {
|
|||||||
height: MediaQuery.of(context).size.height - 200,
|
height: MediaQuery.of(context).size.height - 200,
|
||||||
child: TabBarView(
|
child: TabBarView(
|
||||||
children: [
|
children: [
|
||||||
// textEditor(_controllerEng, _focusNodeEng),
|
textEditor(_controllerEng, _focusNodeEng),
|
||||||
// textEditor(_controllerMm, _focusNodeMm),
|
textEditor(_controllerMm, _focusNodeMm),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -129,35 +130,24 @@ class _TermEditState extends State<TermEdit> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Widget textEditor(ZefyrController controller, FocusNode focusNode) {
|
Widget textEditor(ZefyrController controller, FocusNode focusNode) {
|
||||||
// return ListView(
|
return ListView(
|
||||||
// children: [
|
children: [
|
||||||
// Container(
|
Container(
|
||||||
// height: MediaQuery.of(context).size.height - 200,
|
height: MediaQuery.of(context).size.height - 200,
|
||||||
// child: ZefyrScaffold(
|
child: ZefyrEditor(
|
||||||
// child: ZefyrTheme(
|
autofocus: false,
|
||||||
// data: ZefyrThemeData().copyWith(
|
padding: EdgeInsets.all(16),
|
||||||
// defaultLineTheme: LineTheme(
|
controller: controller,
|
||||||
// padding: EdgeInsets.all(0),
|
focusNode: focusNode,
|
||||||
// textStyle: TextStyle(fontFamily: "Myanmar3"),
|
),
|
||||||
// ),
|
),
|
||||||
// ),
|
SizedBox(
|
||||||
// child: ZefyrEditor(
|
height: 10,
|
||||||
// autofocus: false,
|
)
|
||||||
// padding: EdgeInsets.all(16),
|
],
|
||||||
// controller: controller,
|
);
|
||||||
// focusNode: focusNode,
|
}
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// // savebtn,
|
|
||||||
// SizedBox(
|
|
||||||
// height: 10,
|
|
||||||
// )
|
|
||||||
// ],
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
|
|
||||||
_unfocus() {
|
_unfocus() {
|
||||||
FocusScope.of(context).unfocus();
|
FocusScope.of(context).unfocus();
|
||||||
@@ -168,11 +158,11 @@ class _TermEditState extends State<TermEdit> {
|
|||||||
_isLoading = true;
|
_isLoading = true;
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
// final contentsEng = jsonEncode(_controllerEng.document);
|
final contentsEng = jsonEncode(_controllerEng.document);
|
||||||
// final contentsMm = jsonEncode(_controllerMm.document);
|
final contentsMm = jsonEncode(_controllerMm.document);
|
||||||
// print('contents => $contentsEng');
|
// print('contents => $contentsEng');
|
||||||
// TermModel termModel = Provider.of<TermModel>(context, listen: false);
|
TermModel termModel = Provider.of<TermModel>(context, listen: false);
|
||||||
// await termModel.saveTerm(Term(termEng: contentsEng, termMm: contentsMm));
|
await termModel.saveTerm(Term(termEng: contentsEng, termMm: contentsMm));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showMsgDialog(context, "Error", e.toString());
|
showMsgDialog(context, "Error", e.toString());
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import 'package:fcs/pages/widgets/local_text.dart';
|
|||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
// import 'package:zefyr/zefyr.dart';
|
import 'package:zefyrka/zefyrka.dart';
|
||||||
|
|
||||||
typedef void ProfileCallback();
|
typedef void ProfileCallback();
|
||||||
|
|
||||||
@@ -23,29 +23,29 @@ class TermPage extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _TermPageState extends State<TermPage> {
|
class _TermPageState extends State<TermPage> {
|
||||||
// ZefyrController _controller;
|
late ZefyrController _controller;
|
||||||
// FocusNode _focusNode;
|
late FocusNode _focusNode;
|
||||||
// NotusDocument document = new NotusDocument();
|
late NotusDocument document = new NotusDocument();
|
||||||
bool isLoading = false;
|
bool isLoading = false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
// _focusNode = FocusNode();
|
_focusNode = FocusNode();
|
||||||
}
|
}
|
||||||
|
|
||||||
// NotusDocument _loadDocument(Setting setting) {
|
NotusDocument _loadDocument(Setting? setting) {
|
||||||
// bool isEng = Provider.of<LanguageModel>(context).isEng;
|
bool isEng = Provider.of<LanguageModel>(context).isEng;
|
||||||
// String term = isEng ? setting.termsEng : setting.termsMm;
|
String? term = isEng ? (setting!.termsEng ?? "") : (setting!.termsMm ?? "");
|
||||||
// NotusDocument doc;
|
late NotusDocument doc;
|
||||||
// try {
|
try {
|
||||||
// doc = NotusDocument.fromJson(jsonDecode(term));
|
doc = NotusDocument.fromJson(jsonDecode(term));
|
||||||
// } catch (e) {}
|
} catch (e) {}
|
||||||
// if (doc == null) {
|
if (doc == null) {
|
||||||
// doc = NotusDocument();
|
doc = NotusDocument();
|
||||||
// }
|
}
|
||||||
// return doc;
|
return doc;
|
||||||
// }
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -79,31 +79,17 @@ class _TermPageState extends State<TermPage> {
|
|||||||
TermEdit(term: Term.fromSetting(setting!)),
|
TermEdit(term: Term.fromSetting(setting!)),
|
||||||
)),
|
)),
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
CupertinoIcons.pen,
|
Icons.edit,
|
||||||
color: primaryColor,
|
color: primaryColor,
|
||||||
))
|
))
|
||||||
]
|
]
|
||||||
: [],
|
: [],
|
||||||
),
|
),
|
||||||
// body: ZefyrTheme(
|
body: ZefyrEditor(
|
||||||
// data: ZefyrThemeData().copyWith(
|
padding: EdgeInsets.all(16),
|
||||||
// defaultLineTheme: LineTheme(
|
controller: ZefyrController(_loadDocument(setting)),
|
||||||
// padding: EdgeInsets.all(0),
|
focusNode: _focusNode,
|
||||||
// textStyle: TextStyle(fontFamily: "Myanmar3"),
|
),
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// // data: ZefyrThemeData().copyWith(
|
|
||||||
// // defaultLineTheme: LineTheme(
|
|
||||||
// // textStyle: TextStyle(color: Colors.black),
|
|
||||||
// // padding: EdgeInsets.all(0))),
|
|
||||||
// child: ZefyrScaffold(
|
|
||||||
// child: ZefyrEditor(
|
|
||||||
// mode: ZefyrMode.view,
|
|
||||||
// padding: EdgeInsets.all(16),
|
|
||||||
// controller: ZefyrController(_loadDocument(setting)),
|
|
||||||
// focusNode: _focusNode,
|
|
||||||
// ),
|
|
||||||
// )),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ dependencies:
|
|||||||
font_awesome_flutter: ^9.1.0
|
font_awesome_flutter: ^9.1.0
|
||||||
photo_view: ^0.12.0
|
photo_view: ^0.12.0
|
||||||
uuid: ^3.0.4
|
uuid: ^3.0.4
|
||||||
# zefyr:
|
zefyrka: ^1.0.10
|
||||||
path_provider: ^2.0.2
|
path_provider: ^2.0.2
|
||||||
camera: ^0.9.0
|
camera: ^0.9.0
|
||||||
url_launcher: ^6.0.9
|
url_launcher: ^6.0.9
|
||||||
|
|||||||
Reference in New Issue
Block a user