我正在尝试构建月份选择器(或下拉菜单)。我找到了this question,但答案却丢失了本地化功能。我希望能够在我的应用程序中保留本地化支持,而不是手动输入它,但是我不知道如何根据循环索引获得月份。
class FormDropdownMonth extends StatelessWidget {
const FormDropdownMonth({Key key, @required this.onChanged})
: super(key: key);
final Function(int month) onChanged;
@override
Widget build(BuildContext context) {
return DropdownButton<int>(
onChanged: onChanged,
items: [
for (var i = 1; i <= DateTime.monthsPerYear; i++)
DropdownMenuItem(
value: i,
child: Text(
DateFormat.MMMM(Get.locale).format(
DateTime(year), // <-- How can I get month from i?
),
),
),
],
);
}
}
由于它只是一个组件,其功能仅是选择一个月,因此使用插件似乎有点“过大”,所以我尝试避免这种情况。任何帮助将不胜感激。
答案 0 :(得分:1)
我刚刚找到了解决方案。我需要将i
转换为字符串,并使用DateFormat('M')
进行解析以获取月份。这不是一个完美的解决方案,但是可以。
for (var i = 1; i <= DateTime.monthsPerYear; i++)
DropdownMenuItem(
value: i,
child: Text(
DateFormat.MMMM(Get.locale.toLanguageTag()).format(
DateFormat('M').parse(i.toString()),
),
),
),