Getx Flutter - 更新列表中的项目不是反应性的

2024-01-27

我使用 getx 作为我的 flutter 应用程序的状态管理。但我在更新列表中的值时遇到困难。所以我有一个参数为 isFollowing 的用户模型。当我单击按钮时,isFollowing 变量将发生变化并且颜色也应更新。但这并没有发生。我使用 Obx 作为我的小部件,因为我已经在开始时注入了状态。获取数据并将其显示在前端时一切正常。但是当我想更改列表中的值时,它不会更新。我的最小可复制示例

家庭控制器

class HomeController extends GetxController {
  var userslist = List<User>().obs;

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

  void fetchUsers() async {
    var users= await ApiService().getapidata('${usersurl}feed');
    if (users!= null) {
      userslist.value= users;
    }
  }
}

Model

class User {
  User({
    this.id,
    this.user_name,
    this.profile_picture,
    this.isFollowing,
  });

  int id;
  String user_name;
  String profile_picture;
  bool isFollowing;


  factory User.fromJson(Map<String, dynamic> json) => User(
        id: json["id"],
        user_name: json["user_name"],
        profile_picture: json["profile_picture"],
        isFollowing: json["is_following"],
      );

View

class HomeScreen extends StatelessWidget {
  final HomeController homeController = Get.put(HomeController());

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SingleChildScrollView(
        physics: ScrollPhysics(),
        child: Obx(
          () => ListView.builder(
            shrinkWrap: true,
            physics: NeverScrollableScrollPhysics(),
            itemCount: homeController.usersList.length,
            itemBuilder: (context, index) {
              return UserWidget(homeController.usersList[index], index);
            },
          ),
        ),
      ),
    );
  }
}

用户小部件

class UserWidget extends StatelessWidget {
  final User user;
  final int index;
  UserWidget (this.user, this.index);
  @override
  Widget build(BuildContext context) {
    return InkWell(
        onTap : ()=> user.isFollowing = true // When I click on this the container it  shall be updated to yellow
        child: Obx( () => Container(
        decoration: const BoxDecoration(color: user.isFollowing ? Colors.yellow : Colors.black ), // Here is the update I wanna make
      ))
    );
  }
}


它对我有用。对反应列表进行更改后,添加示例:

if (users!= null) {
      userslist.value= users;

      userlist.refresh();
    } 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Getx Flutter - 更新列表中的项目不是反应性的 的相关文章

