请我需要澄清地图功能和传播函数在颤振中的作用。
...(questions[questionIndex]['answers'] as List<String>).map((answer) {
return Answer(selectHandler: answerQuestion, answerText: answer);}).toList()
在上面的代码中,我有带有键和值的问题地图,但是使用地图函数将列表转换为小部件的过程,扩展由三个点表示,这是我需要澄清的。请有人帮我解释一下。谢谢。
还有关于在不使用地图功能的情况下将列表转换为wiidget还有其他建议吗?
展开操作允许您将一个List
元素组合到另一个List
中,就像您说的那样:"将该传播列表的元素合并到主列表中"。
例:
list<int> list1 = [1, 2, 3];
list<int> list2 = [4, 5, 6];
list<int> margeOfElementsOfLists = [...list1, ...list2];
print(margeOfElementsOfLists); // [1,2,3,4,5,6]
另一方面,map
方法与 DART 中的Map
对象没有直接关系。 它使您能够通过对所有元素执行一种函数来获取原始列表的副本,采用上一个列表:
print(margeOfElementsOfLists.map((number) => number *2).toList()); // [2,4,6,8,10,12]
所以在你的例子中,就像你说,对于所有元素,创建一个小部件,将答案作为属性并从中成为一个Answer
小部件,然后将该列表的元素合并到主List
中,这可以是Row
或Column
的子List
我是颤振的初学者...到目前为止,我注意到地图比其他循环更容易使用......
我创建了一个关于它的演示
在这里。。。如果它可能对你有帮助
class MyApp extends StatelessWidget {
MyApp({Key? key}) : super(key: key);
List<int> numbers = [3, 5, 2, 4, 5, 6, 2];
List<Widget> int_to_widgetlist() {
// using map u can code as per following
//return numbers.map((e) => Text(e.toString())).toList();
// or u can use for loop or any other loop
List<Widget> widgetlist = [];
for (int x = 0; x < numbers.length; x++) {
widgetlist.add(Text(numbers[x].toString()));
}
return widgetlist;
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Column(
children: int_to_widgetlist(),
),
),
);
}
}
关于点差运算符,它就像
var list = [1, 2, 3];
var list2 = [0, ...list];