Skip to content

Commit 2f75b35

Browse files
authored
Consolidate WifiPage in ConnectionsPage (#165)
* Consolidate WifiPage in ConnectionsPage * Hierachy fix and light theme fix * Styling changes * write Wi-Fi correctly * Limit the width of the tabbar * Move wifi to it's own file
1 parent f2b0cc5 commit 2f75b35

11 files changed

+118
-42
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:nm/nm.dart';
3+
import 'package:provider/provider.dart';
4+
import 'package:settings/view/pages/connections/wifi_content.dart';
5+
import 'package:yaru_icons/widgets/yaru_icons.dart';
6+
7+
import 'models/wifi_model.dart';
8+
9+
class ConnectionsPage extends StatefulWidget {
10+
static Widget create(BuildContext context) {
11+
final service = Provider.of<NetworkManagerClient>(context, listen: false);
12+
return ChangeNotifierProvider<WifiModel>(
13+
create: (_) => WifiModel(service),
14+
child: const ConnectionsPage(),
15+
);
16+
}
17+
18+
const ConnectionsPage({Key? key}) : super(key: key);
19+
20+
@override
21+
State<ConnectionsPage> createState() => _ConnectionsPageState();
22+
}
23+
24+
class _ConnectionsPageState extends State<ConnectionsPage>
25+
with TickerProviderStateMixin {
26+
late TabController tabController;
27+
28+
@override
29+
void initState() {
30+
tabController = TabController(length: 3, vsync: this);
31+
super.initState();
32+
}
33+
34+
@override
35+
Widget build(BuildContext context) {
36+
final wifiModel = context.watch<WifiModel>();
37+
return Column(
38+
children: [
39+
Container(
40+
width: 516,
41+
height: 60,
42+
decoration: BoxDecoration(borderRadius: BorderRadius.circular(4)),
43+
child: TabBar(
44+
controller: tabController,
45+
indicator: BoxDecoration(
46+
borderRadius: BorderRadius.circular(4),
47+
color:
48+
Theme.of(context).colorScheme.onSurface.withOpacity(0.1)),
49+
tabs: const [
50+
Tab(
51+
icon: Icon(YaruIcons.network_wireless),
52+
child: Text("Wi-Fi")),
53+
Tab(
54+
icon: Icon(YaruIcons.network_wired),
55+
child: Text("Ethernet")),
56+
Tab(
57+
icon: Icon(YaruIcons.call_incoming),
58+
child: Text("Cellular")),
59+
]),
60+
),
61+
Padding(
62+
padding: const EdgeInsets.only(top: 30),
63+
child: SizedBox(
64+
height: 1000,
65+
child: TabBarView(
66+
controller: tabController,
67+
children: [
68+
wifiModel.isWifiDeviceAvailable
69+
? const WifiDevicesContent()
70+
: const WifiAdaptorNotFound(),
71+
Column(
72+
children: const [Text('Ethernet')],
73+
),
74+
Column(
75+
children: const [Text('Cellular')],
76+
)
77+
],
78+
),
79+
),
80+
),
81+
],
82+
);
83+
}
84+
}

lib/view/pages/wifi/widgets/access_point_tile.dart renamed to lib/view/pages/connections/widgets/access_point_tile.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,15 @@ class AccessPointTile extends StatelessWidget {
2222
borderRadius: BorderRadius.circular(4),
2323
onTap: onTap,
2424
child: YaruRow(
25-
trailingWidget: Text(accessPointModel.name),
26-
leadingWidget: Icon(accessPointModel.wifiIconData),
25+
trailingWidget: Row(
26+
children: [
27+
Icon(accessPointModel.wifiIconData),
28+
const SizedBox(
29+
width: 10,
30+
),
31+
Text(accessPointModel.name),
32+
],
33+
),
2734
actionWidget: Row(
2835
children: [
2936
Icon(accessPointModel.isActiveIconData),

lib/view/pages/wifi/wifi_page.dart renamed to lib/view/pages/connections/wifi_content.dart

Lines changed: 22 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'package:flutter/material.dart';
2-
import 'package:nm/nm.dart';
32
import 'package:provider/provider.dart';
43
import 'package:yaru_icons/widgets/yaru_icons.dart';
54
import 'package:yaru_widgets/yaru_widgets.dart';
@@ -9,48 +8,39 @@ import 'models/wifi_model.dart';
98
import 'widgets/access_point_tile.dart';
109
import 'widgets/authentication_dialog.dart';
1110

12-
class WifiPage extends StatelessWidget {
13-
static Widget create(BuildContext context) {
14-
final service = Provider.of<NetworkManagerClient>(context, listen: false);
15-
return ChangeNotifierProvider<WifiModel>(
16-
create: (_) => WifiModel(service),
17-
child: const WifiPage(),
18-
);
19-
}
20-
21-
const WifiPage({Key? key}) : super(key: key);
22-
23-
@override
24-
Widget build(BuildContext context) {
25-
final wifiModel = context.watch<WifiModel>();
26-
if (wifiModel.isWifiDeviceAvailable) return const _WifiDevicesContent();
27-
return const _WifiAdaptorNotFound();
28-
}
29-
}
30-
31-
class _WifiDevicesContent extends StatelessWidget {
32-
const _WifiDevicesContent({Key? key}) : super(key: key);
11+
class WifiDevicesContent extends StatelessWidget {
12+
const WifiDevicesContent({Key? key}) : super(key: key);
3313

3414
@override
3515
Widget build(BuildContext context) {
3616
final wifiModel = context.watch<WifiModel>();
3717

3818
return Column(
3919
children: [
40-
YaruSwitchRow(
41-
trailingWidget: const Text('Wifi'),
42-
actionDescription:
43-
wifiModel.isWifiEnabled ? 'connected' : 'disconnected',
44-
onChanged: (newValue) => wifiModel.toggleWifi(newValue),
45-
value: wifiModel.isWifiEnabled,
46-
),
20+
YaruRow(
21+
trailingWidget: const Text('Wi-Fi'),
22+
actionWidget: Row(
23+
children: [
24+
Text(
25+
wifiModel.isWifiEnabled ? 'connected' : 'disconnected',
26+
style: TextStyle(
27+
color: Theme.of(context)
28+
.colorScheme
29+
.onSurface
30+
.withOpacity(0.5)),
31+
),
32+
Switch(
33+
onChanged: (newValue) => wifiModel.toggleWifi(newValue),
34+
value: wifiModel.isWifiEnabled),
35+
],
36+
)),
4737
if (wifiModel.isWifiEnabled)
4838
for (final wifiDevice in wifiModel.wifiDevices)
4939
AnimatedBuilder(
5040
animation: wifiDevice,
5141
builder: (_, __) {
5242
return YaruSection(
53-
headline: wifiDevice.interface,
43+
headline: 'Visible Networks',
5444
children: [
5545
for (final accessPoint in wifiDevice.accesPoints)
5646
AccessPointTile(
@@ -85,8 +75,8 @@ class _WifiDevicesContent extends StatelessWidget {
8575
}
8676
}
8777

88-
class _WifiAdaptorNotFound extends StatelessWidget {
89-
const _WifiAdaptorNotFound({Key? key}) : super(key: key);
78+
class WifiAdaptorNotFound extends StatelessWidget {
79+
const WifiAdaptorNotFound({Key? key}) : super(key: key);
9080

9181
@override
9282
Widget build(BuildContext context) {

lib/view/pages/page_items.dart

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,15 @@ import 'package:settings/view/pages/notifications/notifications_page.dart';
1010
import 'package:settings/view/pages/power/power_page.dart';
1111
import 'package:settings/view/pages/sound/sound_page.dart';
1212
import 'package:settings/view/pages/wallpaper/wallpaper_page.dart';
13-
import 'package:settings/view/pages/wifi/wifi_page.dart';
13+
import 'package:settings/view/pages/connections/connections_page.dart';
1414
import 'package:yaru_icons/widgets/yaru_icons.dart';
1515
import 'package:yaru_widgets/yaru_widgets.dart';
1616

1717
final pageItems = <YaruPageItem>[
1818
const YaruPageItem(
19-
title: 'WIFI',
20-
iconData: YaruIcons.network_wireless,
21-
builder: WifiPage.create,
22-
),
23-
YaruPageItem(
24-
title: 'Network',
19+
title: 'Connections',
2520
iconData: YaruIcons.network,
26-
builder: (_) => const Text('Network'),
21+
builder: ConnectionsPage.create,
2722
),
2823
YaruPageItem(
2924
title: 'Bluetooth',

0 commit comments

Comments
 (0)