如何在ListView.Builder中过滤ListTile元素?

问题描述 投票:0回答:1

假设我有一个这样的列表:

final list = ["a", "a", "b", "a", "c"]

我用

ListView.Builder(
                itemCount: list.length,
                shrinkWrap: true,
                builder: (context, index){
                   return ListTile(
                       title: Text(list.index),
                       onTap:(){}
          )
      }
   )

有没有办法可以过滤列表,使其仅显示仅包含“a”的对象?

flutter
1个回答
0
投票

只需使用

List
.where
方法过滤掉只包含字符串“a”的元素:

final listWithOnlyA = myCurrentList.where((element) => element == "a").toList();

用你的例子:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

final list = ["a", "a", "b", "a", "c"];

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final listWithOnlyA = list.where((element) => element == "a").toList();
    return MaterialApp(
      title: 'Material App',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Material App Bar'),
        ),
        body: ListView.builder(
          itemCount: listWithOnlyA.length,
          itemBuilder: (context, index) {
            return ListTile(
              title: Text(listWithOnlyA[index]),
            );
          },
        ),
      ),
    );
  }
}


© www.soinside.com 2019 - 2024. All rights reserved.