Flutter状态管理插件getx_baik的使用
Flutter状态管理插件getx_baik的使用
Getx Baik
[灵感来源于Getx] 本项目仅用于教育和研究目的。 对于生产环境,我不能保证其稳定性。 但是,基础的状态管理只是使用了Flutter自带的setState。
对于导航也没有额外的库, 使用的导航已经是无上下文的。
Getx目前相当流行, 但由于提供了太多功能, 有些开发者可能会选择使用更简单的状态管理工具。 另外,还有一些事情在论坛上引起了一些混乱, 但在我看来这并不是问题,因为这种情况在开源项目中很常见。 无论谁对谁错,我都承认Getx的目标已经实现, 即为了方便开发人员XD。
特别是对于像我这样比较懒的程序员XD XD, 因此就有了Getx Baik,这是一个受Getx启发的项目。 无上下文且易于使用!
Key
- Get.width
- Get.height
- GetWidget
- GetxController
- Get.to
- Get.offAll
- Get.back
Catatan
- 使用GetBuilder包装意味着在背后使用了StatefulWidget
尚未提供
- .obs
- …
- …
示例项目
Getting Started
main.dart
import 'package:getx_baik/shared/get/get.dart';
import 'package:getx_baik/shared/get/get_builder.dart';
import 'package:getx_baik/shared/get/get_material_app.dart';
import 'package:getx_baik/shared/get/getx_controller.dart';
import 'package:flutter/material.dart';
void main() {
runApp(GetMaterialApp(
title: 'Flutter Demo',
navigatorKey: Get.navigatorKey,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomeView(),
));
}
class HomeController extends GetxController {
bool loading = false;
}
class HomeView extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return GetBuilder<HomeController>(
init: HomeController(),
builder: (controller) {
return Scaffold(
appBar: AppBar(
title: Text("Home View"),
),
body: Container(
width: Get.width,
padding: EdgeInsets.all(20.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
// 如果loading为true,则显示加载指示器
if (controller.loading == true)
Center(
child: CircularProgressIndicator(),
),
// 如果loading为false,则显示点击按钮
if (controller.loading == false)
InkWell(
onTap: () async {
// 设置loading为true
controller.loading = true;
// 更新界面
controller.update();
// 模拟异步操作
await Future.delayed(Duration(seconds: 1));
// 设置loading为false
controller.loading = false;
// 更新界面
controller.update();
},
child: Card(
color: Colors.orange[400],
child: Container(
padding: EdgeInsets.all(20.0),
child: Text("Test Loading"),
),
),
),
],
),
),
);
},
);
}
}
示例代码
import 'package:getx_baik/shared/get/get.dart';
import 'package:getx_baik/shared/get/get_builder.dart';
import 'package:getx_baik/shared/get/get_material_app.dart';
import 'package:getx_baik/shared/get/getx_controller.dart';
import 'package:flutter/material.dart';
void main() {
runApp(GetMaterialApp(
title: 'Flutter Demo',
navigatorKey: Get.navigatorKey,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomeView(),
));
}
class HomeController extends GetxController {
bool loading = false;
}
class HomeView extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return GetBuilder<HomeController>(
init: HomeController(),
builder: (controller) {
return Scaffold(
appBar: AppBar(
title: Text("Home View"),
),
body: Container(
width: Get.width,
padding: EdgeInsets.all(20.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (controller.loading == true)
Center(
child: CircularProgressIndicator(),
),
if (controller.loading == false)
InkWell(
onTap: () async {
controller.loading = true;
controller.update();
await Future.delayed(Duration(seconds: 1));
controller.loading = false;
controller.update();
},
child: Card(
color: Colors.orange[400],
child: Container(
padding: EdgeInsets.all(20.0),
child: Text("Test Loading"),
),
),
),
],
),
),
);
},
);
}
}
更多关于Flutter状态管理插件getx_baik的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter状态管理插件getx_baik的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter开发中,getx
是一个非常流行的状态管理库,它提供了简单而强大的方式来管理应用状态。尽管你提到的 getx_baik
并不是一个官方或广泛认知的库,我假设你可能是想询问如何使用 getx
进行状态管理。以下是一个关于如何使用 getx
的示例,展示如何在Flutter应用中进行状态管理。
安装 GetX
首先,确保你已经在 pubspec.yaml
文件中添加了 get
依赖:
dependencies:
flutter:
sdk: flutter
get: ^4.0.0 # 请检查最新版本号
然后运行 flutter pub get
来安装依赖。
创建一个简单的计数器应用
以下是一个使用 GetX
的简单计数器应用的完整示例:
- 创建控制器类
首先,我们需要创建一个控制器类来管理状态。这个类将继承自 GetxController
。
import 'package:get/get.dart';
class CounterController extends GetxController {
var count = 0.obs; // 使用 .obs 创建可观察对象
void increment() {
count++;
}
}
- 在主应用中初始化 GetX
在你的 main.dart
文件中,确保你使用了 GetMaterialApp
而不是 MaterialApp
。
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'counter_controller.dart'; // 导入你的控制器
void main() {
runApp(GetMaterialApp(
home: CounterPage(),
));
}
- 创建 UI 页面
接下来,创建一个页面来使用这个控制器。
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'counter_controller.dart'; // 导入你的控制器
class CounterPage extends StatelessWidget {
final CounterController controller = Get.put(CounterController()); // 获取控制器实例
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('GetX Counter'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Obx(() => Text(
'${controller.count}',
style: Theme.of(context).textTheme.headline4,
)),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: controller.increment, // 调用控制器中的方法
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
在这个示例中,我们使用了 Obx
小部件来监听 count
变量的变化。当 count
变量改变时(通过调用 increment
方法),Obx
小部件会重建 UI 以反映最新的值。
总结
以上代码展示了如何使用 GetX
库进行状态管理。通过创建一个继承自 GetxController
的控制器类,并在你的页面中使用 Get.put
获取控制器实例,你可以轻松地管理应用的状态。使用 Obx
或 GetX
小部件来监听状态变化,并在状态改变时自动更新 UI。
希望这个示例能帮助你理解如何使用 GetX
进行状态管理!如果你有其他关于 GetX
或 Flutter 的问题,欢迎继续提问。