【问题标题】:Flutter Getx doesn't update StringFlutter Getx 不更新字符串
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 我将其标记为正确 bcoz:name.value = s 是要走的路:) thx
    猜你喜欢
    • 2021-12-17
    • 2023-01-18
    • 1970-01-01
    • 2021-05-11
    • 2021-04-16
    • 2022-08-04
    • 2021-03-29
    • 1970-01-01
    • 2021-10-02
    相关资源
    最近更新 更多