【问题标题】:Flutter making a directory index [closed]Flutter制作目录索引[关闭]
【发布时间】:2020-10-29 17:59:32
【问题描述】:

我面临着创建带有字母索引的目录的挑战。

我有 List> 的商店如下:

var shops = [
        {'name':'Thrifty','products':'cars', 'delivery':'no'},
        {'name':'Pizza Express','products':'pizza', 'delivery':'yes'},
        {'name':'Fastmart','products':'household items', 'delivery':'yes'}   
];

并希望呈现用字母分隔的卡片列表,如下所示:

我正在使用 Cloud Firestore 来获取我的数据,如果有办法直接查询数据库或在客户端完成,请告诉我。

感谢任何帮助和指导!

【问题讨论】:

    标签: flutter dart google-cloud-firestore


    【解决方案1】:

    我可以给你一个想法。试试这样的,

      var shops = [
            {'name':'Thrifty','products':'cars', 'delivery':'no'},
            {'name':'Pizza Express','products':'pizza', 'delivery':'yes'},
            {'name':'Fastmart','products':'household items', 'delivery':'yes'}   
      ];
      
      var indexedShops = {};
      
      shops.forEach((item) {
        String letter = item['name'][0];
        if(indexedShops[letter] != null){
          indexedShops[letter] += [item];
        }else{
          indexedShops[letter] = [item];
        }
      });
      
      print(indexedShops);
      
    // {T: [{name: Thrifty, products: cars, delivery: no}], P: [{name: Pizza Express, products: pizza, delivery: yes}], F: [{name: Fastmart, products: household items, delivery: yes}]}
      
      var availLetters = indexedShops.keys.toList();
      availLetters.sort();
    
      availLetters.forEach((e){
        print(indexedShops[e]);
      });
      
    // [{name: Fastmart, products: household items, delivery: yes}]
    // [{name: Pizza Express, products: pizza, delivery: yes}]
    // [{name: Thrifty, products: cars, delivery: no}]
    

    首先,我们声明一个Map 来按字母顺序存储对象。

    然后,列出可用字母并对其进行排序以供显示。

    然后,针对不同的用例对其进行迭代。

    希望这适合你的情况!

    【讨论】:

    • 太棒了,就是这样。非常感谢!
    猜你喜欢
    • 2015-11-27
    • 2011-09-24
    • 1970-01-01
    • 2011-02-18
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多