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: () {