1
1
import 'package:desktop_adb_file_browser/riverpod/package_list.dart' ;
2
+ import 'package:desktop_adb_file_browser/riverpod/selected_device.dart' ;
3
+ import 'package:desktop_adb_file_browser/utils/adb.dart' ;
4
+ import 'package:desktop_adb_file_browser/widgets/adb_queue_indicator.dart' ;
2
5
import 'package:flutter/material.dart' ;
3
6
import 'package:flutter/services.dart' ;
4
7
import 'package:flutter_riverpod/flutter_riverpod.dart' ;
5
- import 'package:freezed_annotation/freezed_annotation.dart' ;
6
8
7
9
class PackageList extends ConsumerStatefulWidget {
8
10
const PackageList ({super .key, required this .serial});
@@ -23,22 +25,24 @@ class _PackageListState extends ConsumerState<PackageList> {
23
25
title: const Text ("Packages" ),
24
26
automaticallyImplyLeading: true ,
25
27
),
26
- body: packageListFuture.when (
27
- data: (packageList) => ListView .separated (
28
- itemBuilder: (c, i) => itemBuilder (c, i, packageList),
29
- itemCount: packageList.length,
30
- shrinkWrap: true ,
31
- separatorBuilder: (context, index) => const Divider (),
32
- ),
33
- error: (error, stackTrace) {
34
- debugPrint (error.toString ());
35
- debugPrint (stackTrace.toString ());
36
- return Center (
37
- child: Text ("Error: $error " ),
38
- );
39
- },
40
- loading: () => const Center (
41
- child: CircularProgressIndicator (),
28
+ body: ADBQueueIndicator (
29
+ child: packageListFuture.when (
30
+ data: (packageList) => ListView .separated (
31
+ itemBuilder: (c, i) => itemBuilder (c, i, packageList),
32
+ itemCount: packageList.length,
33
+ shrinkWrap: true ,
34
+ separatorBuilder: (context, index) => const Divider (),
35
+ ),
36
+ error: (error, stackTrace) {
37
+ debugPrint (error.toString ());
38
+ debugPrint (stackTrace.toString ());
39
+ return Center (
40
+ child: Text ("Error: $error " ),
41
+ );
42
+ },
43
+ loading: () => const Center (
44
+ child: CircularProgressIndicator (),
45
+ ),
42
46
),
43
47
),
44
48
);
@@ -48,6 +52,7 @@ class _PackageListState extends ConsumerState<PackageList> {
48
52
BuildContext context, int index, List <String > packageList) {
49
53
final packageId = packageList[index];
50
54
final packageMetadataFuture = ref.watch (packageInfoProvider (packageId));
55
+ final selectedDevice = ref.watch (selectedDeviceProvider);
51
56
52
57
return packageMetadataFuture.when (
53
58
data: (packageMetadata) => ListTile (
@@ -59,7 +64,17 @@ class _PackageListState extends ConsumerState<PackageList> {
59
64
trailing: Wrap (
60
65
children: [
61
66
IconButton (onPressed: () {}, icon: const Icon (Icons .download)),
62
- IconButton (onPressed: () {}, icon: const Icon (Icons .delete)),
67
+ IconButton (
68
+ onPressed: () async {
69
+ await Adb .uninstallPackage (
70
+ selectedDevice! .serialName, packageId);
71
+ if (! context.mounted) return ;
72
+ const snackBar = SnackBar (
73
+ content: Text ('Uninstalled package' ),
74
+ );
75
+ ScaffoldMessenger .of (context).showSnackBar (snackBar);
76
+ },
77
+ icon: const Icon (Icons .delete)),
63
78
IconButton (
64
79
onPressed: () async {
65
80
await Clipboard .setData (
0 commit comments