Flutter flatter:Then()块代码不起作用
我正在从API获取一些数据,在获取数据的同时,我显示了一个加载微调器。然后在获取数据后,我想在屏幕上显示我的数据,但问题是加载微调器从未停止。 我还有一个错误:E/flatter(10577):[error:flatter/lib/ui/ui\u dart\u state.cc(186)] 未处理的异常:类型“String”不是类型“int”的子类型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
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方法工作正常,它正在提取数据并打印。但是关于那次,我到现在还没有打印任何东西。好的,我试试。有人帮我吗?