在这里,我希望分别在他们自己的容器中显示来自Iterable列表中的每个元素,并将它们包装起来,以便它们均匀地分布在屏幕上,但是它给了我错误Iterable不是列表的一个子类型。我甚至在映射之前把它转换成列表。有人能帮忙吗?
import 'package:flutter/material.dart';
class Time extends StatefulWidget {
@override
_TimeState createState() => _TimeState();
}
class _TimeState extends State<Time> {
String time = "Press Button to see time";
@override
Widget build(BuildContext context) {
TimeOfDay startTime = TimeOfDay(hour: 01, minute: 00);
final endTime = TimeOfDay(hour: 23, minute: 59);
final step = Duration(minutes: 5);
Iterable<TimeOfDay> getTimes(
TimeOfDay startTime, TimeOfDay endTime, Duration step) sync* {
var hour = startTime.hour;
var minute = startTime.minute;
do {
yield TimeOfDay(hour: hour, minute: minute);
minute += step.inMinutes;
while (minute >= 60) {
minute -= 60;
hour++;
}
} while (hour < endTime.hour ||
(hour == endTime.hour && minute <= endTime.minute));
}
final times = getTimes(startTime, endTime, step)
.map((tod) => tod.format(context))
.toList();
return Scaffold(
body: SafeArea(
child: Wrap(
direction: Axis.horizontal,
children: times.map<Widget>(
(t) => Container(
margin: EdgeInsets.all(10.0),
decoration: BoxDecoration(
border: Border.all(
color: Colors.deepOrange,
width: 1,
),
borderRadius: BorderRadius.circular(
10.0,
),
),
padding: EdgeInsets.all(10.0),
child: Text(t),
),
),
),
),
);
}
}调试控制台显示

发布于 2021-05-06 10:36:22
您需要像这样添加.toList()函数
return Scaffold(
body: SafeArea(
child: Wrap(
direction: Axis.horizontal,
children: times
.map<Widget>(
(t) => Container(
margin: EdgeInsets.all(10.0),
decoration: BoxDecoration(
border: Border.all(
color: Colors.deepOrange,
width: 1,
),
borderRadius: BorderRadius.circular(
10.0,
),
),
padding: EdgeInsets.all(10.0),
child: Text(t),
),
)
.toList(),
),
),
);https://stackoverflow.com/questions/67416118
复制相似问题