我有这个 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);
}
}
}
但我现在面临的问题是:要从数据库读取特定的 Post,我需要 postID
参数。可以想象,当我单击 UI 中的特定 Post 时,可以记录此参数,但是如何将该参数传递给此 Getx 控制器?或者我做错了这一切?
答案 0 :(得分:2)
您可以在用户界面上使用控制器的实例。
例如,在您调用控制器的小部件上:
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);
}