Skip to content

Commit b361c2e

Browse files
committed
Make settings page
1 parent 4d61584 commit b361c2e

File tree

3 files changed

+65
-2
lines changed

3 files changed

+65
-2
lines changed

lib/pages/main/settings.dart

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import 'package:desktop_adb_file_browser/riverpod/settings.dart';
2+
import 'package:flutter/material.dart';
3+
import 'package:flutter/services.dart';
4+
import 'package:flutter_riverpod/flutter_riverpod.dart';
5+
6+
class SettingsPage extends ConsumerStatefulWidget {
7+
const SettingsPage({super.key});
8+
9+
@override
10+
ConsumerState<ConsumerStatefulWidget> createState() => _SettingsPageState();
11+
}
12+
13+
class _SettingsPageState extends ConsumerState<SettingsPage> {
14+
@override
15+
Widget build(BuildContext context) {
16+
final settings = ref.watch(settingsProvider);
17+
var multipleADBLimit = SizedBox(
18+
width: 200,
19+
child: TextFormField(
20+
initialValue: settings.multipleAdbInstances.toString(),
21+
keyboardType: const TextInputType.numberWithOptions(
22+
signed: false, decimal: false),
23+
inputFormatters: <TextInputFormatter>[
24+
FilteringTextInputFormatter.digitsOnly
25+
], // Only numbers can be entered
26+
decoration:
27+
const InputDecoration(label: Text("Multiple ADB Instance Limit")),
28+
onChanged: (v) => updateSettings(
29+
settings.copyWith(
30+
multipleAdbInstances:
31+
(double.tryParse(v) ?? settings.multipleAdbInstances)
32+
.toInt()),
33+
),
34+
),
35+
);
36+
return Scaffold(
37+
appBar: AppBar(
38+
title: const Text("Settings"),
39+
),
40+
body: Padding(
41+
padding: const EdgeInsets.all(16.0),
42+
child: Column(
43+
children: [
44+
Tooltip(
45+
message:
46+
"Specifies the limit of ADB instances that can run simultaneously",
47+
waitDuration: const Duration(milliseconds: 500),
48+
child: multipleADBLimit,
49+
)
50+
],
51+
),
52+
),
53+
);
54+
}
55+
56+
void updateSettings(SettingsData settings) {
57+
var notifier = ref.read(settingsProvider.notifier);
58+
notifier.update(settings);
59+
}
60+
}

lib/pages/main_page.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ 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';
44
import 'package:desktop_adb_file_browser/pages/main/package_list.dart';
5+
import 'package:desktop_adb_file_browser/pages/main/settings.dart';
56
import 'package:desktop_adb_file_browser/riverpod/selected_device.dart';
67
import 'package:flex_color_scheme/flex_color_scheme.dart';
78
import 'package:fluentui_system_icons/fluentui_system_icons.dart';
@@ -12,7 +13,8 @@ enum _Page {
1213
devices("Devices", FluentIcons.phone_48_regular, false),
1314
browser("Browser", FluentIcons.folder_48_regular, true),
1415
logger("Logger", FluentIcons.code_block_48_regular, true),
15-
packages("Packages", FluentIcons.apps_48_regular, true);
16+
packages("Packages", FluentIcons.apps_48_regular, true),
17+
settings("Settings", FluentIcons.settings_48_regular, false);
1618

1719
const _Page(this.name, this.icon, this.requiresDevice);
1820

@@ -113,6 +115,7 @@ class _MainPageState extends ConsumerState<MainPage> {
113115
key: const ValueKey("packages"),
114116
serial: selectedDevice!.serialName,
115117
),
118+
_Page.settings => const SettingsPage(),
116119
};
117120
}
118121
}

lib/riverpod/package_list.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)