Flutter 颤振和Getx:如何将参数从UI传递到Getx控制器?

Flutter 颤振和Getx:如何将参数从UI传递到Getx控制器?,flutter,flutter-getx,Flutter,Flutter Getx,我有一个Getx控制器,用于从数据库读取帖子内容: class ReadSinglePostController extends GetxController { var isLoading = true.obs; var posts = Post( postID: 1, userID: 0, thumbnail: 'thumbnail', imageList: 'imageList',

我有一个Getx控制器,用于从数据库读取帖子内容:

class ReadSinglePostController extends GetxController {
  var isLoading = true.obs;
  var posts = Post(
          postID: 1,
          userID: 0,
          thumbnail: 'thumbnail',
          imageList: 'imageList',
          title: 'title',
          description: 'description',
          createdTime: DateTime.now())
      .obs; //yes this can be accessed

  var postid = 2.obs; //I want this value to change when I click a post in the UI

  @override
  void onInit() {
    super.onInit();
    readPost(postid);
  }

  updateID(var postID) {
    postid.value = postID;
    print('im print ${postid.value}');
  }//should update postid when a post is clicked in the UI

  Future readPost(var postID) async {
    try {
      isLoading(true);
      var result = await PostsDatabase.instance.readPost(postID);
      posts.value = result;
    } finally {
      isLoading(false);
    }
  }
}

但我现在面临的问题是:要从数据库中读取特定的帖子,我需要
postID
参数。正如您所想象的,当我在UI中单击一个特定的帖子时,这个参数可以被记录下来,但是我如何将这个参数传递给这个Getx控制器呢?或者可能我做错了整件事?

您可以在Ui上使用控制器的实例

例如,在小部件上调用控制器:

final ReadSinglePostController _controller = Get.put(ReadSinglePostController());

//and when you need to change you do like this:
_controller.updateID(newId);
在updateID方法中,可以调用load方法:

updateID(var postID) {
  postid.value = postID;
  print('im print ${postid.value}');
  readPost(postID);
}

您可以在Ui上使用控制器的实例

例如,在小部件上调用控制器:

final ReadSinglePostController _controller = Get.put(ReadSinglePostController());

//and when you need to change you do like this:
_controller.updateID(newId);
在updateID方法中,可以调用load方法:

updateID(var postID) {
  postid.value = postID;
  print('im print ${postid.value}');
  readPost(postID);
}

谢谢你的回答!它起作用了!不过,我还有一个简短的问题,在您的回答中,您使用了
\u controller.update(newId)
。我以前使用过
GetX(生成器:(控制器){
在我的小部件树中。这两种方法不同吗?以及如何不同?因此Getx上有3种状态管理:Gex、Obx和GetBuilder,您可以选择哪一种更适合您的需要。我总是使用Obx,因为我觉得更容易和清楚。我也更容易听到小部件上的状态更改。您可以在这里阅读更多有关差异的信息:谢谢你的回答!很有效!不过我还有一个快速问题,在你的回答中,你使用了
\u controller.update(newId)
。我以前使用过
GetX(builder:(controller){
在我的小部件树中。这两种方法不同吗?以及如何不同?因此Getx上有3种状态管理:Gex、Obx和GetBuilder,您可以选择哪一种更适合您的需要。我总是使用Obx,因为我觉得更容易和清楚。我也更容易听到小部件上的状态更改。您可以在这里阅读更多有关差异的信息: