This commit is contained in:
unknown
2023-12-09 17:52:53 +03:30
parent 6464557956
commit ede10a2efe
36 changed files with 2252 additions and 1821 deletions
@@ -1,7 +1,14 @@
// ignore_for_file: unused_local_variable
import 'dart:isolate';
import 'dart:ui';
import 'package:cssd/config/colors.dart';
import 'package:cssd/providers/packages.dart';
import 'package:cssd/widgets/PackageScreens/Filter/package_filter_object.dart';
import 'package:cssd/widgets/PackageScreens/Result/package_data_box.dart';
import 'package:flutter_downloader/flutter_downloader.dart';
import 'package:permission_handler/permission_handler.dart';
import '../../config/routes.dart';
import '../../providers/connectivity.dart';
@@ -25,11 +32,30 @@ class _PackageResultScreenState extends State<PackageResultScreen> {
bool _isInit = true;
ScrollController? sc;
TextEditingController searchCTRL = new TextEditingController();
ReceivePort _port = ReceivePort();
@override
void initState() {
sc = new ScrollController();
super.initState();
IsolateNameServer.registerPortWithName(_port.sendPort, 'downloader_send_port');
_port.listen((dynamic data) {
String id = data[0];
DownloadTaskStatus status = data[1];
int progress = data[2];
if (status == DownloadTaskStatus.complete) {
print('Downloaded');
}
setState((){ });
});
FlutterDownloader.registerCallback(downloadCallback);
}
@pragma('vm:entry-point')
static void downloadCallback(String id, int status, int progress) {
final SendPort? send = IsolateNameServer.lookupPortByName('downloader_send_port');
send!.send([id, status, progress]);
}
@override
@@ -58,6 +84,12 @@ class _PackageResultScreenState extends State<PackageResultScreen> {
super.didChangeDependencies();
}
@override
void dispose() {
IsolateNameServer.removePortNameMapping('downloader_send_port');
super.dispose();
}
@override
Widget build(BuildContext context) {
final _media = MediaQuery.of(context);
@@ -225,6 +257,30 @@ class PackageResultFloatingButton extends StatelessWidget {
return Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
InkWell(
customBorder: CircleBorder(),
onTap: () async {
var status = await Permission.storage.request();
if (status.isGranted) {
Provider.of<PackageProvider>(context, listen: false).exportPackages();
}
},
child: Container(
padding: EdgeInsets.all(_deviceBlockSize),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.black,
),
child: Icon(
Icons.import_export,
size: 10 * _deviceBlockSize,
color: Colors.white,
),
),
),
SizedBox(
width: 2 * _deviceBlockSize,
),
InkWell(
customBorder: CircleBorder(),
onTap: () {
+235 -235
View File
@@ -1,241 +1,241 @@
import 'package:cssd/models/package_model.dart';
import 'package:cssd/providers/packages.dart';
import 'package:cssd/widgets/PackageScreens/Add/package_update_button.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import '../../config/routes.dart';
import '../../providers/connectivity.dart';
import '../../widgets/Global/internet_error.dart';
// import 'package:cssd/models/package_model.dart';
// import 'package:cssd/providers/packages.dart';
// import 'package:cssd/widgets/PackageScreens/Add/package_update_button.dart';
// import 'package:flutter/material.dart';
// import 'package:font_awesome_flutter/font_awesome_flutter.dart';
// import 'package:provider/provider.dart';
// import '../../config/routes.dart';
// import '../../providers/connectivity.dart';
// import '../../widgets/Global/internet_error.dart';
class PackageUpdateScreen extends StatefulWidget {
@override
_PackageUpdateScreenState createState() => _PackageUpdateScreenState();
}
// class PackageUpdateScreen extends StatefulWidget {
// @override
// _PackageUpdateScreenState createState() => _PackageUpdateScreenState();
// }
class _PackageUpdateScreenState extends State<PackageUpdateScreen> {
final _udiFocusNode = FocusNode();
final _descriptionFocusNode = FocusNode();
TextEditingController nameCTRL = new TextEditingController();
// TextEditingController udiCTRL = new TextEditingController();
TextEditingController descriptionCTRL = new TextEditingController();
TextEditingController itemCTRL = new TextEditingController();
// class _PackageUpdateScreenState extends State<PackageUpdateScreen> {
// final _udiFocusNode = FocusNode();
// final _descriptionFocusNode = FocusNode();
// TextEditingController nameCTRL = new TextEditingController();
// // TextEditingController udiCTRL = new TextEditingController();
// TextEditingController descriptionCTRL = new TextEditingController();
// TextEditingController itemCTRL = new TextEditingController();
final _form = GlobalKey<FormState>();
// final _form = GlobalKey<FormState>();
bool isEmpty = false;
bool isInit = true;
PackageDetailObject? datas;
// bool isEmpty = false;
// bool isInit = true;
// PackageDetailObject? datas;
@override
void didChangeDependencies() async {
if (isInit) {
var _id = ModalRoute.of(context)!.settings.arguments;
await Provider.of<PackageProvider>(context, listen: false)
.showPackageResult(_id.toString())
.then(
(result) {
setState(
() {
datas = result;
nameCTRL.text = datas!.name;
// udiCTRL.text = datas!.udi;
descriptionCTRL.text = datas!.description;
for (String item in datas!.items) {
itemCTRL.text = item;
}
},
);
},
);
await Provider.of<PackageProvider>(context, listen: false)
.getItemFilters()
.then(
(result) {
setState(
() {
isInit = false;
},
);
},
);
}
super.didChangeDependencies();
}
// @override
// void didChangeDependencies() async {
// if (isInit) {
// var _id = ModalRoute.of(context)!.settings.arguments;
// await Provider.of<PackageProvider>(context, listen: false)
// .showPackageResult(_id.toString())
// .then(
// (result) {
// setState(
// () {
// datas = result;
// nameCTRL.text = datas!.name;
// // udiCTRL.text = datas!.udi;
// descriptionCTRL.text = datas!.description;
// for (String item in datas!.items) {
// itemCTRL.text = item;
// }
// },
// );
// },
// );
// await Provider.of<PackageProvider>(context, listen: false)
// .getItemFilters()
// .then(
// (result) {
// setState(
// () {
// isInit = false;
// },
// );
// },
// );
// }
// super.didChangeDependencies();
// }
@override
Widget build(BuildContext context) {
final _media = MediaQuery.of(context);
final double _devicewidth = _media.size.width;
final double _deviceBlockSize = _devicewidth / 100;
return WillPopScope(
onWillPop: () async {
Navigator.pushReplacementNamed(
context,
Routes.packageResultScreen,
);
return true;
},
child: SafeArea(
child: Scaffold(
appBar: AppBar(
titleSpacing: -10,
backgroundColor: Colors.black,
title: Text('Packages', style: TextStyle(color: Colors.white,),),
leading: IconButton(
icon: Icon(
Icons.keyboard_arrow_left,
color: Colors.white,
size: 35,
),
onPressed: () => Navigator.of(context)
.pushReplacementNamed(Routes.packageResultScreen),
),
),
body: Consumer<ConnectivityProvider>(
builder: (ct, connection, _) {
return connection.conStatus != 'offline'
? isInit
? Center(
child: CircularProgressIndicator(color: Colors.black),
)
: Form(
key: _form,
child: Padding(
padding: EdgeInsets.all(20),
child: ListView(
children: <Widget>[
Text(
'Update a Package',
style: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 6 * _deviceBlockSize,
letterSpacing: 3,
),
),
SizedBox(
height: 20,
),
TextFormField(
validator: (val) {
if (val!.isEmpty) {
return 'Name required!';
}
return null;
},
controller: nameCTRL,
decoration: InputDecoration(
icon: Icon(FontAwesomeIcons.alignLeft,
size: 7 * _deviceBlockSize),
isDense: true,
labelText: 'Package Name',
contentPadding: EdgeInsets.symmetric(
vertical: 2, horizontal: 3),
labelStyle: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 4 * _deviceBlockSize,
),
),
style: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 5 * _deviceBlockSize,
),
keyboardType: TextInputType.text,
textInputAction: TextInputAction.next,
onFieldSubmitted: (_) {
FocusScope.of(context)
.requestFocus(_udiFocusNode);
},
),
SizedBox(
height: 20,
),
// TextFormField(
// validator: (val) {
// if (val!.isEmpty) {
// return 'UDI required!';
// }
// return null;
// },
// controller: udiCTRL,
// decoration: InputDecoration(
// icon: Icon(
// FontAwesomeIcons.alignLeft,
// size: 7 * _deviceBlockSize,
// ),
// labelStyle: TextStyle(
// fontWeight: FontWeight.w100,
// fontSize: 4 * _deviceBlockSize,
// ),
// isDense: true,
// labelText: 'UDI',
// contentPadding: EdgeInsets.symmetric(
// vertical: 2, horizontal: 3),
// ),
// style: TextStyle(
// fontWeight: FontWeight.w700,
// fontSize: 5 * _deviceBlockSize,
// ),
// focusNode: _udiFocusNode,
// keyboardType: TextInputType.text,
// textInputAction: TextInputAction.done,
// onFieldSubmitted: (_) {
// FocusScope.of(context)
// .requestFocus(_descriptionFocusNode);
// },
// ),
// SizedBox(
// height: 20,
// ),
TextFormField(
controller: descriptionCTRL,
decoration: InputDecoration(
icon: Icon(
FontAwesomeIcons.alignLeft,
size: 7 * _deviceBlockSize,
),
labelStyle: TextStyle(
fontWeight: FontWeight.w100,
fontSize: 4 * _deviceBlockSize,
),
isDense: true,
labelText: 'Description',
contentPadding: EdgeInsets.symmetric(
vertical: 2, horizontal: 3),
),
style: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 5 * _deviceBlockSize,
),
keyboardType: TextInputType.multiline,
focusNode: _descriptionFocusNode,
minLines: 1,
maxLines: 5,
),
SizedBox(
height: 70,
),
PackageUpdateButton(
form: _form,
id: datas!.id,
nameCTRL: nameCTRL,
// udiCTRL: udiCTRL,
itemCTRL: itemCTRL,
deviceBlockSize: _deviceBlockSize,
descriptionCTRL: descriptionCTRL,
),
SizedBox(
height: 100,
),
],
),
),
)
: ConnectionErrorBox();
},
),
),
),
);
}
}
// @override
// Widget build(BuildContext context) {
// final _media = MediaQuery.of(context);
// final double _devicewidth = _media.size.width;
// final double _deviceBlockSize = _devicewidth / 100;
// return WillPopScope(
// onWillPop: () async {
// Navigator.pushReplacementNamed(
// context,
// Routes.packageResultScreen,
// );
// return true;
// },
// child: SafeArea(
// child: Scaffold(
// appBar: AppBar(
// titleSpacing: -10,
// backgroundColor: Colors.black,
// title: Text('Packages', style: TextStyle(color: Colors.white,),),
// leading: IconButton(
// icon: Icon(
// Icons.keyboard_arrow_left,
// color: Colors.white,
// size: 35,
// ),
// onPressed: () => Navigator.of(context)
// .pushReplacementNamed(Routes.packageResultScreen),
// ),
// ),
// body: Consumer<ConnectivityProvider>(
// builder: (ct, connection, _) {
// return connection.conStatus != 'offline'
// ? isInit
// ? Center(
// child: CircularProgressIndicator(color: Colors.black),
// )
// : Form(
// key: _form,
// child: Padding(
// padding: EdgeInsets.all(20),
// child: ListView(
// children: <Widget>[
// Text(
// 'Update a Package',
// style: TextStyle(
// fontWeight: FontWeight.w700,
// fontSize: 6 * _deviceBlockSize,
// letterSpacing: 3,
// ),
// ),
// SizedBox(
// height: 20,
// ),
// TextFormField(
// validator: (val) {
// if (val!.isEmpty) {
// return 'Name required!';
// }
// return null;
// },
// controller: nameCTRL,
// decoration: InputDecoration(
// icon: Icon(FontAwesomeIcons.alignLeft,
// size: 7 * _deviceBlockSize),
// isDense: true,
// labelText: 'Package Name',
// contentPadding: EdgeInsets.symmetric(
// vertical: 2, horizontal: 3),
// labelStyle: TextStyle(
// fontWeight: FontWeight.w100,
// fontSize: 4 * _deviceBlockSize,
// ),
// ),
// style: TextStyle(
// fontWeight: FontWeight.w700,
// fontSize: 5 * _deviceBlockSize,
// ),
// keyboardType: TextInputType.text,
// textInputAction: TextInputAction.next,
// onFieldSubmitted: (_) {
// FocusScope.of(context)
// .requestFocus(_udiFocusNode);
// },
// ),
// SizedBox(
// height: 20,
// ),
// // TextFormField(
// // validator: (val) {
// // if (val!.isEmpty) {
// // return 'UDI required!';
// // }
// // return null;
// // },
// // controller: udiCTRL,
// // decoration: InputDecoration(
// // icon: Icon(
// // FontAwesomeIcons.alignLeft,
// // size: 7 * _deviceBlockSize,
// // ),
// // labelStyle: TextStyle(
// // fontWeight: FontWeight.w100,
// // fontSize: 4 * _deviceBlockSize,
// // ),
// // isDense: true,
// // labelText: 'UDI',
// // contentPadding: EdgeInsets.symmetric(
// // vertical: 2, horizontal: 3),
// // ),
// // style: TextStyle(
// // fontWeight: FontWeight.w700,
// // fontSize: 5 * _deviceBlockSize,
// // ),
// // focusNode: _udiFocusNode,
// // keyboardType: TextInputType.text,
// // textInputAction: TextInputAction.done,
// // onFieldSubmitted: (_) {
// // FocusScope.of(context)
// // .requestFocus(_descriptionFocusNode);
// // },
// // ),
// // SizedBox(
// // height: 20,
// // ),
// TextFormField(
// controller: descriptionCTRL,
// decoration: InputDecoration(
// icon: Icon(
// FontAwesomeIcons.alignLeft,
// size: 7 * _deviceBlockSize,
// ),
// labelStyle: TextStyle(
// fontWeight: FontWeight.w100,
// fontSize: 4 * _deviceBlockSize,
// ),
// isDense: true,
// labelText: 'Description',
// contentPadding: EdgeInsets.symmetric(
// vertical: 2, horizontal: 3),
// ),
// style: TextStyle(
// fontWeight: FontWeight.w700,
// fontSize: 5 * _deviceBlockSize,
// ),
// keyboardType: TextInputType.multiline,
// focusNode: _descriptionFocusNode,
// minLines: 1,
// maxLines: 5,
// ),
// SizedBox(
// height: 70,
// ),
// PackageUpdateButton(
// form: _form,
// id: datas!.id,
// nameCTRL: nameCTRL,
// // udiCTRL: udiCTRL,
// itemCTRL: itemCTRL,
// deviceBlockSize: _deviceBlockSize,
// descriptionCTRL: descriptionCTRL,
// ),
// SizedBox(
// height: 100,
// ),
// ],
// ),
// ),
// )
// : ConnectionErrorBox();
// },
// ),
// ),
// ),
// );
// }
// }