Flutter 日期和时间选择器未显示

问题描述 投票:0回答:1

我对 Flutter 没有太多经验,当我点击 onTap 按钮时,showDatePicker 和 showTimePicker 不会出现。我不知道这与 Android Studio 和模拟器有关,也不知道与代码有关。如果可以的话请帮助我,谢谢。

Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              DateTimeWidget(titleText: 'Date',
                  valueText: dateProv.toString(),
                  iconSection: CupertinoIcons.calendar,
                onTap: () async {
                final DateTime? getValue = await showDatePicker(context: context, initialDate: DateTime.now(),
                    firstDate: DateTime(2021),lastDate: DateTime(2030));
                if(getValue != null) {
                  final format = DateFormat.yMd();
                  ref.read(dateProvider.notifier).update((state) => format.format(getValue));
                }
                },
          ),
              const Gap(22),
              DateTimeWidget(titleText: 'Time',
                valueText: ref.watch(timeProvider),
                iconSection: CupertinoIcons.clock,
                onTap: () async{
                final TimeOfDay getTime = showTimePicker(context: context, initialTime: TimeOfDay.now()) as TimeOfDay;

                if(getTime != null) {
                  ref.read(timeProvider.notifier).update((state) => getTime.format(context));
                }
                },
              ),
            ],
          ),

这是 DateTimeWidget 代码

class DateTimeWidget extends StatelessWidget {
  const DateTimeWidget({
    super.key,
    required this.titleText,
    required this.valueText,
    required this.iconSection,
    required this.onTap,
  });

  final String titleText;
  final String valueText;
  final IconData iconSection;
  final VoidCallback onTap;

  @override
  Widget build(BuildContext context) {
    return Expanded(
      child:Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Text(titleText,style: AppStyle.headingOne,
          ),
          const Gap(6),
          Material(
            child: Ink(
              decoration: BoxDecoration(color: Colors.grey.shade200,
              borderRadius: BorderRadius.circular(10),
              ),
              child: InkWell(

                splashColor: Colors.amber,
                borderRadius: BorderRadius.circular(10),
                onTap: () =>onTap,
                child: Container(
                  padding: const EdgeInsets.symmetric(horizontal: 12,vertical:12 ),
                  decoration: BoxDecoration(color: Colors.transparent,
                    borderRadius:  BorderRadius.circular(8),
                  ),
                  child: Row(children: [
                    Icon(iconSection),
                    const Gap(6),
                    Text(valueText),
                  ]),
                ),
              ),
            ),
          ),
        ],),
    );
  }
}

我尝试更改 Ink 和 Inkwell 类,但不起作用。

android flutter
1个回答
0
投票

您只是忘记在 InkWell 的 onTap 回调中添加括号“()”。所以你的函数永远不会被调用和执行。只需在 onTap 后面添加括号,一切都会正常工作。

onTap: () => onTap(),

而不是:

onTap: () => onTap,
© www.soinside.com 2019 - 2024. All rights reserved.