失败的断言行 5120 pos 12: 'child = _child' 不是真的

Pan*_*nks 6 flutter bloc

我正在尝试使用 bloc 模式创建带有 API 数据的列表视图,错误如下:

'package:flutter/src/widgets/framework.dart':断言失败:第 5120 行 pos 12:'child == _child':不正确。

我的列表文件:

import 'package:Instant_Feedback/Dashboard/PeopleList/bloc/bloc.dart';
import 'package:Instant_Feedback/People/strongConnection_model.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

class PeopleListing extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _PeopleListingState();
}
class _PeopleListingState extends State<PeopleListing> {
  PeopleListBloc peopleBloc;
  @override
  void initState() {
    super.initState();
    peopleBloc = BlocProvider.of<PeopleListBloc>(context);
    peopleBloc.dispatch(DisplayPeopleList());
  }

  @override
  Widget build(BuildContext context) {
    return BlocBuilder(
      bloc: peopleBloc,
      builder: (context, state){
        if (state is PeopleUninitializedState) {
          print("PeopleUninitializedState");
        } else if (state is PeopleFetchingState) {
          print("PeopleFetchingState");
        } else if (state is PeopleFetchingState) {
          print("PeopleFetchingState");
        } else {
          final stateAsPeopleFetchedState = state as PeopleFetchedState;
          final players = stateAsPeopleFetchedState.people;
          return buildPeopleList(players);
        }
      },
    );
  }

Widget buildPeopleList(List<StrongConnection_model> people) {
    print(people.length);
    return Container(
      child: Text('sdf sdkfh kdj'),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

错误: 在此处输入图片说明

小智 6

问题是,builder()需要一个小部件,并且您没有在条件中返回有效的小部件if/else if。尝试将您的代码更改为以下版本。

@override
Widget build(BuildContext context) {
    return BlocBuilder(
        bloc: peopleBloc,
        builder: (context, state){
            if (state is PeopleUninitializedState) {
                <!-- Expects A Widget -->
                print("PeopleUninitializedState");
                return SizedBox();
            } else if (state is PeopleFetchingState) {
                <!-- Expects A Widget -->
                print("PeopleFetchingState");
                return SizedBox();
            } else if (state is PeopleFetchingState) {
                <!-- Expects A Widget -->
                print("PeopleFetchingState");
                return SizedBox();
            } else {
                final stateAsPeopleFetchedState = state as PeopleFetchedState;
                final players = stateAsPeopleFetchedState.people;
                return buildPeopleList(players);
            }
        },
    );
}
Run Code Online (Sandbox Code Playgroud)