我是 Flutter 开发的新手,在我的代码中为什么我收到此错误(taskTitle必须初始化不可为空的实例字段),尽管在 constructor 中初始化了实例字段。
因此,我假设每当创建此类实例时,用户都需要提供两个强制成员,因此不应发生此错误(尽管如果添加 Late 修饰符此错误就会消失)。
请解答我的疑惑。
class Task {
String taskTitle;
bool isDone = false;
Task(String taskTitle, bool isDone) {
this.taskTitle = taskTitle;
this.isDone = isDone;
}
}
Run Code Online (Sandbox Code Playgroud) 我想实现当用户拉动刷新时的行为,指示器不断旋转,直到以块模式从网络获取数据。事实上,我知道发生这种情况的原因,因为刷新方法立即返回。如何阻止此方法直到从网络获取数据。我如何等待数据来自网络。谢谢!
Future<void> _refresh() async{
context.read<PostBloc>(RefreshEvent());
}
@override
Widget build(BuildContext context) {
return BlocBuilder<PostBloc, PostStates>(builder: (context, state){
switch (state.status){
case PostStatus.failure:
return const Center(child: Text('failed to fetch posts'));
case PostStatus.success:
if (state.posts.isEmpty) {
return const Center(child: Text('no posts'));
}
return RefreshIndicator(
triggerMode: RefreshIndicatorTriggerMode.onEdge,
onRefresh: () async {
await _refresh();
},
child: ListView.builder(
physics: AlwaysScrollableScrollPhysics(),
itemBuilder: (context, index){
if (index >= state.posts.length){
return BottomLoader();
}
return PostListItem(post: state.posts[index]);
},
itemCount: state.hasReachedMax ? state.posts.length : state.posts.length + 1,
controller: _scrollController,
),
);
case …Run Code Online (Sandbox Code Playgroud)