Flutter Provider 使用指南详解
import 'package:flutter/material.dart';
// 引入Provider包
import 'package:provider/provider.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// 此处省略MaterialApp的定义...
// 创建一个ChangeNotifier,用于管理应用主题
final themeNotifier = ThemeNotifier();
// 使用Builder来访问context,从而使用Provider
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
// 将ChangeNotifierProvider.value作为主题提供者
ChangeNotifierProvider.value(value: themeNotifier),
],
child: Consumer<ThemeNotifier>(
builder: (context, themeNotifier, child) {
return MaterialApp(
theme: themeNotifier.isDarkTheme ? darkTheme : lightTheme,
// 省略其他属性...
);
},
),
);
}
}
// 定义一个ChangeNotifier,用于主题切换
class ThemeNotifier with ChangeNotifier {
bool _isDarkTheme = false;
bool get isDarkTheme => _isDarkTheme;
void switchTheme() {
_isDarkTheme = !_isDarkTheme;
notifyListeners(); // 通知监听器主题已更改
}
}
// 定义深色和浅色主题
final darkTheme = ThemeData.dark();
final lightTheme = ThemeData.light();
这个代码示例展示了如何在Flutter应用中使用Provider包来管理应用主题。我们创建了一个ThemeNotifier
类,它实现了ChangeNotifier
接口,并用于切换主题。在MyApp
的build
方法中,我们使用ChangeNotifierProvider.value
来提供ThemeNotifier
的实例,并使用Consumer
来监听主题变化并更新应用的主题。
评论已关闭