Flutter外观管理插件appearance的使用
Flutter外观管理插件appearance的使用
Appearance
Flutter
包,可以轻松地在您的应用中实现浅色、深色和系统主题模式,并且在应用重启时持久化主题模式。
🚀 示例:Appearance
屏幕截图
安装
1. 在 pubspec.yaml
文件中添加依赖项:
获取最新版本,请参阅 pub.dev 的 “安装” 选项卡。
dependencies:
appearance: ^latest_version
2. 导入包
import 'package:appearance/appearance.dart';
如何使用
1. 初始化 SharedPreferencesManager
单例以使用 SharedPreferences
,并在 runApp()
方法之前调用。
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await SharedPreferencesManager.instance.init();
runApp(const MyApp());
}
2. 使用关键字 with
扩展您的根类 AppearanceState
。
class _MyAppState extends State<MyApp> with AppearanceState { }
3. 将您的 MaterialApp
或 CupertinoApp
包裹在 BuildWithAppearance
中。
BuildWithAppearance(
initial: ThemeMode.light, // 可选参数,默认值为 [ThemeMode.system]
builder: (context) => MaterialApp()
);
使用 MaterialApp
BuildWithAppearance(
initial: ThemeMode.light, // 可选参数,默认值为 [ThemeMode.system]
builder: (context) => MaterialApp(
title: 'Appearance (Material Example)',
themeMode: Appearance.of(context)?.mode,
theme: ThemeData(
brightness: Brightness.light,
),
darkTheme: ThemeData(
brightness: Brightness.dark,
),
home: const HomeMaterialPage(),
),
);
使用 CupertinoApp
BuildWithAppearance(
initial: ThemeMode.light, // 可选参数,默认值为 [ThemeMode.system]
builder: (context) {
return CupertinoApp(
title: 'Appearance (Cupertino Example)',
theme: CupertinoThemeData(
brightness: Appearance.of(context)?.cupertinoBrightness!,
),
localizationsDelegates: const [
DefaultMaterialLocalizations.delegate,
DefaultCupertinoLocalizations.delegate,
DefaultWidgetsLocalizations.delegate,
],
home: HomeCupertinoPage(),
);
},
);
特性
- 浅色、深色和系统 模式选项,用于更改应用程序的主题。
- 主题持久化:使用
SharedPreferences
保存主题,并在重启时保持不变。 - 自动监听主题模式变化,无需额外添加监听器。
- 支持
Material
和Cupertino
应用。
参数
- initial: [可选] 设置应用的初始
ThemeMode
。默认值为ThemeMode.system
。
更改主题模式
您可以使用 setMode
方法来更改应用的主题模式。
// 设置主题模式为系统
Appearance.of(context)?.setMode(ThemeMode.system),
// 设置主题模式为浅色
Appearance.of(context)?.setMode(ThemeMode.light),
// 设置主题模式为深色
Appearance.of(context)?.setMode(ThemeMode.dark),
获取主题模式
// 获取当前活动的主题模式
Appearance.of(context)?.mode
获取 Cupertino 主题亮度
// 获取当前活动的 Cupertino 主题亮度
Appearance.of(context)?.cupertinoBrightness!,
更多关于Flutter外观管理插件appearance的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复