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
+56 -21
View File
@@ -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/items.dart';
import 'package:cssd/widgets/ItemScreens/Filter/item_filter_object.dart';
import 'package:cssd/widgets/ItemScreens/Result/item_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 _ItemResultScreenState extends State<ItemResultScreen> {
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 _ItemResultScreenState extends State<ItemResultScreen> {
super.didChangeDependencies();
}
@override
void dispose() {
IsolateNameServer.removePortNameMapping('downloader_send_port');
super.dispose();
}
@override
Widget build(BuildContext context) {
final _media = MediaQuery.of(context);
@@ -252,27 +284,30 @@ class ItemResultFloatingButton extends StatelessWidget {
return Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
// InkWell(
// customBorder: CircleBorder(),
// onTap: () {
// Provider.of<ItemProvider>(context, listen: false).exportItems();
// },
// 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: () async {
var status = await Permission.storage.request();
if (status.isGranted) {
Provider.of<ItemProvider>(context, listen: false).exportItems();
}
},
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: () {