Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振showTimePicker始终返回null_Flutter_Dart - Fatal编程技术网

Flutter 颤振showTimePicker始终返回null

Flutter 颤振showTimePicker始终返回null,flutter,dart,Flutter,Dart,因此,我试图使用Flatter中的showTimePicker函数,但实际情况是,该对话框将与时间选择器一起显示,但一旦我点击对话框中的任何内容,它将关闭并返回null。即使我在选择器中点击一个数字 我只在iOS上测试过这个 我曾尝试将墨水池包装在一个生成器中,并将该生成器中的上下文赋予showTimePicker函数,但我得到了相同的结果 我以为InkWell可能从对话框中捕获了tap事件,但我在我的_pickNewDailyResetTime方法中设置了一个断点,它只在正确的时间出现,而不是

因此,我试图使用Flatter中的showTimePicker函数,但实际情况是,该对话框将与时间选择器一起显示,但一旦我点击对话框中的任何内容,它将关闭并返回null。即使我在选择器中点击一个数字

我只在iOS上测试过这个

我曾尝试将墨水池包装在一个生成器中,并将该生成器中的上下文赋予showTimePicker函数,但我得到了相同的结果

我以为InkWell可能从对话框中捕获了tap事件,但我在我的_pickNewDailyResetTime方法中设置了一个断点,它只在正确的时间出现,而不是在我点击对话框时出现

我在父窗口小部件的底部菜单中设置了一个导航器,如果这很重要的话

无论如何,这是我的小部件代码,非常感谢您的帮助:

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

class DailyResetTime extends StatefulWidget {
  DailyResetTime();

  @override
  _DailyResetTimeState createState() => _DailyResetTimeState();
}

class _DailyResetTimeState extends State<DailyResetTime> {
  TimeOfDay _dailyResetTime;

  @override
  void initState() {
    super.initState();
    _loadDailyResetTime();
  }

  _loadDailyResetTime() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      String sDailyResetTime = prefs.getString('dailyResetTime');

      _dailyResetTime = sDailyResetTime != null
          ? TimeOfDay(
              hour: int.parse(sDailyResetTime.split(":")[0]),
              minute: int.parse(sDailyResetTime.split(":")[1]))
          : TimeOfDay(hour: 0, minute: 0);
    });
  }

  _pickNewDailyResetTime() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    showTimePicker(context: context, initialTime: _dailyResetTime)
        .then((value) {
      if (value == null) {
        return;
      }

      setState(() {
        _dailyResetTime = value;
        prefs.setString('dailyResetTime',
            value.hour.toString() + ":" + value.minute.toString());
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return InkWell(
        onTap: _pickNewDailyResetTime,
        child: Container(
            height: 48.0,
            padding: EdgeInsets.only(right: 24),
            decoration: BoxDecoration(
                border: Border(
                    bottom: BorderSide(color: Colors.black12, width: 1.0))),
            child: Row(
              children: [
                Text('Daily reset time'),
                Spacer(),
                Text(_dailyResetTime?.format(context) ?? '')
              ],
            )));
  }
}

导入“包装:颤振/材料.省道”;
导入“package:shared_preferences/shared_preferences.dart”;
类DailResettime扩展StatefulWidget{
每日设置();
@凌驾
_DailyResetteMestate createState()=>\u DailyResetteMestate();
}
类_DailyResetTimeState扩展状态{
每天的时间;
@凌驾
void initState(){
super.initState();
_loadDailyResetTime();
}
_loadDailyResetTime()异步{
SharedReferences prefs=等待SharedReferences.getInstance();
设置状态(){
String sDailyResetTime=prefs.getString('dailyResetTime');
_dailyResetTime=sDailyResetTime!=null
?当日时间(
小时:int.parse(sDailyResetTime.split(“:”[0]),
分钟:int.parse(sDailyResetTime.split(“:”[1]))
:时间(小时:0,分钟:0);
});
}
_pickNewDailyResetTime()异步{
SharedReferences prefs=等待SharedReferences.getInstance();
showTimePicker(上下文:上下文,初始时间:_dailyResetTime)
.然后((值){
如果(值==null){
返回;
}
设置状态(){
_dailyResetTime=值;
prefs.setString('dailyResetTime',
value.hour.toString()+“:”+value.minute.toString());
});
});
}
@凌驾
小部件构建(构建上下文){
回墨槽(
onTap:_pickNewDailyResetTime,
子:容器(
身高:48.0,
填充:仅限边缘设置(右:24),
装饰:盒子装饰(
边界:边界(
底部:边框(颜色:Colors.black12,宽度:1.0)),
孩子:排(
儿童:[
文本(“每日重置时间”),
垫片(),
文本(_dailyResetTime?格式(上下文)?“”)
],
)));
}
}

显然导航器是问题所在,将useRootNavigator:false传递给函数参数为我解决了问题