Skip to content

Commit d4d1b0f

Browse files
committed
Implement draft package UI
1 parent 2257ef2 commit d4d1b0f

File tree

6 files changed

+302
-24
lines changed

6 files changed

+302
-24
lines changed

lib/pages/main/logger.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ class _LogPageState extends State<LogPage> {
143143
visible: _showLogs,
144144
replacement: _loadingSpinner(),
145145
child: Container(
146-
color: Theme.of(context).colorScheme.background,
146+
color: Theme.of(context).colorScheme.surface,
147147
child: buildList(),
148148
),
149149
),

lib/pages/main/package_list.dart

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:freezed_annotation/freezed_annotation.dart';
3+
4+
// part 'package_list.g.dart';
5+
part 'package_list.freezed.dart';
6+
7+
@freezed
8+
class PackageMetadata with _$PackageMetadata {
9+
const factory PackageMetadata({
10+
required String packageName,
11+
required String packageId,
12+
required String version,
13+
required String groupId,
14+
}) = _PackageMetadata;
15+
}
16+
17+
class PackageList extends StatefulWidget {
18+
const PackageList({super.key, required this.serial});
19+
20+
final String serial;
21+
22+
@override
23+
State<PackageList> createState() => _PackageListState();
24+
}
25+
26+
class _PackageListState extends State<PackageList> {
27+
final packageList = [
28+
const PackageMetadata(
29+
groupId: "flamingo",
30+
packageId: "wen",
31+
packageName: "hoodie",
32+
version: "1.0.0"),
33+
const PackageMetadata(
34+
groupId: "flamingo",
35+
packageId: "wen",
36+
packageName: "hoodie",
37+
version: "1.0.0"),
38+
const PackageMetadata(
39+
groupId: "flamingo",
40+
packageId: "wen",
41+
packageName: "hoodie",
42+
version: "1.0.0"),
43+
const PackageMetadata(
44+
groupId: "flamingo",
45+
packageId: "wen",
46+
packageName: "hoodie",
47+
version: "1.0.0"),
48+
];
49+
50+
@override
51+
Widget build(BuildContext context) {
52+
return Scaffold(
53+
appBar: AppBar(
54+
title: const Text("Packages"),
55+
automaticallyImplyLeading: true,
56+
),
57+
body: ListView.separated(
58+
itemBuilder: itemBuilder,
59+
itemCount: packageList.length,
60+
shrinkWrap: true,
61+
separatorBuilder: (context, index) => const Divider(),
62+
),
63+
);
64+
}
65+
66+
Widget? itemBuilder(BuildContext context, int index) {
67+
final item = packageList[index];
68+
return ListTile(
69+
title: Text(item.packageName),
70+
subtitle: Text(item.packageId),
71+
leading: const Icon(Icons.apps),
72+
dense: true,
73+
onTap: () {},
74+
trailing: Wrap(
75+
children: [
76+
IconButton(onPressed: () {}, icon: const Icon(Icons.copy)),
77+
IconButton(onPressed: () {}, icon: const Icon(Icons.delete)),
78+
],
79+
),
80+
);
81+
}
82+
}

lib/pages/main/package_list.freezed.dart

Lines changed: 194 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/pages/main_page.dart

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
import 'package:desktop_adb_file_browser/pages/main/browser.dart';
22
import 'package:desktop_adb_file_browser/pages/main/devices.dart';
33
import 'package:desktop_adb_file_browser/pages/main/logger.dart';
4+
import 'package:desktop_adb_file_browser/pages/main/package_list.dart';
45
import 'package:flex_color_scheme/flex_color_scheme.dart';
56
import 'package:fluentui_system_icons/fluentui_system_icons.dart';
67
import 'package:flutter/material.dart';
78

89
enum _Page {
9-
devices("Devices", FluentIcons.phone_48_regular),
10-
browser("Browser", FluentIcons.folder_48_regular),
11-
logger("Logger", FluentIcons.code_block_48_regular);
10+
devices("Devices", FluentIcons.phone_48_regular, false),
11+
browser("Browser", FluentIcons.folder_48_regular, true),
12+
logger("Logger", FluentIcons.code_block_48_regular, true),
13+
packages("Packages", FluentIcons.apps_48_regular, true);
1214

13-
const _Page(this.name, this.icon);
15+
const _Page(this.name, this.icon, this.requiresDevice);
1416

1517
final String name;
1618
final IconData icon;
19+
final bool requiresDevice;
1720
}
1821

1922
_Page _pageForIndex(int v) =>
@@ -58,22 +61,14 @@ class _MainPageState extends State<MainPage> {
5861

5962
@override
6063
Widget build(BuildContext context) {
61-
var dests = [
62-
NavigationRailDestination(
63-
icon: Icon(_Page.devices.icon),
64-
label: Text(_Page.devices.name),
65-
),
66-
NavigationRailDestination(
67-
icon: addDisabledTooltip(Icon(_Page.browser.icon)),
68-
label: Text(_Page.browser.name),
69-
disabled: _selectedDevice.value == null,
70-
),
71-
NavigationRailDestination(
72-
icon: addDisabledTooltip(Icon(_Page.logger.icon)),
73-
label: Text(_Page.logger.name),
74-
disabled: _selectedDevice.value == null,
75-
),
76-
];
64+
final dests = _Page.values
65+
.map((x) => NavigationRailDestination(
66+
icon: addDisabledTooltip(Icon(x.icon)),
67+
label: Text(x.name),
68+
disabled:
69+
false && x.requiresDevice && _selectedDevice.value == null,
70+
))
71+
.toList();
7772

7873
return Scaffold(
7974
body: Row(children: [
@@ -89,7 +84,10 @@ class _MainPageState extends State<MainPage> {
8984
),
9085
),
9186
Expanded(
92-
child: _buildCurrentPage(_currentPage),
87+
child: Container(
88+
color: Theme.of(context).colorScheme.surface,
89+
child: _buildCurrentPage(_currentPage),
90+
),
9391
)
9492
]),
9593
);
@@ -109,5 +107,9 @@ class _MainPageState extends State<MainPage> {
109107
key: const ValueKey("logger"),
110108
serial: _selectedDevice.value!,
111109
),
110+
_Page.packages => PackageList(
111+
key: const ValueKey("packages"),
112+
serial: _selectedDevice.value ?? "",
113+
),
112114
};
113115
}

lib/riverpod/file_browser.g.dart

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/riverpod/file_queue.g.dart

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)