Flutter Getx 不更新字符串

Flutter Getx doesn't update String

我尝试检查 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不触发更新。

name = RxString(s); 更改为 name.value = s;Obx(() => Text(controller.name.toString())),Obx(() => Text(controller.name.value)),