Skip to content

Commit

Permalink
🧩 Refactor: Settings layout and aparted to components
Browse files Browse the repository at this point in the history
  • Loading branch information
Dynesshely committed Apr 1, 2024
1 parent c67c9cc commit 5706f9b
Show file tree
Hide file tree
Showing 9 changed files with 273 additions and 185 deletions.
17 changes: 17 additions & 0 deletions kitx_mobile/lib/pages/controls/settings_group_divider.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import 'package:flutter/material.dart';

/// Settings Group Divider
class SettingsGroupDivider extends StatelessWidget {
/// Constructor
const SettingsGroupDivider({super.key});

@override
Widget build(BuildContext context) {
return Column(
children: [
SizedBox(height: 30),
Divider(),
],
);
}
}
29 changes: 29 additions & 0 deletions kitx_mobile/lib/pages/controls/settings_group_title.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';

/// Settings Group Title
class SettingsGroupTitle extends StatelessWidget {
/// Constructor
const SettingsGroupTitle({required this.titleKey, super.key});

/// Title Key
final String titleKey;

@override
Widget build(BuildContext context) {
return Column(
children: [
SizedBox(height: 60),
Container(
alignment: Alignment.center,
margin: EdgeInsets.symmetric(horizontal: 30, vertical: 10),
child: Text(
titleKey.tr,
style: TextStyle(fontSize: 28),
),
),
SizedBox(height: 30),
],
);
}
}
6 changes: 4 additions & 2 deletions kitx_mobile/lib/pages/pages.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ import 'package:kitx_mobile/pages/home_page.dart';
import 'package:kitx_mobile/pages/not_found_page.dart';
import 'package:kitx_mobile/pages/plugins_page.dart';
import 'package:kitx_mobile/pages/settings_page.dart';
import 'package:kitx_mobile/pages/settings_pages/exterior_settings_page.dart';
import 'package:kitx_mobile/pages/settings_pages/appearance_settings_page.dart';
import 'package:kitx_mobile/pages/settings_pages/log_settings_page.dart';
import 'package:kitx_mobile/pages/sub_pages/device_chat_page.dart';
import 'package:kitx_mobile/pages/test_page.dart';
import 'package:kitx_mobile/pages/test_pages/device_info_test.dart';
Expand All @@ -34,7 +35,8 @@ List<GetPage<dynamic>> getPages() => [
GetPage(name: DeviceInfoTestPage.getRoute(), page: DeviceInfoTestPage.getPage()),
GetPage(name: DeviceSensorsPage.getRoute(), page: DeviceSensorsPage.getPage()),
GetPage(name: NetworkInfoTestPage.getRoute(), page: NetworkInfoTestPage.getPage()),
GetPage(name: ExteriorSettingsPage.getRoute(), page: ExteriorSettingsPage.getPage()),
GetPage(name: AppearanceSettingsPage.getRoute(), page: AppearanceSettingsPage.getPage()),
GetPage(name: LogSettingsPage.getRoute(), page: LogSettingsPage.getPage()),
];

/// Constant Page
Expand Down
192 changes: 33 additions & 159 deletions kitx_mobile/lib/pages/settings_page.dart
Original file line number Diff line number Diff line change
@@ -1,62 +1,18 @@
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:kitx_mobile/instances.dart';
import 'package:kitx_mobile/pages/controls/settings_group_title.dart';
import 'package:kitx_mobile/pages/pages.dart';
import 'package:kitx_mobile/pages/settings_pages/exterior_settings_page.dart';
import 'package:kitx_mobile/pages/settings_pages/appearance_settings_page.dart';
import 'package:kitx_mobile/pages/settings_pages/log_settings_page.dart';
import 'package:kitx_mobile/pages/test_pages/device_info_test.dart';
import 'package:kitx_mobile/pages/test_pages/device_sensors.dart';
import 'package:kitx_mobile/pages/test_pages/network_info_test.dart';
import 'package:kitx_mobile/utils/composer.dart';
import 'package:kitx_mobile/utils/config.dart';
import 'package:kitx_mobile/utils/converters/size_converter.dart';
import 'package:kitx_mobile/utils/handlers/tasks/delayed_task.dart';
import 'package:kitx_mobile/utils/handlers/vibration_handler.dart';

/// Settings Group Title
class SettingsGroupTitle extends StatelessWidget {
/// Constructor
const SettingsGroupTitle({required this.titleKey, super.key});

/// Title Key
final String titleKey;

@override
Widget build(BuildContext context) {
return Column(
children: [
SizedBox(height: 60),
Container(
alignment: Alignment.center,
margin: EdgeInsets.symmetric(horizontal: 30, vertical: 10),
child: Text(
titleKey.tr,
style: TextStyle(fontSize: 28),
),
),
SizedBox(height: 30),
],
);
}
}

/// Settings Group Divider
class SettingsGroupDivider extends StatelessWidget {
/// Constructor
const SettingsGroupDivider({super.key});

@override
Widget build(BuildContext context) {
return Column(
children: [
SizedBox(height: 30),
Divider(),
],
);
}
}

