flutter getx 实战
时间: 2023-07-16 19:12:16 浏览: 206
好的,让我们来实战一下 Flutter GetX。
1. 首先,我们需要在 `pubspec.yaml` 文件中添加 GetX 的依赖。
```yaml
dependencies:
flutter:
sdk: flutter
get: ^4.6.1
```
2. 然后,我们需要在 `main.dart` 文件中引入 GetX 包,并在 `runApp` 函数中添加 `GetMaterialApp`。
```dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Flutter GetX Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const HomePage(),
);
}
}
```
3. 接下来,我们需要创建一个 `HomePage` 类,这个类将会是我们的主页。在 `HomePage` 类中,我们将会使用 `GetX` 的 `Obx` 和 `GetBuilder` 来管理状态和更新 UI。
```dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class HomePage extends StatelessWidget {
const HomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Flutter GetX Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
GetBuilder<CounterController>(
builder: (controller) => Text(
'Count: ${controller.count}',
style: const TextStyle(fontSize: 24),
),
),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () {
final controller = Get.find<CounterController>();
controller.increment();
},
child: const Text('Increment'),
),
],
),
),
);
}
}
class CounterController extends GetxController {
var count = 0.obs;
void increment() {
count++;
}
}
```
在这个例子中,我们使用了 `GetBuilder` 来订阅 `CounterController` 中的 `count` 变量。当 `count` 发生变化时,UI 将会自动更新。我们还使用了 `Get.find` 来获取 `CounterController` 的实例,然后调用 `increment` 方法来增加计数器的值。
4. 最后,我们需要在 `main.dart` 文件中注册 `CounterController`。
```dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
void main() {
Get.put(CounterController());
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Flutter GetX Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const HomePage(),
);
}
}
class HomePage extends StatelessWidget {
// ...
}
class CounterController extends GetxController {
// ...
}
```
在这个例子中,我们使用了 `Get.put` 来注册 `CounterController`,这样我们就可以在整个应用程序中使用它了。
以上就是一个简单的 Flutter GetX 实战例子,希望能够帮助到你入门 GetX。
阅读全文