diff --git a/lib/data/model/app/net_view.dart b/lib/data/model/app/net_view.dart index 8e95c0d8..2add87b8 100644 --- a/lib/data/model/app/net_view.dart +++ b/lib/data/model/app/net_view.dart @@ -1,6 +1,8 @@ import 'package:hive_flutter/hive_flutter.dart'; import 'package:toolbox/data/model/server/server_status.dart'; +part 'net_view.g.dart'; + @HiveType(typeId: 5) enum NetViewType { @HiveField(0) diff --git a/lib/data/model/app/net_view.g.dart b/lib/data/model/app/net_view.g.dart new file mode 100644 index 00000000..a28456de --- /dev/null +++ b/lib/data/model/app/net_view.g.dart @@ -0,0 +1,51 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'net_view.dart'; + +// ************************************************************************** +// TypeAdapterGenerator +// ************************************************************************** + +class NetViewTypeAdapter extends TypeAdapter { + @override + final int typeId = 5; + + @override + NetViewType read(BinaryReader reader) { + switch (reader.readByte()) { + case 0: + return NetViewType.count; + case 1: + return NetViewType.speed; + case 2: + return NetViewType.size; + default: + return NetViewType.count; + } + } + + @override + void write(BinaryWriter writer, NetViewType obj) { + switch (obj) { + case NetViewType.count: + writer.writeByte(0); + break; + case NetViewType.speed: + writer.writeByte(1); + break; + case NetViewType.size: + writer.writeByte(2); + break; + } + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is NetViewTypeAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} diff --git a/lib/main.dart b/lib/main.dart index 078c1095..99f93e92 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -5,6 +5,7 @@ import 'package:hive_flutter/hive_flutter.dart'; import 'package:logging/logging.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import 'package:toolbox/data/model/app/net_view.dart'; import 'package:toolbox/data/model/ssh/virtual_key.dart'; import 'app.dart'; @@ -55,6 +56,7 @@ Future initHive() async { Hive.registerAdapter(SnippetAdapter()); Hive.registerAdapter(ServerPrivateInfoAdapter()); Hive.registerAdapter(VirtKeyAdapter()); + Hive.registerAdapter(NetViewTypeAdapter()); } void runInZone(dynamic Function() body) { diff --git a/lib/view/page/server/tab.dart b/lib/view/page/server/tab.dart index d463721c..895f9564 100644 --- a/lib/view/page/server/tab.dart +++ b/lib/view/page/server/tab.dart @@ -49,7 +49,6 @@ class _ServerPageState extends State late ServerProvider _serverProvider; late SettingStore _settingStore; late S _s; - late NetViewType _netViewType; String? _tag; @@ -58,7 +57,6 @@ class _ServerPageState extends State super.initState(); _serverProvider = locator(); _settingStore = locator(); - _netViewType = _settingStore.netViewType.fetch() ?? NetViewType.speed; } @override @@ -333,10 +331,15 @@ class _ServerPageState extends State } Widget _buildNet(ServerStatus ss) { - final data = _netViewType.build(ss); - return AnimatedSwitcher( - duration: const Duration(milliseconds: 177), - child: _buildIOData(data.up, data.down), + return ValueListenableBuilder( + valueListenable: _settingStore.netViewType.listenable(), + builder: (_, val, __) { + final data = val.build(ss); + return AnimatedSwitcher( + duration: const Duration(milliseconds: 177), + child: _buildIOData(data.up, data.down), + ); + }, ); } diff --git a/lib/view/page/setting.dart b/lib/view/page/setting.dart index ac59abe3..5b5ca141 100644 --- a/lib/view/page/setting.dart +++ b/lib/view/page/setting.dart @@ -924,7 +924,7 @@ class _SettingPageState extends State { ), ), onTap: () { - _keyboardTypeKey.currentState?.showButtonMenu(); + _netViewTypeKey.currentState?.showButtonMenu(); }, ); }