summaryrefslogtreecommitdiffstats
path: root/lib/presentation/screens/settings/widgets
diff options
context:
space:
mode:
authorLisandro Pérez Meyer <lpmeyer@ics.com>2023-11-14 17:20:58 -0300
committerLisandro Pérez Meyer <lpmeyer@ics.com>2023-11-14 17:31:12 -0300
commit70ec8a79a121471a004e7e4c23157d10157e136f (patch)
treea4f9c0a4fac4e4274ec4324a289b6ef62e1c5653 /lib/presentation/screens/settings/widgets
Initial cleanup push.
Based on agldemo2024 on commit 2a5dc04d801134338150c3f6afc67eaa65599763 Disable device preview. Disable Lottie animation. The original commit was b3c493c340fcb4bb0a937692838fc830bec3e9ea but I am just keeping this change, because the json did not really needed to change. I think. Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
Diffstat (limited to 'lib/presentation/screens/settings/widgets')
-rw-r--r--lib/presentation/screens/settings/widgets/settings_content.dart95
-rw-r--r--lib/presentation/screens/settings/widgets/settings_list_tile.dart234
2 files changed, 329 insertions, 0 deletions
diff --git a/lib/presentation/screens/settings/widgets/settings_content.dart b/lib/presentation/screens/settings/widgets/settings_content.dart
new file mode 100644
index 0000000..f73bf6d
--- /dev/null
+++ b/lib/presentation/screens/settings/widgets/settings_content.dart
@@ -0,0 +1,95 @@
+import 'package:flutter_ics_homescreen/export.dart';
+
+import '../../../custom_icons/custom_icons.dart';
+
+class Settings extends StatelessWidget {
+ const Settings({
+ super.key,
+ });
+
+ @override
+ Widget build(BuildContext context) {
+ return Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ //crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ const CommonTitle(
+ title: 'Settings',
+ ),
+ Expanded(
+ child: ListView(
+ padding: const EdgeInsets.symmetric(vertical: 50, horizontal: 144),
+ children: [
+ SettingsTile(
+ icon: Icons.calendar_month_outlined,
+ title: 'Date & Time',
+ hasSwich: false,
+ voidCallback: () async {
+ context
+ .flow<AppState>()
+ .update((next) => AppState.dateTime);
+ }),
+ SettingsTile(
+ icon: Icons.bluetooth,
+ title: 'Bluetooth',
+ hasSwich: true,
+ voidCallback: () {
+ context
+ .flow<AppState>()
+ .update((next) => AppState.bluetooth);
+ }),
+ SettingsTile(
+ icon: Icons.wifi,
+ title: 'Wifi',
+ hasSwich: true,
+ voidCallback: () {
+ context.flow<AppState>().update((next) => AppState.wifi);
+ }),
+ SettingsTile(
+ icon: CustomIcons.wiredicon,
+ title: 'Wired',
+ hasSwich: false,
+ voidCallback: () {
+ context.flow<AppState>().update((next) => AppState.wired);
+ }),
+ SettingsTile(
+ icon: Icons.tune,
+ title: 'Audio Settings',
+ hasSwich: false,
+ voidCallback: () {
+ context
+ .flow<AppState>()
+ .update((next) => AppState.audioSettings);
+ }),
+ SettingsTile(
+ icon: Icons.person_2_outlined,
+ title: 'Profiles',
+ hasSwich: false,
+ voidCallback: () {
+ context
+ .flow<AppState>()
+ .update((next) => AppState.profiles);
+ }),
+ SettingsTile(
+ icon: Icons.straighten,
+ title: 'Units',
+ hasSwich: false,
+ voidCallback: () {
+ context.flow<AppState>().update((next) => AppState.units);
+ }),
+ SettingsTile(
+ icon: Icons.help_sharp,
+ title: 'Version Info',
+ hasSwich: false,
+ voidCallback: () {
+ context
+ .flow<AppState>()
+ .update((next) => AppState.versionInfo);
+ }),
+ ],
+ ),
+ ),
+ ],
+ );
+ }
+}
diff --git a/lib/presentation/screens/settings/widgets/settings_list_tile.dart b/lib/presentation/screens/settings/widgets/settings_list_tile.dart
new file mode 100644
index 0000000..4720001
--- /dev/null
+++ b/lib/presentation/screens/settings/widgets/settings_list_tile.dart
@@ -0,0 +1,234 @@
+import 'package:flutter_ics_homescreen/export.dart';
+
+class SettingsTile extends ConsumerStatefulWidget {
+ final IconData icon;
+ final String title;
+ final bool hasSwich;
+ final VoidCallback voidCallback;
+ const SettingsTile({
+ Key? key,
+ required this.icon,
+ required this.title,
+ required this.hasSwich,
+ required this.voidCallback,
+ }) : super(key: key);
+
+ @override
+ SettingsTileState createState() => SettingsTileState();
+}
+
+class SettingsTileState extends ConsumerState<SettingsTile> {
+ bool isSwitchOn = true;
+ @override
+ Widget build(BuildContext context) {
+ final signal = ref.watch(signalsProvider.select((signal) => signal));
+ if (widget.title == 'Bluetooth') {
+ isSwitchOn = signal.isBluetoothConnected;
+ } else if (widget.title == 'Wifi') {
+ isSwitchOn = signal.isWifiConnected;
+ } else {
+ // isSwitchOn = false;
+ }
+ return Column(
+ children: [
+ GestureDetector(
+ onTap: isSwitchOn ? widget.voidCallback : () {},
+ child: Container(
+ height: 130,
+ decoration: BoxDecoration(
+ gradient: LinearGradient(
+ begin: Alignment.centerLeft,
+ end: Alignment.centerRight,
+ stops: isSwitchOn ? [0.3, 1] : [0.8, 1],
+ colors: isSwitchOn
+ ? <Color>[Colors.black, Colors.black12]
+ : <Color>[
+ const Color.fromARGB(50, 0, 0, 0),
+ Colors.transparent
+ ],
+ ),
+ ),
+ child: Card(
+ // shape: RoundedRectangleBorder(
+ // borderRadius: BorderRadius.circular(12),
+ // ),
+ color: Colors.transparent,
+ elevation: 5,
+ child: Padding(
+ padding:
+ const EdgeInsets.symmetric(vertical: 0, horizontal: 24),
+ child: Row(
+ children: [
+ Icon(
+ widget.icon,
+ color: AGLDemoColors.periwinkleColor,
+ size: 48,
+ ),
+ const SizedBox(width: 24),
+ Expanded(
+ child: Text(
+ widget.title,
+ style: const TextStyle(fontSize: 40),
+ ),
+ ),
+ widget.hasSwich
+ ? Container(
+ width: 126,
+ height: 80,
+ decoration: const ShapeDecoration(
+ color:
+ AGLDemoColors.gradientBackgroundDarkColor,
+ shape: StadiumBorder(
+ side: BorderSide(
+ color: Color(0xFF5477D4),
+ width: 4,
+ )),
+ ),
+ child: FittedBox(
+ fit: BoxFit.fill,
+ child: Switch(
+ value: isSwitchOn,
+ onChanged: (bool value) {
+ switch (widget.title) {
+ case 'Bluetooth':
+ ref
+ .read(signalsProvider.notifier)
+ .toggleBluetooth();
+ break;
+ case 'Wifi':
+ ref
+ .read(signalsProvider.notifier)
+ .toggleWifi();
+ break;
+ default:
+ }
+ setState(() {
+ isSwitchOn = value;
+ });
+ // This is called when the user toggles the switch.
+ },
+ inactiveTrackColor: Colors.transparent,
+ activeTrackColor: Colors.transparent,
+ thumbColor:
+ MaterialStateProperty.all<Color>(
+ AGLDemoColors.periwinkleColor)),
+ ),
+ )
+ : const SizedBox(),
+ ],
+ ),
+ ),
+ )
+ // ListTile(
+ // contentPadding:
+ // const EdgeInsets.symmetric(vertical: 41, horizontal: 24),
+ // minLeadingWidth: 55.0,
+ // minVerticalPadding: 0.0,
+ // leading: Icon(
+ // widget.icon,
+ // color: AGLDemoColors.periwinkleColor,
+ // size: 48,
+ // ),
+ // title: Text(
+ // widget.title,
+ // style: const TextStyle(fontSize: 40),
+ // ),
+ // enabled: isSwitchOn,
+ // trailing: widget.hasSwich
+ // ? Container(
+ // width: 126,
+ // height: 80,
+ // decoration: const ShapeDecoration(
+ // color: AGLDemoColors.gradientBackgroundDarkColor,
+ // shape: StadiumBorder(
+ // side: BorderSide(
+ // color: Color(0xFF5477D4),
+ // //color: Colors.amber,
+
+ // width: 1.5,
+ // )),
+ // ),
+ // child: Switch(
+ // value: isSwitchOn,
+ // onChanged: (bool value) {
+ // switch (widget.title) {
+ // case 'Bluetooth':
+ // ref
+ // .read(signalsProvider.notifier)
+ // .toggleBluetooth();
+ // break;
+ // case 'Wifi':
+ // ref.read(signalsProvider.notifier).toggleWifi();
+ // break;
+ // default:
+ // }
+ // setState(() {
+ // isSwitchOn = value;
+ // });
+ // // This is called when the user toggles the switch.
+ // },
+ // inactiveTrackColor: Colors.transparent,
+ // activeTrackColor: Colors.transparent,
+ // thumbColor: MaterialStateProperty.all<Color>(
+ // AGLDemoColors.periwinkleColor)),
+ // )
+ // : const SizedBox(
+ // //Spacer
+ // height: 80,
+ // ),
+ // onTap: widget.voidCallback,
+
+ // ),
+ ),
+ ),
+ const SizedBox(
+ height: 8,
+ )
+ ],
+ );
+ }
+}
+
+// List<SettingsTile> settingsList = [
+// SettingsTile(
+// icon: Icons.calendar_month_outlined,
+// title: 'Date & Time',
+// hasSwich: false,
+// voidCallback: () {}),
+// SettingsTile(
+// icon: Icons.bluetooth,
+// title: 'Bluetooth',
+// hasSwich: true,
+// voidCallback: () {}),
+// SettingsTile(
+// icon: Icons.wifi,
+// title: 'Wifi',
+// hasSwich: true,
+// voidCallback: () {},
+// ),
+// SettingsTile(
+// icon: Icons.settings,
+// title: 'Wired',
+// hasSwich: false,
+// voidCallback: () {}),
+// SettingsTile(
+// icon: Icons.tune,
+// title: 'Audio Settings',
+// hasSwich: false,
+// voidCallback: () {}),
+// SettingsTile(
+// icon: Icons.person_2_outlined,
+// title: 'Profiles',
+// hasSwich: false,
+// voidCallback: () {}),
+// SettingsTile(
+// icon: Icons.straighten,
+// title: 'Units',
+// hasSwich: false,
+// voidCallback: () {}),
+// SettingsTile(
+// icon: Icons.help_sharp,
+// title: 'Veriosn Info',
+// hasSwich: false,
+// voidCallback: () {}),
+// ];