1. 文档/资源/博客
2. 使用GetX
GetX是一个第三方状态管理插件。Flutter的状态管理方案还有:redux、bloc、state、provider[官方方案]。
GetX的主要功能:状态管理、路由管理、主题管理、国际化、Obx局部更新、网络请求、数据验证等。
Some examples:
-
Get.changeTheme()
切换主题,搭配食用Get.bottomSheet
1@override2Widget build(BuildContext context) {3return GetMaterialApp(4home: Scaffold(5appBar: AppBar(6title: const Text("changeTheme 示例"),7),8body: Center(9child: Column(10mainAxisAlignment: MainAxisAlignment.center,11crossAxisAlignment: CrossAxisAlignment.center,12children: [13ElevatedButton(14onPressed: () {15Get.bottomSheet(Wrap(25 collapsed lines16children: [17ListTile(18leading: const Icon(Icons.wb_sunny_outlined),19title: const Text("白天模式"),20onTap: () {21Get.changeTheme(ThemeData.light());22},23),24ListTile(25leading: const Icon(Icons.wb_sunny),26title: const Text("夜间模式"),27onTap: () {28Get.changeTheme(ThemeData.dark());29},30),31],32));33},34child: const Text("切换主题")),35],36),37),38),39);40} -
使用snackbar
1@override2Widget build(BuildContext context) {3return GetMaterialApp(4home: Scaffold(5appBar: AppBar(6title: const Text("Snackbar 示例"),7),8body: Center(9child: Column(10mainAxisAlignment: MainAxisAlignment.center,11crossAxisAlignment: CrossAxisAlignment.center,12children: [13ElevatedButton(14onPressed: () {15Get.snackbar("Snackbar 示例", "Snackbar 示例内容",10 collapsed lines16snackPosition: SnackPosition.BOTTOM,17duration: const Duration(seconds: 2));18},19child: const Text("使用 Snackbar 显示消息")),20],21),22),23),24);25}