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 flatter:Then()块代码不起作用_Flutter_Dart_Asynchronous - Fatal编程技术网

Flutter flatter:Then()块代码不起作用

Flutter flatter:Then()块代码不起作用,flutter,dart,asynchronous,Flutter,Dart,Asynchronous,我正在从API获取一些数据,在获取数据的同时,我显示了一个加载微调器。然后在获取数据后,我想在屏幕上显示我的数据,但问题是加载微调器从未停止。 我还有一个错误:E/flatter(10577):[error:flatter/lib/ui/ui\u dart\u state.cc(186)] 未处理的异常:类型“String”不是类型“int”的子类型 import 'package:flutter/material.dart'; import '../provider/weekDaysAnd

我正在从API获取一些数据,在获取数据的同时,我显示了一个加载微调器。然后在获取数据后,我想在屏幕上显示我的数据,但问题是加载微调器从未停止。 我还有一个错误:E/flatter(10577):[error:flatter/lib/ui/ui\u dart\u state.cc(186)] 未处理的异常:类型“String”不是类型“int”的子类型

 import 'package:flutter/material.dart';
 import '../provider/weekDaysAndWorkTime.dart';
 import '../provider/daysAndTimes.dart';
 import 'package:provider/provider.dart';
 import './dailyListScreen.dart';

 class ChooseWtimeScreen extends StatefulWidget {
 @override
 _ChooseWtimeScreenState createState() => _ChooseWtimeScreenState();
 }

  //This page is for selecting the work time employee and the day of the week.

 class _ChooseWtimeScreenState extends State<ChooseWtimeScreen> {
 bool _isLoading = false;
 bool _isInit = true;

 @override
 void didChangeDependencies() {
 if (_isInit) {
  setState(() {
    _isLoading = true;
  });
  Provider.of<DaysAndTime>(context).fetchAndSet().then((_) {
    setState(() {
      _isLoading = false;
      });
    });
  }
 _isInit = false;
 super.didChangeDependencies();
  }
导入“包装:颤振/材料.省道”;
导入“../provider/weekDaysAndWorkTime.dart”;
导入“../provider/daysAndTimes.dart”;
导入“包:provider/provider.dart”;
导入“/dailyListScreen.dart”;
类ChooseTimeScreen扩展StatefulWidget{
@凌驾
_ChooseWtimeScreenState createState()=>\u ChooseWtimeScreenState();
}
//此页面用于选择工作时间员工和星期几。
类_chooseTimesCrenstate扩展状态{
bool_isLoading=false;
bool_isInit=true;
@凌驾
void didChangeDependencies(){
如果(_isInit){
设置状态(){
_isLoading=true;
});
Provider.of(context.fetchAndSet()。然后((){
设置状态(){
_isLoading=false;
});
});
}
_isInit=假;
super.didChangeDependencies();
}
在上面的代码中,有我的then()块代码,它必须停止加载微调器并显示获取的数据,但加载微调器从不停止。我不知道是什么问题

  String _selectedWorkTime;
  String _selectedWeekDay;

  @override
Widget build(BuildContext context) {
List<WeakDays> days = Provider.of<DaysAndTime>(context).days;
List<EmpWorkTime> times = Provider.of<DaysAndTime>(context).times;

List<EmpWorkTime> workTime = times;

List<String> _workTimeItems = workTime.map((wt) => wt.persianName).toList();
var weekDays = days;
List<String> _weekDaysItems = weekDays.map((wd) => wd.persianName).toList();
return Scaffold(
    body: Container(
        child: Center(
            child: _isLoading
                ? CircularProgressIndicator()
                : Container(
                    height: 600,
                    width: 400,
                    child: Column(children: [
                      Row(
                        children: [
                          Text("روز هفته: "),
                          SizedBox(width: 5),
                          SizedBox(
                              width: 150,
                              child: DropdownButton(
                                  items: _weekDaysItems
                                      .map((weekDaysStringItem) =>
                                          DropdownMenuItem(
                                              value: weekDaysStringItem,
                                              child:
                                                  Text(weekDaysStringItem)))
                                      .toList(),
                                  onChanged: (newItem) {
                                    _selectedWeekDay = newItem;
                                  }))
                        ],
                      ),
                      SizedBox(height: 30),
                      Row(children: [
                        Text("وقت کاری: "),
                        SizedBox(width: 5),
                        SizedBox(
                          width: 150,
                          child: DropdownButton<String>(
                              items: _workTimeItems
                                  .map((dropdownStringItem) =>
                                      DropdownMenuItem<String>(
                                          value: dropdownStringItem,
                                          child: Text(dropdownStringItem)))
                                  .toList(),
                              onChanged: (newItem) {
                                _selectedWorkTime = newItem;
                              }),
                        ),
                      ]),
                      ElevatedButton(
                          child: Text("تاًیید"),
                          onPressed: () {
                            EmpWorkTime empWorkTime = workTime.firstWhere(
                                (element) =>
                                    element.persianName ==
                                    _selectedWorkTime);
                            WeakDays weekDay = weekDays.firstWhere(
                                (element) =>
                                    element.persianName ==
                                    _selectedWeekDay);
                            Navigator.of(context).pushNamed(
                                DailyListScreen.routeName,
                                arguments: [
                                  weekDay.weekDayId,
                                  empWorkTime.employeeWorkTimeId
                                ]);
                            
                          }),
                    ]),
                  ))));
String\u选择的工作时间;
字符串_选择的工作日;
@凌驾
小部件构建(构建上下文){
列表天数=提供者.of(上下文).days;
列表时间=Provider.of(context).times;
列出工作时间=次;
List_workTimeItems=workTime.map((wt)=>wt.persianName.toList();
var工作日=天;
List_weekDaysItems=weekDays.map((wd)=>wd.persianName.toList();
返回脚手架(
主体:容器(
儿童:中心(
子项:_正在加载
?循环压缩机指示器()
:容器(
身高:600,
宽度:400,
子项:列(子项:[
划船(
儿童:[
文本(“وزهفته:”),
尺寸箱(宽度:5),
大小盒子(
宽度:150,
孩子:下拉按钮(
项目:_工作日站点
.map((weekDaysStringItem)=>
下拉菜单项(
值:weekDaysStringItem,
儿童:
文本(weekDaysStringItem)))
.toList(),
更改后:(新项目){
_selectedWeekDay=newItem;
}))
],
),
尺寸箱(高度:30),
世界其他地区(儿童:[
文本(“وقتکای:”),
尺寸箱(宽度:5),
大小盒子(
宽度:150,
孩子:下拉按钮(
项目:\ u工作时间项目
.map((dropdownStringItem)=>
下拉菜单项(
值:dropdownStringItem,
子项:文本(dropdownStringItem)))
.toList(),
更改后:(新项目){
_selectedWorkTime=newItem;
}),
),
]),
升降按钮(
儿童:文本(“تاًیید”),
已按下:(){
EmpWorkTime EmpWorkTime=workTime.firstWhere(
(元素)=>
波斯元素==
_选择的工作时间);
WeakDays Weakday=WeakDays.firstWhere(
(元素)=>
波斯元素==
_选定的工作日);
Navigator.of(context.pushNamed)(
DailyListScreen.routeName,
论据:[
weekDay.weekDayId,
empWorkTime.employeeWorkTimeId
]);
}),
]),
))));
}
}

您是否检查了
fetchAndSet()
方法是使用
print
方法完成的?尝试在
setState
中打印
中的任何代码,然后在
块中打印
代码。谁在等待未来?是的,fetch and set方法工作正常,它正在提取数据并打印。但是关于那次,我到现在还没有打印任何东西。好的,我试试。有人帮我吗?