【问题标题】:flutter - does not refresh listview builder after new data added to list颤振 - 将新数据添加到列表后不刷新列表视图构建器
【发布时间】:2021-06-28 14:20:36
【问题描述】:

我正在开发一个应用程序,它有一个页面;用户可以编写 cmets。我想要的是;用户在列表视图刷新后添加了他们的 cmets。

添加了我的 addComment 功能。

我的控制器

  var isLoading = true.obs;
  var addModel = AddCommentModel().obs();

  AddCommentController(this.comment, this.userUnique, this.articleID);

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

  void addComment() async {
    try {
      isLoading(true);
      var response =
          await ApiService.addComment(comment, userUnique, articleID);
      if (response != null) {}
    } finally {
      isLoading(false);
    }
  }
}

我的看法;

body: Column(
        children: <Widget>[
          Expanded(
            child: Obx(() {
              if (commentsController.isLoading.value) {
                return Center(
                  child: SpinKitChasingDots(
                      color: Colors.deepPurple[600], size: 40),
                );
              }
              return ListView.builder(
                controller: scrollController,
.
.
.
onPressed: () async {
                                  Future.delayed(Duration(seconds: 1))
                                      .then((_) {
                                    AddCommentController(parser.unemojify(textFieldCtrl.text), box.read('uid'),
        box.read('rid'))
    .addComment();

【问题讨论】:

    标签: listview dart state-management flutter-getx


    【解决方案1】:
    1. 添加使用addComment函数的部分

    2. 如果您在调用数据的类以外的其他地方调用 addComment 函数,请使用 Get.find() 来获取控制器(我可能犯了错误)

    【讨论】:

    • addComment 完成后如何刷新列表视图?
    • 这里的列表视图没有刷新,因为您没有使用 AddCommentController() 中的状态,抱歉回答迟了)
    【解决方案2】:

    我认为你在这里做的不是好习惯。 你可以做些什么来以某种直接的方式实现同​​样的目标。我的意思是列表在 rx 世界中本质上是自动反应的。所以你可以这样做:

    控制器中:

    final commentList=<Comment>[].obs;
    
    Future<void> addComment()async{
      final response =await ApiService.addComment(params);
      commentList.add(response);
      }
    

    在您的视图中:

    Obx(()=>ListView.builder(
              itemCount: controller.commentList.length,
              itemBuilder:......
      ),),
    

    【讨论】:

      猜你喜欢
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 2021-09-28
      • 1970-01-01
      • 2018-04-24
      • 2019-08-19
      • 2021-12-19
      相关资源
      最近更新 更多