diff --git a/kitx_mobile/lib/pages/about_page.dart b/kitx_mobile/lib/pages/about_page.dart index f4613a1..1f834cf 100644 --- a/kitx_mobile/lib/pages/about_page.dart +++ b/kitx_mobile/lib/pages/about_page.dart @@ -10,7 +10,6 @@ import 'package:kitx_mobile/pages/controls/group_divider.dart'; import 'package:kitx_mobile/pages/controls/repo_button.dart'; import 'package:kitx_mobile/pages/pages.dart'; import 'package:kitx_mobile/utils/composer.dart'; -import 'package:kitx_mobile/utils/handlers/tasks/delayed_task.dart'; import 'package:kitx_mobile/utils/handlers/vibration_handler.dart'; /// About Page @@ -319,21 +318,26 @@ class _AboutPageState extends State { duration: 1400, child: Container( padding: EdgeInsets.all(15), - child: ListView.builder( - shrinkWrap: true, - physics: NeverScrollableScrollPhysics(), - itemCount: thirdPartyDataDisplayCount.value, - itemBuilder: thirdPartyLicenseBuilder, + child: Obx( + () => ListView.builder( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + itemCount: thirdPartyDataDisplayCount.value, + itemBuilder: thirdPartyLicenseBuilder, + ), ), ), ), - Visibility( - visible: thirdPartyDataDisplayCount.value != thirdPartyDataList.length, - child: ElevatedButton( - onPressed: (() => super.setState(() { - thirdPartyDataDisplayCount.value = thirdPartyDataList.length; - })).delay(milliseconds: 200).execute, - child: Text('AboutPage_ThirdPartyLicenses_DisplayAll'.tr), + Obx( + () => Visibility( + visible: thirdPartyDataDisplayCount.value != thirdPartyDataList.length, + child: ElevatedButton( + onPressed: () { + VibrationHandler.tryVibrate(); + thirdPartyDataDisplayCount.value = thirdPartyDataList.length; + }, + child: Text('AboutPage_ThirdPartyLicenses_DisplayAll'.tr), + ), ), ), ], diff --git a/kitx_mobile/lib/pages/controls/contributor_chip.dart b/kitx_mobile/lib/pages/controls/contributor_chip.dart index 1406faf..db7fdfd 100644 --- a/kitx_mobile/lib/pages/controls/contributor_chip.dart +++ b/kitx_mobile/lib/pages/controls/contributor_chip.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:kitx_mobile/instances.dart'; +import 'package:kitx_mobile/utils/handlers/vibration_handler.dart'; /// Contributor Chip class ContributorChip extends StatelessWidget { @@ -14,7 +15,10 @@ class ContributorChip extends StatelessWidget { return Chip( label: Text(name), deleteIcon: const Icon(Icons.open_in_new), - onDeleted: () => instances.urlHandler.open(url), + onDeleted: () { + VibrationHandler.tryVibrate(); + instances.urlHandler.open(url); + }, deleteButtonTooltipMessage: '', ); } diff --git a/kitx_mobile/lib/pages/controls/repo_button.dart b/kitx_mobile/lib/pages/controls/repo_button.dart index 8534156..e75faa0 100644 --- a/kitx_mobile/lib/pages/controls/repo_button.dart +++ b/kitx_mobile/lib/pages/controls/repo_button.dart @@ -1,6 +1,7 @@ import 'package:community_material_icon/community_material_icon.dart'; import 'package:flutter/material.dart'; import 'package:kitx_mobile/instances.dart'; +import 'package:kitx_mobile/utils/handlers/vibration_handler.dart'; /// Repo Button class RepoButton extends StatelessWidget { @@ -13,7 +14,10 @@ class RepoButton extends StatelessWidget { @override Widget build(BuildContext context) { return ElevatedButton.icon( - onPressed: () => instances.urlHandler.open(url), + onPressed: () { + VibrationHandler.tryVibrate(); + instances.urlHandler.open(url); + }, label: Text(name), icon: name == 'GitHub' ? const Icon(CommunityMaterialIcons.github) : const Icon(CommunityMaterialIcons.git), ); diff --git a/kitx_mobile/lib/pages/home_page.dart b/kitx_mobile/lib/pages/home_page.dart index 5595be1..eab90dd 100644 --- a/kitx_mobile/lib/pages/home_page.dart +++ b/kitx_mobile/lib/pages/home_page.dart @@ -233,7 +233,9 @@ class HomePage extends StatelessWidget implements ConstantPage { subtitle: isLandscape ? const Text('no notifications') : null, trailing: const Icon(Icons.keyboard_arrow_right), shape: tileRadius, - onTap: () => (() => Get.toNamed(SettingsPage.getRoute())).tryVibrate().delay(milliseconds: config.delayOpenPageInHomePage.value ? pageOpenDelay : 0).execute(), + onTap: () => (() => Get.toNamed( + SettingsPage.getRoute(), + )).tryVibrate().delay(milliseconds: config.delayOpenPageInHomePage.value ? pageOpenDelay : 0).execute(), ), ), ), diff --git a/kitx_mobile/lib/pages/settings_page.dart b/kitx_mobile/lib/pages/settings_page.dart index 39b4bd0..bf34298 100644 --- a/kitx_mobile/lib/pages/settings_page.dart +++ b/kitx_mobile/lib/pages/settings_page.dart @@ -62,20 +62,21 @@ class _SettingsPageState extends State { padding: EdgeInsets.all(0), icon: const Icon(Icons.translate), position: PopupMenuPosition.under, + onOpened: () => VibrationHandler.tryVibrate(), itemBuilder: (context) => [ PopupMenuItem( child: const Text('简体中文'), onTap: () => () { instances.appInfo.languageCodeProperty = 'zh-CN'; SettingsPage.saveChanges(); - }.delay(milliseconds: 200).execute(), + }.tryVibrate().delay(milliseconds: 200).execute(), ), PopupMenuItem( child: const Text('English (US)'), onTap: () => () { instances.appInfo.languageCodeProperty = 'en-US'; SettingsPage.saveChanges(); - }.delay(milliseconds: 200).execute(), + }.tryVibrate().delay(milliseconds: 200).execute(), ), ], ), diff --git a/kitx_mobile/lib/pages/settings_pages/appearance_settings_page.dart b/kitx_mobile/lib/pages/settings_pages/appearance_settings_page.dart index defe486..719c6af 100644 --- a/kitx_mobile/lib/pages/settings_pages/appearance_settings_page.dart +++ b/kitx_mobile/lib/pages/settings_pages/appearance_settings_page.dart @@ -7,6 +7,7 @@ import 'package:kitx_mobile/pages/pages.dart'; import 'package:kitx_mobile/utils/composer.dart'; import 'package:kitx_mobile/utils/config.dart'; import 'package:kitx_mobile/utils/handlers/tasks/delayed_task.dart'; +import 'package:kitx_mobile/utils/handlers/vibration_handler.dart'; import 'package:kitx_mobile/utils/themes/light_theme.dart'; /// Exterior Settings Page @@ -74,6 +75,7 @@ class _AppearanceSettingsPageState extends State { // selectedIcon: Icon(Icons.check), showSelectedIcon: false, onSelectionChanged: (Set newSelection) { + VibrationHandler.tryVibrate(); selectedMode.value = newSelection.first; instances.appInfo.themeModeProperty = newSelection.first; // Global.themeMode = newSelection.first, @@ -94,6 +96,7 @@ class _AppearanceSettingsPageState extends State { () => Switch.adaptive( value: useMaterial3.value, onChanged: (selection) { + VibrationHandler.tryVibrate(); instances.appInfo.updateTheme(useMaterial3: selection); useMaterial3.value = selection; SettingsPage.saveChanges(); @@ -121,6 +124,7 @@ class _AppearanceSettingsPageState extends State { () => Switch.adaptive( value: instances.appInfo.animationEnabled.value, onChanged: (selection) { + VibrationHandler.tryVibrate(); instances.appInfo.animationEnabled.value = selection; SettingsPage.saveChanges(); }, @@ -139,6 +143,7 @@ class _AppearanceSettingsPageState extends State { () => Switch.adaptive( value: config.delayOpenPageInHomePage.value, onChanged: (selection) { + VibrationHandler.tryVibrate(); config.delayOpenPageInHomePage.value = selection; SettingsPage.saveChanges(); }, diff --git a/kitx_mobile/lib/pages/settings_pages/log_settings_page.dart b/kitx_mobile/lib/pages/settings_pages/log_settings_page.dart index d97a317..43b4991 100644 --- a/kitx_mobile/lib/pages/settings_pages/log_settings_page.dart +++ b/kitx_mobile/lib/pages/settings_pages/log_settings_page.dart @@ -5,6 +5,7 @@ import 'package:kitx_mobile/pages/controls/settings_group_divider.dart'; import 'package:kitx_mobile/pages/controls/settings_group_title.dart'; import 'package:kitx_mobile/pages/pages.dart'; import 'package:kitx_mobile/utils/composer.dart'; +import 'package:kitx_mobile/utils/handlers/vibration_handler.dart'; /// Log Settings Page class LogSettingsPage extends StatefulWidget implements ConstantPage { @@ -47,7 +48,9 @@ class _LogSettingsPageState extends State { Obx( () => DropdownButton( value: logLevelRange.value.$1, + onTap: () => VibrationHandler.tryVibrate(), onChanged: (newLevel) { + VibrationHandler.tryVibrate(); CherriLog.instance = CherriLog.instance! ..withOptions( CherriLog.instance!.options..logLevelRange = (newLevel!, logLevelRange.value.$2), @@ -71,7 +74,9 @@ class _LogSettingsPageState extends State { Obx( () => DropdownButton( value: logLevelRange.value.$2, + onTap: () => VibrationHandler.tryVibrate(), onChanged: (newLevel) { + VibrationHandler.tryVibrate(); CherriLog.instance = CherriLog.instance! ..withOptions( CherriLog.instance!.options..logLevelRange = (logLevelRange.value.$1, newLevel!), diff --git a/kitx_mobile/lib/pages/test_pages/sensors_display_stands/acceleration_display_stand.dart b/kitx_mobile/lib/pages/test_pages/sensors_display_stands/acceleration_display_stand.dart index 4fa0f73..44e7c98 100644 --- a/kitx_mobile/lib/pages/test_pages/sensors_display_stands/acceleration_display_stand.dart +++ b/kitx_mobile/lib/pages/test_pages/sensors_display_stands/acceleration_display_stand.dart @@ -4,6 +4,7 @@ import 'dart:math'; import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:kitx_mobile/utils/handlers/vibration_handler.dart'; import 'package:sensors_plus/sensors_plus.dart'; /// AccelerationDisplayStand @@ -204,6 +205,7 @@ class AccelerationDisplayStandState extends State { ? const Text('No sensor data, you are seeing random data.') : ElevatedButton( onPressed: () { + VibrationHandler.tryVibrate(); if (userAccelerometerDataListener?.isPaused ?? true) { userAccelerometerDataListener?.resume(); listenerPaused.value = false; diff --git a/kitx_mobile/lib/pages/test_pages/sensors_display_stands/gyroscope_display_stand.dart b/kitx_mobile/lib/pages/test_pages/sensors_display_stands/gyroscope_display_stand.dart index 5d4769c..81449ff 100644 --- a/kitx_mobile/lib/pages/test_pages/sensors_display_stands/gyroscope_display_stand.dart +++ b/kitx_mobile/lib/pages/test_pages/sensors_display_stands/gyroscope_display_stand.dart @@ -4,6 +4,7 @@ import 'dart:math'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:kitx_mobile/utils/emulators/rotation_emulator.dart'; +import 'package:kitx_mobile/utils/handlers/vibration_handler.dart'; import 'package:sensors_plus/sensors_plus.dart'; import 'package:vector_math/vector_math.dart' as vector_math; @@ -115,6 +116,7 @@ class GyroscopeDisplayStandState extends State { painter: painter, ), onTap: () { + VibrationHandler.tryVibrate(); if (gyroscopeDataListener != null) { if (gyroscopeDataListener?.isPaused ?? true) { gyroscopeDataListener?.resume();