Skip to content

Commit 1a4afe5

Browse files
Merge pull request #360 from swetar-mecha/revamp/settings-app
fix(settigns): add lint rules for const & updated code; code updated where const required;
2 parents 2c7ee73 + 536a3a6 commit 1a4afe5

37 files changed

+245
-157
lines changed

apps/settings/analysis_options.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ linter:
2121
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
2222
# producing the lint.
2323
rules:
24+
- prefer_const_constructors
25+
- prefer_const_literals_to_create_immutables
2426
# avoid_print: false # Uncomment to disable the `avoid_print` rule
2527
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
2628

apps/settings/lib/main.dart

Lines changed: 55 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -107,14 +107,16 @@ class MechanixSettingsApp extends StatelessWidget with WatchItMixin {
107107
watchPropertyValue((ThemeToggle t) => t.mechanixVariant);
108108

109109
return MechanixTheme(
110-
data: MechanixThemeData(mechanixVariant: mechanixVariant, extensions: [
110+
data: MechanixThemeData(mechanixVariant: mechanixVariant, extensions: const [
111111
MechanixNavigationBarThemeData(
112-
scrolledUnderElevation: 0,
113-
titleStyle: TextStyle(fontSize: 24,),
114-
titleSpacing: 0,
115-
backgroundColor: Colors.transparent,
116-
elevation: 0,
112+
scrolledUnderElevation: 0,
113+
titleStyle: TextStyle(
114+
fontSize: 24,
117115
),
116+
titleSpacing: 0,
117+
backgroundColor: Colors.transparent,
118+
elevation: 0,
119+
),
118120
MechanixSwitchThemeData(
119121
style: MechanixSwitchStyle(
120122
inactiveThumbColor: Color(0xFF989898),
@@ -215,53 +217,65 @@ class MainApp extends StatelessWidget {
215217
themeMode: themeMode,
216218
routes: {
217219
// Sound Routes
218-
AppRoutes.sound: (context) => Sound(),
219-
AppRoutes.vibrationLevel: (context) => VibrationLevel(),
220-
AppRoutes.soundOutputDevices: (context) => OutputDevices(),
221-
AppRoutes.soundInputDevices: (context) => InputDevices(),
222-
AppRoutes.notificationSound: (context) => NotificationSound(),
220+
AppRoutes.sound: (context) => const Sound(),
221+
AppRoutes.vibrationLevel: (context) => const VibrationLevel(),
222+
AppRoutes.soundOutputDevices: (context) => const OutputDevices(),
223+
AppRoutes.soundInputDevices: (context) => const InputDevices(),
224+
AppRoutes.notificationSound: (context) => const NotificationSound(),
223225

224226
// Wireless Routes
225-
AppRoutes.wireless: (context) => WirelessSettings(),
226-
AppRoutes.wirelessNetworkDetails: (context) => NetworkDetails(),
227-
AppRoutes.ipSettings: (context) => IpSettings(),
228-
AppRoutes.ethernetDetails: (context) => EthernetSettings(),
229-
AppRoutes.dnsDetails: (context) => DnsSettings(),
230-
AppRoutes.wirelessNetworkSettings: (context) => NetworkSettings(),
231-
AppRoutes.wirelessSavedNetworkDetails: (context) => SavedNetworkDetails(),
227+
AppRoutes.wireless: (context) => const WirelessSettings(),
228+
AppRoutes.wirelessNetworkDetails: (context) => const NetworkDetails(),
229+
// TODO: for route level bloc
230+
// AppRoutes.wireless: (context) => BlocProvider(
231+
// create: (context) => WirelessSettingsBloc(
232+
// wifiRepository: context.read<WifiRepository>(),
233+
// )..add(InitWifi()),
234+
// child: const WirelessSettings(),
235+
// ),
236+
// AppRoutes.wirelessNetworkDetails: (context) => BlocProvider.value( // make common widget
237+
// value: context.read<WirelessSettingsBloc>(),
238+
// child: const NetworkDetails(),
239+
// ),
240+
AppRoutes.ipSettings: (context) => const IpSettings(),
241+
AppRoutes.ethernetDetails: (context) => const EthernetSettings(),
242+
AppRoutes.dnsDetails: (context) => const DnsSettings(),
243+
AppRoutes.wirelessNetworkSettings: (context) => const NetworkSettings(),
244+
AppRoutes.wirelessSavedNetworkDetails: (context) =>
245+
const SavedNetworkDetails(),
232246
AppRoutes.wirelessConnectSecureNetwork: (context) =>
233-
ConnectSecureNetwork(),
234-
AppRoutes.wirelessConnectHiddenNetwork: (context) => AddNetwork(),
235-
AppRoutes.configureDNS: (context) => ConfigureDnsWidget(),
236-
AppRoutes.configureProxy: (context) => ConfigureProxyWidget(),
237-
AppRoutes.ipv4Address: (context) => Ipv4AddressWidget(),
238-
AppRoutes.security: (context) => WifiSecurityWidget(),
247+
const ConnectSecureNetwork(),
248+
AppRoutes.wirelessConnectHiddenNetwork: (context) => const AddNetwork(),
249+
AppRoutes.configureDNS: (context) => const ConfigureDnsWidget(),
250+
AppRoutes.configureProxy: (context) => const ConfigureProxyWidget(),
251+
AppRoutes.ipv4Address: (context) => const Ipv4AddressWidget(),
252+
AppRoutes.security: (context) => const WifiSecurityWidget(),
239253

240254
// Bluetooth Routes
241-
AppRoutes.bluetooth: (context) => Bluetooth(),
242-
AppRoutes.bluetoothDeviceInfo: (context) => BluetoothDeviceInfo(),
243-
AppRoutes.adapterSettings: (context) => AdapterSettings(),
244-
AppRoutes.adapterRename: (context) => RenameAdapter(),
255+
AppRoutes.bluetooth: (context) => const Bluetooth(),
256+
AppRoutes.bluetoothDeviceInfo: (context) => const BluetoothDeviceInfo(),
257+
AppRoutes.adapterSettings: (context) => const AdapterSettings(),
258+
AppRoutes.adapterRename: (context) => const RenameAdapter(),
245259
AppRoutes.bluetoothDiscoverable: (context) =>
246-
BluetoothDeviceDiscoverable(),
247-
AppRoutes.bluetoothDeviceTypes: (context) => DeviceTypes(),
260+
const BluetoothDeviceDiscoverable(),
261+
AppRoutes.bluetoothDeviceTypes: (context) => const DeviceTypes(),
248262

249263
// Battery Routes
250-
AppRoutes.battery: (context) => Battery(),
251-
AppRoutes.batteryPerformance: (context) => BatteryPerformance(),
264+
AppRoutes.battery: (context) => const Battery(),
265+
AppRoutes.batteryPerformance: (context) => const BatteryPerformance(),
252266

253267
// Display Routes
254-
AppRoutes.display: (context) => DisplayPage(),
255-
AppRoutes.appearance: (context) => Appearance(),
256-
AppRoutes.applyWallpaper: (context) => ApplyWallpaper(),
257-
AppRoutes.displayScreenOffTime: (context) => ScreenOffTimeSettings(),
258-
AppRoutes.lockScreenTimeout: (context) => LockScreenTimeout(),
268+
AppRoutes.display: (context) => const DisplayPage(),
269+
AppRoutes.appearance: (context) => const Appearance(),
270+
AppRoutes.applyWallpaper: (context) => const ApplyWallpaper(),
271+
AppRoutes.displayScreenOffTime: (context) => const ScreenOffTimeSettings(),
272+
AppRoutes.lockScreenTimeout: (context) => const LockScreenTimeout(),
259273

260274
// Other Routes
261-
AppRoutes.about: (context) => About(),
262-
AppRoutes.dateTime: (context) => DateTimeSettings(),
263-
AppRoutes.timeSettings: (context) => TimeSettings(),
264-
AppRoutes.dateSettings: (context) => DateSettings(),
275+
AppRoutes.about: (context) => const About(),
276+
AppRoutes.dateTime: (context) => const DateTimeSettings(),
277+
AppRoutes.timeSettings: (context) => const TimeSettings(),
278+
AppRoutes.dateSettings: (context) => const DateSettings(),
265279
},
266280
),
267281
);

apps/settings/lib/src/features/about/presentation/about.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ class _AboutState extends State<About> {
1919
return BlocBuilder<AboutBloc, AboutState>(
2020
builder: (context, state) {
2121
return Scaffold(
22-
appBar: MechanixNavigationBar(title: 'About this Comet'),
22+
appBar: const MechanixNavigationBar(title: 'About this Comet'),
2323
body: SingleChildScrollView(
24-
physics: BouncingScrollPhysics(),
24+
physics: const BouncingScrollPhysics(),
2525
child: ContainerWidget(
2626
child: Column(
2727
children: [

apps/settings/lib/src/features/appearance/presentation/appearance.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class _AppearanceState extends State<Appearance> {
2828
@override
2929
Widget build(BuildContext context) {
3030
return Scaffold(
31-
appBar: MechanixNavigationBar(
31+
appBar: const MechanixNavigationBar(
3232
title: 'Appearance',
3333
),
3434
body: ContainerWidget(

apps/settings/lib/src/features/appearance/presentation/apply_wallpaper.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class _ApplyWallpaperState extends State<ApplyWallpaper> {
2323
final imagePath = args['imagePath'] as String;
2424

2525
return Scaffold(
26-
appBar: MechanixNavigationBar(
26+
appBar: const MechanixNavigationBar(
2727
title: 'Apply Wallpaper',
2828
),
2929
body: ContainerWidget(

apps/settings/lib/src/features/battery/presentation/battery.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class BatteryScreenState extends State<Battery> {
3939
].join(' ');
4040

4141
return Scaffold(
42-
appBar: MechanixNavigationBar(
42+
appBar: const MechanixNavigationBar(
4343
title: "Battery",
4444
),
4545
body: SingleChildScrollView(

apps/settings/lib/src/features/battery/presentation/battery_indicator.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class BatteryIndicator extends StatelessWidget {
2525
if (state.batteryPercentage > 20) {
2626
return getModeDetails(state.performanceMode ?? '').color;
2727
}
28-
return Color(0xFFB90C2C);
28+
return const Color(0xFFB90C2C);
2929
}
3030

3131
@override
@@ -55,7 +55,7 @@ class BatteryIndicator extends StatelessWidget {
5555
child: Stack(
5656
children: [
5757
AnimatedContainer(
58-
duration: Duration(milliseconds: 700),
58+
duration: const Duration(milliseconds: 700),
5959
width:
6060
batteryWidth * (state.batteryPercentage / 100),
6161
height: height,
@@ -64,7 +64,7 @@ class BatteryIndicator extends StatelessWidget {
6464
),
6565
),
6666
// Percentage text
67-
Center(
67+
const Center(
6868
child: IconWidget(
6969
boxWidth: 24,
7070
boxHeight: 28,

apps/settings/lib/src/features/battery/presentation/battery_performance.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class BatteryPerformanceState extends State<BatteryPerformance> {
2525
Widget build(BuildContext context) {
2626
return BlocBuilder<BatteryBloc, BatteryState>(builder: (context, state) {
2727
return Scaffold(
28-
appBar: MechanixNavigationBar(title: 'Performance Mode'),
28+
appBar: const MechanixNavigationBar(title: 'Performance Mode'),
2929
body: ContainerWidget(
3030
child: Column(
3131
crossAxisAlignment: CrossAxisAlignment.start,

apps/settings/lib/src/features/bluetooth/models/device_type.dart

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ class DeviceType extends StatelessWidget {
6363
case 'phone':
6464
return Row(
6565
children: [
66-
IconWidget(iconPath: Images.mobile).padRight(8),
67-
CustomTrailingText(
66+
const IconWidget(iconPath: Images.mobile).padRight(8),
67+
const CustomTrailingText(
6868
title: 'Mobile',
6969
).padRight(8),
70-
IconWidget(
70+
const IconWidget(
7171
iconWidth: 10,
7272
iconHeight: 17,
7373
iconPath: Images.rightIconArrow,
@@ -78,11 +78,11 @@ class DeviceType extends StatelessWidget {
7878
case 'computer':
7979
return Row(
8080
children: [
81-
IconWidget(iconPath: Images.tv).padRight(8),
82-
CustomTrailingText(
81+
const IconWidget(iconPath: Images.tv).padRight(8),
82+
const CustomTrailingText(
8383
title: 'TV',
8484
).padRight(8),
85-
IconWidget(
85+
const IconWidget(
8686
iconWidth: 10,
8787
iconHeight: 17,
8888
iconPath: Images.rightIconArrow,
@@ -93,18 +93,20 @@ class DeviceType extends StatelessWidget {
9393
case 'multimedia-player':
9494
return Row(
9595
children: [
96-
IconWidget(iconPath: Images.speaker).padRight(8),
97-
CustomTrailingText(
96+
const IconWidget(iconPath: Images.speaker).padRight(8),
97+
const CustomTrailingText(
9898
title: 'Car',
9999
).padRight(8),
100-
IconWidget(
100+
const IconWidget(
101101
iconWidth: 10,
102102
iconHeight: 17,
103103
iconPath: Images.rightIconArrow,
104104
).padRight(8)
105105
],
106106
);
107107

108+
109+
// TODO: add more device types like mouse , keyboard
108110
default:
109111
return Row(
110112
children: [

apps/settings/lib/src/features/bluetooth/presentation/adapter_settings.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ class AdapterSettings extends StatelessWidget {
3333
String deviceName = state.bluetoothAdapter?.alias ?? '';
3434

3535
return Scaffold(
36-
appBar: MechanixNavigationBar(title: 'Bluetooth Settings'),
36+
appBar: const MechanixNavigationBar(title: 'Bluetooth Settings'),
3737
body: SingleChildScrollView(
3838
physics: const BouncingScrollPhysics(),
3939
child: ContainerWidget(
4040
child: ListTile(
41-
title: Text('Device name',
42-
style: const TextStyle(color: Colors.white, fontSize: 24)),
41+
title: const Text('Device name',
42+
style: TextStyle(color: Colors.white, fontSize: 24)),
4343
trailing: Text(
4444
deviceName,
4545
style: const TextStyle(

0 commit comments

Comments
 (0)