improve code

This commit is contained in:
nyne
2024-10-08 17:28:09 +08:00
parent 5deb71e10a
commit 12463208a6
4 changed files with 34 additions and 14 deletions

View File

@@ -127,13 +127,15 @@ class _NaviPaneState extends State<NaviPane>
} }
if (target == 1) { if (target == 1) {
StateController.find<NaviPaddingWidgetController>() StateController.find<NaviPaddingWidgetController>()
.setWithPadding(true); .setWithPadding(true, true);
controller.value = target; controller.value = target;
} else if (controller.value == 1 && target == 0) { } else if (controller.value == 1 && target == 0) {
StateController.findOrNull<NaviPaddingWidgetController>() StateController.findOrNull<NaviPaddingWidgetController>()
?.setWithPadding(false); ?.setWithPadding(false, false);
controller.value = target; controller.value = target;
} else { } else {
StateController.findOrNull<NaviPaddingWidgetController>()
?.setWithPadding(true, false);
controller.animateTo(target); controller.animateTo(target);
} }
animationTarget = target; animationTarget = target;
@@ -181,14 +183,14 @@ class _NaviPaneState extends State<NaviPane>
), ),
Positioned( Positioned(
top: _kTopBarHeight * ((1 - value).clamp(0, 1)) + 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)) + left: _kFoldedSideBarWidth * ((value - 1).clamp(0, 1)) +
(_kSideBarWidth - _kFoldedSideBarWidth) * (_kSideBarWidth - _kFoldedSideBarWidth) *
((value - 2).clamp(0, 1)), ((value - 2).clamp(0, 1)),
right: 0, right: 0,
bottom: bottomBarHeight * ((1 - value).clamp(0, 1)), bottom: bottomBarHeight * ((1 - value).clamp(0, 1)),
child: MediaQuery.removePadding( child: MediaQuery.removePadding(
removeTop: value >= 2 || value == 0, removeTop: value == 0,
context: context, context: context,
child: Material(child: widget.pageBuilder(currentPage)), child: Material(child: widget.pageBuilder(currentPage)),
), ),
@@ -656,8 +658,11 @@ class NaviPaddingWidgetController extends StateController {
bool _withPadding = false; bool _withPadding = false;
void setWithPadding(bool value) { bool _withTopBarPadding = false;
_withPadding = value;
void setWithPadding(bool withPadding, bool withAppbarPadding) {
_withPadding = withPadding;
_withTopBarPadding = withAppbarPadding;
update(); update();
} }
} }
@@ -674,7 +679,10 @@ class NaviPaddingWidget extends StatelessWidget {
return Padding( return Padding(
padding: controller._withPadding padding: controller._withPadding
? EdgeInsets.only( ? EdgeInsets.only(
top: _NaviPaneState._kTopBarHeight + context.padding.top, top: context.padding.top +
(controller._withTopBarPadding
? _NaviPaneState._kTopBarHeight
: 0),
bottom: bottom:
_NaviPaneState._kBottomBarHeight + context.padding.bottom, _NaviPaneState._kBottomBarHeight + context.padding.bottom,
) )

View File

@@ -8,10 +8,20 @@ class _Appdata {
var searchHistory = <String>[]; var searchHistory = <String>[];
void saveData() async { bool _isSavingData = false;
Future<void> saveData() async {
if(_isSavingData) {
await Future.doWhile(() async {
await Future.delayed(const Duration(milliseconds: 20));
return _isSavingData;
});
}
_isSavingData = true;
var data = jsonEncode(toJson()); var data = jsonEncode(toJson());
var file = File(FilePath.join(App.dataPath, 'appdata.json')); var file = File(FilePath.join(App.dataPath, 'appdata.json'));
await file.writeAsString(data); await file.writeAsString(data);
_isSavingData = false;
} }
void addSearchHistory(String keyword) { void addSearchHistory(String keyword) {
@@ -42,7 +52,9 @@ class _Appdata {
} }
var json = jsonDecode(await file.readAsString()); var json = jsonDecode(await file.readAsString());
for(var key in json['settings'].keys) { for(var key in json['settings'].keys) {
settings[key] = json[key]; if(json[key] != null) {
settings[key] = json[key];
}
} }
searchHistory = List.from(json['searchHistory']); searchHistory = List.from(json['searchHistory']);
} }
@@ -88,4 +100,9 @@ class _Settings {
operator[]=(String key, dynamic value) { operator[]=(String key, dynamic value) {
_data[key] = value; _data[key] = value;
} }
@override
String toString() {
return _data.toString();
}
} }

View File

@@ -3,7 +3,6 @@ import 'dart:io';
import 'dart:math' as math; import 'dart:math' as math;
import 'package:crypto/crypto.dart'; import 'package:crypto/crypto.dart';
import 'package:dio/dio.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:html/parser.dart' as html; import 'package:html/parser.dart' as html;
import 'package:html/dom.dart' as dom; import 'package:html/dom.dart' as dom;

View File

@@ -3,15 +3,12 @@ part of 'settings_page.dart';
class _SwitchSetting extends StatefulWidget { class _SwitchSetting extends StatefulWidget {
const _SwitchSetting({ const _SwitchSetting({
required this.title, required this.title,
this.subtitle,
required this.settingKey, required this.settingKey,
this.onChanged, this.onChanged,
}); });
final String title; final String title;
final String? subtitle;
final String settingKey; final String settingKey;
final VoidCallback? onChanged; final VoidCallback? onChanged;
@@ -27,7 +24,6 @@ class _SwitchSettingState extends State<_SwitchSetting> {
return ListTile( return ListTile(
title: Text(widget.title), title: Text(widget.title),
subtitle: widget.subtitle == null ? null : Text(widget.subtitle!),
trailing: Switch( trailing: Switch(
value: appdata.settings[widget.settingKey], value: appdata.settings[widget.settingKey],
onChanged: (value) { onChanged: (value) {