13

I am trying to create a listview with API data using bloc pattern following is the error:

'package:flutter/src/widgets/framework.dart': Failed assertion: line 5120 pos 12: 'child == _child': is not true.

My list file:

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'),
    );
  }
}

Error: enter image description here

M.ArslanKhan
  • 3,640
  • 8
  • 34
  • 56
Panks
  • 565
  • 1
  • 7
  • 20
  • Could you try to do null check to people? – Can Karabag Oct 03 '19 at 08:08
  • 5
    You are not returning any widget excep `else` case. You have to return a widget constantly inside `builder`. Otherwise you'll get this error. Just return a `SizedBox` outside of the if condition loop. – Mehmet Esen Oct 03 '19 at 09:07

5 Answers5

6

Problem is, builder() expects a widget & you're not returning a valid widget in the if/else if conditions. Try changing your code to the below version.

@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);
            }
        },
    );
}
Aziz Kaukawala
  • 320
  • 3
  • 7
  • but, i was also used return in each condition of futurebuilder. but, it still give a same error which i used chaining futurebuilder – Michael Fernando Oct 27 '21 at 02:47
2

For Others, those who looking for this exception but the answer doesn't match with your code to my tip is you should trace your child exceptions. This exception usually happens when there is something wrong with your child classes. Try undoing changes. see child classes initState for option.

gsm
  • 2,348
  • 17
  • 16
2

you need to close your app. not just hot restart it in your terminal because it will cause that error.

Jesus
  • 31
  • 3
-1

Addd Scaffold to your error-causing widget

softmarshmallow
  • 1,034
  • 2
  • 16
  • 31
-8

The Simple Answer is just Import the library**

  • import 'package:flutter/src/widgets/framework.dart';

This works for me I hope it works for you as well.

Muzammil
  • 688
  • 7
  • 7