flutter - currentState null 颤动
问题描述
我有这门课,我不明白为什么,但是如果我登录它会出错,并且会破坏整个视图。该错误导致我进入“.currentState!”
我不明白为什么,我错了什么?我是否歪曲了数据?在我看来一切都已初始化,他们还告诉我错误是我没有初始化某些东西..但在我看来是非常正确的
class GiornoSettimanale extends StatefulWidget {
const GiornoSettimanale({
required this.day,
this.onOpenSelected,
this.onCloseSelected,
this.onOpeningCreated,
this.onOpeningDeleted,
this.initialValues,
Key? key,
}) : super(key: key);
final Day day;
final void Function(TimeOfDay time, int index)? onOpenSelected;
final void Function(TimeOfDay time, int index)? onCloseSelected;
final void Function(int index)? onOpeningCreated;
final void Function(int index)? onOpeningDeleted;
final List<OpeningHours?>? initialValues;
@override
GiornoSettimanaleState createState() => GiornoSettimanaleState();
}
final _openingsKeys = <Tuple<int, GlobalKey<DayWidgetState>>>[];
final _openings = <Tuple<int, DayWidget>>{}.obs;
void firstOpeningHour(TimeOfDay time, int index) {
if (!_isClosed.value && _openings.isNotEmpty && index < _openings.length)
_openingsKeys[index].second.currentState!.customOpeningHour = time;
}
void firstClosingHour(TimeOfDay time, int index) {
if (!_isClosed.value && _openings.isNotEmpty && index < _openings.length)
_openingsKeys[index].second.currentState!.customClosingHour = time;
}
void initState() {
super.initState();
final key = Tuple(0, GlobalKey<DayWidgetState>());
_openingsKeys.add(key);
_openings.add(
Tuple(
0,
DayWidget(
iconRemove: false,
key: key.second,
onOpeningSelected: widget.onOpenSelected != null
? (time) => widget.onOpenSelected!.call(time, 0)
: null,
onClosingSelected: widget.onCloseSelected != null
? (time) => widget.onCloseSelected!.call(time, 0)
: null,
),
),
);
_isClosed.listen((isClosed) {
if (isClosed) {
_openings.clear();
_openingsKeys.clear();
} else {
final key = Tuple(0, GlobalKey<DayWidgetState>());
_openingsKeys.add(key);
_openings.add(
Tuple(
0,
DayWidget(
iconRemove: false,
key: key.second,
onOpeningSelected: widget.onOpenSelected != null
? (time) => widget.onOpenSelected!.call(time, 0)
: null,
onClosingSelected: widget.onCloseSelected != null
? (time) => widget.onCloseSelected!.call(time, 0)
: null,
),
),
);
}
});
if (widget.initialValues != null) {
widget.initialValues?.asMap().entries.forEach((element) {
final index = element.key;
final openingHours = element.value;
addNewDay(index);
_openingsKeys
.firstWhere((element) => element.first == index)
.second
.currentState!
..customClosingHour = openingHours!.close
..customOpeningHour = openingHours.open;
});
}
}
解决方案
推荐阅读
- git - GitHub 存储库错误:此时无法检索最新提交
- javascript - 过滤对象数组但仅返回特定属性 - JS
- r - ggsave 不在 svg 文件中保存网格线
- aws-cdk - 为什么在更新 BucketPolicy 时管理员帐户的权限被拒绝?
- python - Python DataFrame TypeError:只能将整数标量数组转换为标量索引
- javascript - 将超时设置为 fs.copy 函数
- javascript - 两个脚本冲突 - 一个是第二个工作 - 寻找解决方案
- bash - 如何使用 sed 在文件末尾追加一行
- python - Python 正则表达式中的反斜杠字符
- java - 如何修改链表中的追加和插入操作?