Показать элементы в списке, содержащем определенное имя - флаттер - PullRequest
0 голосов
/ 08 мая 2019

В этом списке я хочу отобразить все элементы, которые содержат это конкретное имя.

Элементы моего списка: ['US', 'SG', 'US']

print(list.contains("US"));

Использование .contains () возвращает мне значение true или false, но не возвращает менясписок строк, который содержит это.Я хочу извлечь из списка только те элементы, которые имеют «США».В этом случае есть 2 из этого.Пожалуйста, помогите!

Ответы [ 3 ]

2 голосов
/ 08 мая 2019

Вы можете попробовать сделать это следующим образом -

List<String> myList = ['US', 'SG', 'US'];
print(myList.where((item) => item.contains("US")));

Вы также можете отобразить его непосредственно внутри Text виджета следующим образом -

Text(
   myList.where((item) => item.contains("US")).join(" "),
   //The join function joins the elements of the Iterable into a single string with the separator provided as an argument.
),

Надеюсь, это поможет!

ОБНОВЛЕНИЕ:

Чтобы отобразить каждое слово отдельно в виде списка, вы можете отобразить его внутри Column следующим образом -

Column(
  children: myList.map((value) {
    if(value.contains("US")){
      return Text(value,);
    } else {
      return Container();
      //Return an empty Container for non-matching case
    }
  }).toList(),
)

То же самое можно использовать внутри ListView вместо Column, если вы хотите, чтобы его можно было прокручивать.

0 голосов
/ 08 мая 2019

Как то так?

  var myList = ['US', 'SG', 'US'];
  myList.forEach((w){
    if(w == "US")
      print(w);
  });

Показать:

class SO extends StatelessWidget {
  var myList = ['US', 'SG', 'US'];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisSize: MainAxisSize.min,
        children: myList.where((w) => w == "US").map((w) => Text(w)).toList(),
      ),
    );
  }
}

или для однострочного отображения используйте Text вместо Column виджета, упомянутого выше

Text(myList.where((w) => w.contains("US")).join(" "))
0 голосов
/ 08 мая 2019

Если вы используете «list.contains».Он только покажет, существует список или нет. Если вы хотите напечатать значение, которое вы должны использовать, следуйте:

var fruits = [‘banana’, ‘pineapple’, ‘watermelon’];fruits.forEach((fruit) => print(fruit)); // => banana pineapple watermelon

Если вы хотите напечатать только банан, вы можете использовать это

var fruits = [‘banana’, ‘pineapple’, ‘watermelon’];fruits.(fruit) => print(fruit[0]); // => banana
...