/// Settings Page
class SettingsPage extends StatefulWidget implements ConstantPage {
/// Get Route
Expand All @@ -75,27 +31,11 @@ class SettingsPage extends StatefulWidget implements ConstantPage {
class _SettingsPageState extends State<SettingsPage> {
var tileRadius = ContinuousRectangleBorder(borderRadius: BorderRadius.circular(10.0));

var logFilePath = '/data/data/com.crequency.kitx.mobile/app_flutter/flog.db';

var logFileSizeString = 'getting ...'.obs;
var logFileExists = false.obs;

void updateLogFileSizeString() {
var file = File(logFilePath);
if (file.existsSync()) {
logFileSizeString.value = convert2string(file.lengthSync());
logFileExists.value = true;
} else {
logFileSizeString.value = 'File $logFilePath don\'t exists';
logFileExists.value = false;
}
}

void showSnackBar(Widget content, {Duration? duration}) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: content,
showCloseIcon: true,
duration: duration ?? Duration(milliseconds: 1200),
duration: duration ?? Duration(milliseconds: 400),
));
}

Expand All @@ -107,8 +47,6 @@ class _SettingsPageState extends State<SettingsPage> {

@override
void initState() {
updateLogFileSizeString();

super.initState();
}

Expand Down Expand Up @@ -145,29 +83,37 @@ class _SettingsPageState extends State<SettingsPage> {
),
body: ListView(
children: [
const SizedBox(height: 30),
Padding(
padding: EdgeInsets.symmetric(horizontal: 30, vertical: 5),
child: ListTile(
leading: const Icon(Icons.color_lens),
title: Text('SettingsPage_Theme'.tr),
trailing: const Icon(Icons.keyboard_arrow_right),
shape: tileRadius,
onTap: () => (() => Get.toNamed(ExteriorSettingsPage.getRoute())).tryVibrate().call(),
),
),
Padding(
padding: EdgeInsets.symmetric(horizontal: 30, vertical: 5),
child: ListTile(
leading: const Icon(Icons.notes),
title: Text('Public_Log'.tr),
trailing: const Icon(Icons.keyboard_arrow_right),
shape: tileRadius,
onTap: () => (() => {}).tryVibrate().call(),
group(
SettingsGroupTitle(titleKey: 'SettingsPage_General'),
Column(
children: [
Padding(
padding: EdgeInsets.symmetric(horizontal: 30, vertical: 5),
child: ListTile(
leading: const Icon(Icons.color_lens),
title: Text('SettingsPage_Appearance'.tr),
trailing: const Icon(Icons.keyboard_arrow_right),
shape: tileRadius,
onTap: () => (() => Get.toNamed(AppearanceSettingsPage.getRoute())).tryVibrate().call(),
),
),
Padding(
padding: EdgeInsets.symmetric(horizontal: 30, vertical: 5),
child: ListTile(
leading: const Icon(Icons.notes),
title: Text('SettingsPage_Log'.tr),
trailing: const Icon(Icons.keyboard_arrow_right),
shape: tileRadius,
onTap: () => (() => Get.toNamed(LogSettingsPage.getRoute())).tryVibrate().call(),
),
),
],
),
const SizedBox(),
spacer: null,
),
group(
SettingsGroupTitle(titleKey: 'Drawer_Test'.tr),
SettingsGroupTitle(titleKey: 'SettingsPage_Test'),
Column(
children: [
Padding(
Expand Down Expand Up @@ -205,78 +151,6 @@ class _SettingsPageState extends State<SettingsPage> {
const SizedBox(),
spacer: null,
),
// group(
// SettingsGroupTitle(titleKey: 'Public_Log'),
// Column(
// children: [
// Row(
// mainAxisAlignment: MainAxisAlignment.center,
// children: [
// Obx(
// () => AnimatedContainer(
// duration: Duration(milliseconds: 700),
// curve: Curves.easeInOutCubic,
// width: logFileExists.value ? null : MediaQuery.of(context).size.width / 3 * 2,
// child: Text(logFileSizeString.value),
// ),
// ),
// const SizedBox(width: 10),
// IconButton(
// onPressed: updateLogFileSizeString,
// icon: Icon(Icons.refresh),
// )
// ],
// ),
// const SizedBox(height: 30),
// Container(
// alignment: Alignment.center,
// child: ElevatedButton(
// onPressed: () async {
// var beforeSize = 0;
// var beforeSizeString = convert2string(beforeSize);
// var nowSize = 0;
// var nowSizeString = convert2string(nowSize);

// var file = File(logFilePath);

// if (file.existsSync()) {
// logFileExists.value = true;

// beforeSize = file.lengthSync();
// beforeSizeString = convert2string(beforeSize);
// }

// if (logFileExists.value) {
// await FLog.clearLogs();
// } else {
// FLog.clearLogs();
// }

// file = File(logFilePath);

// if (logFileExists.value) {
// nowSize = file.lengthSync();
// nowSizeString = convert2string(nowSize);
// }

// updateLogFileSizeString();

// if (logFileExists.value) {
// showSnackBar(Text('$beforeSizeString -> $nowSizeString'));
// } else {
// showSnackBar(Text('Log file clean action requested.'));
// }
// }.delay(milliseconds: 200).execute,
// child: Text('SettingsPage_CleanLog'.tr),
// ),
// ),
// const SizedBox(height: 30),
// ElevatedButton(onPressed: () {}, child: const Text('...')),
// ],
// ),
// const SettingsGroupDivider(),
// spacer: null,
// ),
const SizedBox(height: 300),
],
),
Expand Down
Loading

0 comments on commit 5706f9b

Please sign in to comment.