Как создать виджет на основе списка Flutter

#flutter #dart

#трепетание #дротик

Вопрос:

У меня есть массив строк: var choices = [‘a’, ‘b’, ‘c’];

Я хочу создать текстовый виджет, перебирая каждую строку. Я считаю, что обычный способ сделать это — использовать map

 Column(
children: choices.map((item) {
    return Text(item);
 }).toList()
)
 

Однако я получаю, что тип элемента «Список» не может быть присвоен типу списка «Виджет». исключение. Карта больше не работает?

Ответ №1:

Ваш код правильный и работает так, как ожидалось. Я скопировал ваш код на dartpad.dev следующим образом :

 import 'package:flutter/material.dart';

final Color darkBlue = Color.fromARGB(255, 18, 32, 47);

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: MyWidget(),
        ),
      ),
    );
  }
}

class MyWidget extends StatelessWidget {
  final List<String> choices = ["one", "two", "three", "four"];
  @override
  Widget build(BuildContext context) {
    return Column(
        children: choices.map((item) {
      return Text(item);
    }).toList());
  }
}