【发布时间】:2021-10-08 16:22:45
【问题描述】:
我尝试检查 GetX 包。而且我坚持更新 String.obs
这里是示例代码:
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class MyController extends GetxController {
var name = "JOHN".obs;
var age = 33.obs;
incrementAge() {
age++;
}
changeName(String s) {
name = RxString(s);
}
}
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
TextEditingController textEditingController = TextEditingController();
@override
Widget build(BuildContext context) {
MyController controller = MyController();
return Scaffold(
appBar: AppBar(
title: Text('widget.title'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Obx(() => Text(controller.name.toString())),
Obx(() => Text('Age: ${controller.age}')),
TextButton(
onPressed: () {
controller.incrementAge();
},
child: Text('add age')),
TextField(
controller: textEditingController,
),
TextButton(
onPressed: () {
controller.name =
controller.changeName(textEditingController.text);
},
child: Text('ChangeName'))
],
),
),
);
}
}
问题是:
当我更新 name 属性文本小部件时保持不变。它应该发生在这里:
Obx(() => 文本(controller.name.toString())),
使用 int 工作正常。我在这里缺少什么?
我使用 GetBuilder 让它工作。但我不知道为什么 Obx 不触发更新。
【问题讨论】:
标签: android flutter flutter-getx