【问题标题】:How to create recommended ListView in flutter and fire store如何在 Flutter 和 Fire 商店中创建推荐的 ListView
【发布时间】:2021-05-29 16:10:50
【问题描述】:

有一种方法可以使用火基和颤振从用户 ListView 创建推荐...

例如,我在 firebase 中有一个数据列表,当我在数据列表屏幕中显示它们时,我从 firebase 获取它们,并且我有一个来自用户的推荐列表视图列表,例如来自用户的点击数据项如下图所示:

更具体地说,如何确定数据是否被用户查看?

有办法或文档来做这样的事情吗?

【问题讨论】:

  • 这就是您要找的东西? firebase.google.com/codelabs/contentrecommendation-android#0 不,目前还没有针对推荐系统的颤振特定软件包,它仅适用于原生 android。但是您可以创建自己的模型并将其与颤振集成。
  • 你能解释一下吗:“更具体地说,如果数据被用户查看,如何计算?” ?您是否想知道用户是否查看了小部件?
  • @VictorEronmosele 是的,我需要如何确定用户如何查看对象:)

标签: flutter dart google-cloud-firestore


【解决方案1】:

如果您的意图是提供某种“用户喜欢”的功能。

您可以在根目录(例如)使用Provider 包创建ChangeNotifierProvider 并将Set<YourShopItem> 存储在那里。

然后在此 ChangeNotifier 上公开诸如 add(YourShopItem item)remove(YourShopItem item) 之类的方法,它们应该从您的集合中添加和删除项目,并在每次调用此方法时调用 notifyListeners()

然后,当您需要确定是否喜欢您的项目时,只需获取您的ChangeNotifier 并检查项目是否在集合中。每次调用 addremove 方法时,您的小部件都会更新,因为它们订阅了 ChangeNotifierProvider

【讨论】:

  • 是的,但这是另一种情况,我可以获取喜欢的用户数据,但在这种情况下,我想获取用户数据视图
  • 对不起,我迷失了问题的配方。好吧,如果您想检查“用户是否查看了数据?”,那么您可以跟踪列表的滚动位置并根据已查看的滚动位置标记屏幕上的元素。这是你想要的吗?如果是,我可以详细说明。
  • @MahmoudHarooney,这个问题仍然存在吗?
【解决方案2】:

如果您的意图是跟踪项目的可见性。

您可以使用visibility detector 包来跟踪某个小部件是否可见。您可以订阅某些小部件,当它显示时,将触发回调。因此,您应该将列表中的每个小部件包装到 VisibilityDetector 小部件中并保存您的项目已被查看。

类似的东西应该可以完成这项工作:

final List<String> entries = <String>['A', 'B', 'C'];
final List<int> colorCodes = <int>[600, 500, 100];

ListView.builder(
    padding: const EdgeInsets.all(8),
    itemCount: entries.length,
    itemBuilder: (BuildContext context, int index) {
      return VisibilityDetector(
        onVisibilityChanged: (VisibilityInfo info) {
          if (info.visibleFraction == 1) {
            ON_YOUR_ITEM_IS_VISIBLE_FUNCTION();
          }
        },
        child: Container(
          height: 50,
          color: Colors.amber[colorCodes[index]],
          child: Center(child: Text('Entry ${entries[index]}')),
        ),
      );
    }
);

另请参阅:https://stackoverflow.com/a/63577928/13737975

【讨论】:

    猜你喜欢
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多