Flutter _ 状态管理指南篇——Provider
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// 此处省略其他代码...
// 创建ChangeNotifier,用于管理应用主题
final ThemeNotifier themeNotifier = ThemeNotifier(theme: ThemeData.light());
// 使用Builder来获取应用的MaterialApp,并传递ChangeNotifier
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider.value(value: themeNotifier),
// 可以添加更多的Provider...
],
child: Consumer<ThemeNotifier>(
builder: (context, themeNotifier, child) {
return MaterialApp(
theme: themeNotifier.theme,
// 此处省略其他代码...
);
},
),
);
}
}
// 自定义ChangeNotifier,用于管理主题
class ThemeNotifier with ChangeNotifier {
ThemeData _theme;
ThemeNotifier({ThemeData theme}) : _theme = theme;
ThemeData get theme => _theme;
void updateTheme(ThemeData theme) {
_theme = theme;
notifyListeners(); // 通知所有监听器主题已更新
}
}
这个代码示例展示了如何在Flutter应用中使用Provider包来管理应用主题。我们创建了一个ThemeNotifier
,它包含了一个updateTheme
方法来改变应用的主题。在MyApp
的build
方法中,我们使用MultiProvider
来传递ThemeNotifier
给应用的根MaterialApp
,并使用Consumer
来响应主题更改事件。这是状态管理在Flutter中的一个简单示例。
评论已关闭