Flutter基本设置管理插件basic_settings的使用
Flutter基本设置管理插件basic_settings的使用
基本介绍
basic_settings
是一个基于 Hive 盒子和 MobX 可观察对象的基本设置模型,同时提供了与之相关的用户界面组件。它可以帮助开发者轻松地管理和展示应用的各种设置。
许可证
https://github.com/holvonix-open/basic-settings
Copyright (c) 2020 Holvonix LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
使用示例
以下是一个完整的示例代码,展示了如何使用 basic_settings
插件来管理应用的设置。
示例代码
import 'package:basic_settings/basic_settings.dart';
import 'package:flutter/material.dart';
import 'package:hive/hive.dart';
import 'package:hive_flutter/hive_flutter.dart';
// 定义设置类
class Settings {
// 异步加载设置
static Future<Settings> load(HiveInterface hive, String name) async {
return Settings._(await hive.openBox('ex1'));
}
final Box _box;
Settings._(this._box)
// 定义各种设置项
: dingSetting = Setting.simple(_box, 'ding', defaultValue: false),
dinosaursSetting =
Setting.simple(_box, 'dinosaursRawr', defaultValue: true),
themeSetting = Setting.enumValue(_box, 'themeSetting',
values: ThemeSetting.values, defaultValue: ThemeSetting.system),
cacheSetting =
Setting.simple(_box, 'cacheSetting', defaultValue: 250.0);
// 清除所有设置
void clear() async {
await _box.clear();
}
// 各种设置项
final Setting<bool, bool> dingSetting;
final Setting<bool, bool> dinosaursSetting;
final Setting<ThemeSetting, int> themeSetting;
final Setting<double, double> cacheSetting;
}
// 定义设置页面
class SettingsPage extends StatelessWidget {
final Settings settings;
const SettingsPage({Key? key, required this.settings}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
// 定义设置项列表
final children = [
BoolSetting(settings.dingSetting, '通知',
description: '播放叮咚音效!'),
EnumSetting(settings.themeSetting, '主题',
values: [ThemeSetting.system, ThemeSetting.light, ThemeSetting.dark],
names: ['系统', '浅色', '深色']),
RangeSetting(settings.cacheSetting, '缓存大小 (MB)', min: 0, max: 1000),
BoolSetting(settings.dinosaursSetting, '启用恐龙模式'),
SizedBox(
height: 64,
),
];
return Material(
color: Theme.of(context).scaffoldBackgroundColor,
child: SafeArea(
child: ListView(
shrinkWrap: true,
children: ListTile.divideTiles(
tiles: children,
context: context,
).toList()));
}
}
void main() async {
// 初始化 Hive 和 Flutter
WidgetsFlutterBinding.ensureInitialized();
await Hive.initFlutter();
// 加载设置
runApp(MyApp(settings: await Settings.load(Hive, 'settings')));
}
// 主应用
class MyApp extends StatelessWidget {
final Settings settings;
const MyApp({Key? key, required this.settings}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter 示例',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: SettingsPage(settings: settings),
);
}
}
更多关于Flutter基本设置管理插件basic_settings的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter基本设置管理插件basic_settings的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,basic_settings
是一个用于管理应用基本设置的插件。它可以帮助你轻松地存储和检索应用的配置信息,如用户偏好、应用设置等。以下是如何使用 basic_settings
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 basic_settings
插件的依赖:
dependencies:
flutter:
sdk: flutter
basic_settings: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在你的 Dart 文件中导入 basic_settings
插件:
import 'package:basic_settings/basic_settings.dart';
3. 初始化设置
在使用 basic_settings
之前,你需要初始化它。通常,你可以在 main()
函数中进行初始化:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await BasicSettings.init();
runApp(MyApp());
}
4. 存储和读取设置
basic_settings
提供了简单的方法来存储和读取设置。以下是一些常用的操作:
存储设置
你可以使用 set
方法来存储一个键值对:
await BasicSettings.set('theme', 'dark');
读取设置
你可以使用 get
方法来读取一个键对应的值:
String theme = await BasicSettings.get('theme', defaultValue: 'light');
删除设置
你可以使用 remove
方法来删除一个键值对:
await BasicSettings.remove('theme');
检查是否存在
你可以使用 containsKey
方法来检查某个键是否存在:
bool hasTheme = await BasicSettings.containsKey('theme');
5. 示例代码
以下是一个完整的示例,展示了如何使用 basic_settings
来管理应用的主题设置:
import 'package:flutter/material.dart';
import 'package:basic_settings/basic_settings.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await BasicSettings.init();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Basic Settings Demo',
theme: ThemeData.light(),
darkTheme: ThemeData.dark(),
themeMode: _getThemeMode(),
home: SettingsScreen(),
);
}
ThemeMode _getThemeMode() {
String theme = BasicSettings.get('theme', defaultValue: 'light');
return theme == 'dark' ? ThemeMode.dark : ThemeMode.light;
}
}
class SettingsScreen extends StatefulWidget {
[@override](/user/override)
_SettingsScreenState createState() => _SettingsScreenState();
}
class _SettingsScreenState extends State<SettingsScreen> {
String _theme = 'light';
[@override](/user/override)
void initState() {
super.initState();
_loadTheme();
}
void _loadTheme() async {
String theme = await BasicSettings.get('theme', defaultValue: 'light');
setState(() {
_theme = theme;
});
}
void _toggleTheme() async {
String newTheme = _theme == 'light' ? 'dark' : 'light';
await BasicSettings.set('theme', newTheme);
setState(() {
_theme = newTheme;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Settings'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Current Theme: $_theme'),
ElevatedButton(
onPressed: _toggleTheme,
child: Text('Toggle Theme'),
),
],
),
),
);
}
}