随机推荐

  • Go 中的模拟随机生成器

    出于测试目的 我想在 Go 中模拟随机数 所以我创建了随机界面 在单元测试期间 我返回恒等函数 而在实现过程中 我使用 rand 包生成一个随机数 这是在 Go 中模拟随机数的正确方法吗 任何帮助表示赞赏 去游乐场 https play g
  • 相同域请求的 Origin 和 Host 标头

    我们有 RESTful JSON 端点来服务 AJAX 请求 希望支持跨源资源共享 我们正在锁定一切 以确保我们不必担心跨站请求伪造 CSRF 攻击 我们使用的部分方法是检查 Origin 标头是否存在 并验证它是否包含在已批准的 Orig
  • 如何使用 slug 从类别中获取帖子?

    我有自己的主题 我想在我的主页上显示特定类别的帖子 到目前为止 我已经实现了这样的目标
  • cakePHP 中的时间重定向?

    header 刷新 5 url pagetoredirect php 如果我们想在 5 秒内重定向我们的页面 我们可以使用它 cakephp 有没有办法在 5 秒内重定向页面 如果是 请告诉我 你可以尝试使用AppControllerhea
  • 将 package.json 中的 proxy 设置为 env 变量

    我需要设置proxy我的价值package json在运行时 就像使用环境变量一样 这怎么可能做到呢 package json name demo proxy process env MY PROXY VAL lt how dependen
  • 如何在Unity和C#中延迟一个方法?

    我的名字是 Laurenz 我的问题是如何使用 c 延迟 Unity 中精灵的颜色变化 现在我有一个随机生成器 它根据数字选择颜色 但这种情况每帧都会发生 所以现在真正的挑战是如何延迟它以减少它的变化 public class colorc
  • 什么控制 WSDL 的肥皂地址位置中使用的 url?

    我正在通过来自iis 6的https公开wcf服务 据我所知 我已经验证了iis中的绑定设置正确 是的 肯定站点id为 1 并且已完成iisreset 当我运行这个时 C Program Files x86 Microsoft Visual
  • 为什么 HTML5 视频无法在 IOS 8 WebApp(webview) 中播放?

    简单的 HTML5 视频可以在 Safari 浏览器上播放 但将其添加到主屏幕 独立Web应用程序 后 它不起作用 它可以在 iOS7 上运行 但在 iOS8 上停止运行
  • 如何从不同的 swift 文件调用函数

    我的 Xcode 6 beta 2 项目中有多个 UIViewController 类型的 swift 文件 我基本上想知道文件 A 中的一些数据以便在文件 B 中使用 我的文件都是 UIViewController 并且我创建了一个没有参
  • 如何使用VBA自动化多个Office应用程序?

    虽然我已经在 MS Access 2007 和 Excel 2007 的单个应用程序中完成了 VBA 项目 但我还没有同时自动化多个应用程序 广义的项目是开放访问 运行一些更新查询 将数据附加到各种表 然后Excel需要获取数据 Excel
  • bash:jar:找不到命令

    我在用着Jenkins部署构建 我们需要从 a 中提取文件 war进入某个目录 我们有一个 xml文件 其中包含从以下位置提取文件的命令 war文件并启动服务器 构建正在正确创建 但是 war提取未发生 目标文件夹留空 Jenkins 控制
  • Appium服务器未检测到通过wifi连接的设备

    did adb tcpip 5555 and adb connect ipaddress The adb devices显示设备 但是当我运行 appium 服务器时 它显示没有连接 Android 设备 appium python代码是
  • 什么是 Packrat 解析?

    我知道并使用 bison yacc 但在解析世界中 围绕 Packrat 解析有很多讨论 它是什么 值得学习吗 Packrat 解析是一种提供渐近更好的性能 for 解析表达式语法 http en wikipedia org wiki Pa
  • 从 Firestore 导出 json

    由于我们可以在Firebase RTDB控制台下载json文件 有什么方法可以导出Firestore集合 文档数据的json文件 我的主要目标之一是比较更新文档之前 之后的数据 谷歌让它变得比需要的更加困难 所以社区找到了一个解决方法 如果
  • 将平面拟合到 3D 中的一组点:scipy.optimize.minimize 与 scipy.linalg.lstsq

    给定一组 3D 点 一般问题是找到a b c平面方程的系数 形式为 z a x b y c 这样得到的平面就是best fit可能到那组点 In 这个答案 https stackoverflow com a 20700063 1391441
  • 如何让表单元素“记住”选择?

    我现在正在使用 php 构建一个 更改分类 页面 我使用Mysql作为数据库 目前我使用PHP来获取有关分类的所有mysql信息 然后我像这样输出 table
  • Microsoft Edge 的 URL 长度限制

    有人知道 Microsoft Edge 的 URL 长度限制吗 如您所知 Internet Explorer 对 URL 长度有限制 最大长度为 2048 Edge 怎么样 我想 现在应该已经消失了 极限似乎已到81578 个字符 之后 我
  • 如何使用Ramda管道?

    背景 我正在尝试使用 Ramda 编写 2 个函数 但我遇到了问题pipe 这意味着我不知道如何使用它 Code 假设我有一个返回数组的函数 var createQuery params gt getSQLQuery params getM
  • 断言失败:电影播放器​​的激活状态错误 (1)

    我正在 iPad 应用程序的一个页面上播放视频 m4v 然后它会转到另一个视图控制器来播放另一个视频 它播放正常 但是当第二个视频播放完毕时 它会抛出断言失败 错误是 Assertion failure in MPMoviePlayerCo
  • Getx Flutter - 更新列表中的项目不是反应性的

    我使用 getx 作为我的 flutter 应用程序的状态管理 但我在更新列表中的值时遇到困难 所以我有一个参数为 isFollowing 的用户模型 当我单击按钮时 isFollowing 变量将发生变化并且颜色也应更新 但这并没有发生