试图从循环索引中获取月份的名称

时间:2020-09-29 14:54:56

标签: flutter

我正在尝试构建月份选择器(或下拉菜单)。我找到了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?
              ),
            ),
          ),
      ],
    );
  }
}

由于它只是一个组件,其功能仅是选择一个月,因此使用插件似乎有点“过大”,所以我尝试避免这种情况。任何帮助将不胜感激。

1 个答案:

答案 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()),
      ),
    ),
  ),