# {frontmatter.title}
```dart
在本章中,我们将学习如何使用 Provider 进行状态管理。
## Provider 简介
Provider 是 Flutter 中常用的状态管理方案。
## 实现状态管理
```dart
class HotKeySettings extends ChangeNotifier {
HotKey? _globalHotKey;
HotKey? get globalHotKey => _globalHotKey;
void setGlobalHotKey(HotKey hotKey) {
_globalHotKey = hotKey;
notifyListeners();
}
}
class HotKeyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => HotKeySettings(),
child: MaterialApp(
home: HotKeySettingsPage(),
),
);
}
}
class HotKeySettingsPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('快捷键设置'),
),
body: Consumer<HotKeySettings>(
builder: (context, settings, child) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'当前快捷键:${settings.globalHotKey?.toString() ?? "未设置"}',
style: Theme.of(context).textTheme.titleMedium,
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
// 显示快捷键录制界面
final newHotKey = await showDialog<HotKey>(
context: context,
builder: (context) => HotKeyRecordDialog(),
);
if (newHotKey != null) {
context.read<HotKeySettings>().setGlobalHotKey(newHotKey);
}
},
child: Text('设置新快捷键'),
),
],
);
},
),
);
}
}
## 常见问题
1. **Provider 的使用**
- 使用 `Consumer` 访问状态
- 使用 `context.read()` 读取状态
2. **状态更新**
- 调用 `notifyListeners()` 通知监听器
## 下一步
在下一章中,我们将学习如何打包和发布应用。