From 12463208a67917a057ec0673f1c41fa031f7e330 Mon Sep 17 00:00:00 2001 From: nyne Date: Tue, 8 Oct 2024 17:28:09 +0800 Subject: [PATCH] improve code --- lib/components/navigation_bar.dart | 22 +++++++++++++++------- lib/foundation/appdata.dart | 21 +++++++++++++++++++-- lib/foundation/js_engine.dart | 1 - lib/pages/settings/setting_components.dart | 4 ---- 4 files changed, 34 insertions(+), 14 deletions(-) diff --git a/lib/components/navigation_bar.dart b/lib/components/navigation_bar.dart index b75c6b0..2b9d84e 100644 --- a/lib/components/navigation_bar.dart +++ b/lib/components/navigation_bar.dart @@ -127,13 +127,15 @@ class _NaviPaneState extends State } if (target == 1) { StateController.find() - .setWithPadding(true); + .setWithPadding(true, true); controller.value = target; } else if (controller.value == 1 && target == 0) { StateController.findOrNull() - ?.setWithPadding(false); + ?.setWithPadding(false, false); controller.value = target; } else { + StateController.findOrNull() + ?.setWithPadding(true, false); controller.animateTo(target); } animationTarget = target; @@ -181,14 +183,14 @@ class _NaviPaneState extends State ), Positioned( top: _kTopBarHeight * ((1 - value).clamp(0, 1)) + - MediaQuery.of(context).padding.top * (value == 1 ? 0 : 1), + MediaQuery.of(context).padding.top * (value == 0 ? 1 : 0), left: _kFoldedSideBarWidth * ((value - 1).clamp(0, 1)) + (_kSideBarWidth - _kFoldedSideBarWidth) * ((value - 2).clamp(0, 1)), right: 0, bottom: bottomBarHeight * ((1 - value).clamp(0, 1)), child: MediaQuery.removePadding( - removeTop: value >= 2 || value == 0, + removeTop: value == 0, context: context, child: Material(child: widget.pageBuilder(currentPage)), ), @@ -656,8 +658,11 @@ class NaviPaddingWidgetController extends StateController { bool _withPadding = false; - void setWithPadding(bool value) { - _withPadding = value; + bool _withTopBarPadding = false; + + void setWithPadding(bool withPadding, bool withAppbarPadding) { + _withPadding = withPadding; + _withTopBarPadding = withAppbarPadding; update(); } } @@ -674,7 +679,10 @@ class NaviPaddingWidget extends StatelessWidget { return Padding( padding: controller._withPadding ? EdgeInsets.only( - top: _NaviPaneState._kTopBarHeight + context.padding.top, + top: context.padding.top + + (controller._withTopBarPadding + ? _NaviPaneState._kTopBarHeight + : 0), bottom: _NaviPaneState._kBottomBarHeight + context.padding.bottom, ) diff --git a/lib/foundation/appdata.dart b/lib/foundation/appdata.dart index 2f2e17c..0ae83a1 100644 --- a/lib/foundation/appdata.dart +++ b/lib/foundation/appdata.dart @@ -7,11 +7,21 @@ class _Appdata { final _Settings settings = _Settings(); var searchHistory = []; + + bool _isSavingData = false; - void saveData() async { + Future saveData() async { + if(_isSavingData) { + await Future.doWhile(() async { + await Future.delayed(const Duration(milliseconds: 20)); + return _isSavingData; + }); + } + _isSavingData = true; var data = jsonEncode(toJson()); var file = File(FilePath.join(App.dataPath, 'appdata.json')); await file.writeAsString(data); + _isSavingData = false; } void addSearchHistory(String keyword) { @@ -42,7 +52,9 @@ class _Appdata { } var json = jsonDecode(await file.readAsString()); for(var key in json['settings'].keys) { - settings[key] = json[key]; + if(json[key] != null) { + settings[key] = json[key]; + } } searchHistory = List.from(json['searchHistory']); } @@ -88,4 +100,9 @@ class _Settings { operator[]=(String key, dynamic value) { _data[key] = value; } + + @override + String toString() { + return _data.toString(); + } } \ No newline at end of file diff --git a/lib/foundation/js_engine.dart b/lib/foundation/js_engine.dart index 028d741..64f2160 100644 --- a/lib/foundation/js_engine.dart +++ b/lib/foundation/js_engine.dart @@ -3,7 +3,6 @@ import 'dart:io'; import 'dart:math' as math; import 'package:crypto/crypto.dart'; -import 'package:dio/dio.dart'; import 'package:flutter/services.dart'; import 'package:html/parser.dart' as html; import 'package:html/dom.dart' as dom; diff --git a/lib/pages/settings/setting_components.dart b/lib/pages/settings/setting_components.dart index f9880e6..02d4fc9 100644 --- a/lib/pages/settings/setting_components.dart +++ b/lib/pages/settings/setting_components.dart @@ -3,15 +3,12 @@ part of 'settings_page.dart'; class _SwitchSetting extends StatefulWidget { const _SwitchSetting({ required this.title, - this.subtitle, required this.settingKey, this.onChanged, }); final String title; - final String? subtitle; - final String settingKey; final VoidCallback? onChanged; @@ -27,7 +24,6 @@ class _SwitchSettingState extends State<_SwitchSetting> { return ListTile( title: Text(widget.title), - subtitle: widget.subtitle == null ? null : Text(widget.subtitle!), trailing: Switch( value: appdata.settings[widget.settingKey], onChanged: (value) {