我是GetX的新手,正在努力学习如何使用它.我读过不同的教程,其中有注入小部件build方法的控制器outside的教程,也有注入inside方法控制器的教程.

class MyWidget extends StatelessWidget{
  const MyWidget({Key? key}) : super(key:key);

  //Outside...
  final controller = Get.put(Controller()); //<---

  @override
  Widget build(BuildContext context) {
    //Inside...
    final controller = Get.put(Controller()); //<---

    return Obx(
      () => Text(controller.name)
    );
  }
}

这两个地方有区别吗?如果是的话,原因何在?

另外,在StatefulWidget分中,它应该go 哪里?它似乎应该进入build方法的内部,因为它会导致堆栈溢出错误.

Get.put()在小部件中的位置重要吗?

推荐答案

通常的方法是将控制器放在小部件之外,因此只需创建一次.如果您将其放在小部件内,则每次刷新(更新)小部件时都会创建一个新的控制器实例. 此外,有了GetX,就没有必要使用StatefulWidget.

Flutter相关问答推荐

如何让GridView.builder用另外两个小部件来占据屏幕的剩余部分

如何在默认情况下隐藏appBar并在向下滚动时显示它- Flutter

未处理的异常:第1行第5列出现错误:无效的媒体类型:应为/&;.从API获取数据时在Flutter中

如何对齐 AppBar Actions 中的文本?

谷歌 map 在 flutter 应用程序中显示错误的当前位置

创建仅定义导出的文件是否有意义?

如何在列表视图生成器中显示图像

Flutter Dismissible 不会在 startToEnd 滑动时被关闭

获取通过列表呈现的相同 TextEditingController 的值

无法在 ListView (Flutter) 中限制 Card 的最大宽度

如何计算 Firestore 集合中的文档数量?

底部工作表顶部的一块 Flutter

Flutter Serverpod 在示例项目上返回 400 错误

Flutter - 使用 pin 进行身份验证

在 Flutter 中,您什么时候应该更喜欢Widget继承而不是组合?

在 Flutter 中将提取的 Listview.builder 与两个列表一起使用

在flutter web中重新加载页面时保留一些状态数据的有效方法是什么?

我已经删除了我的 .android 密钥库,但我没有使用它,如何生成一个新的?

如何在Flutter 中将列表的模型类型转换为数组?

Textfield 和 MasonryGrid 给出错误(垂直视口的高度没有限制)