Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

LateInitializationError: Field has not been initialized

I am trying to start my main.dart file which is connected to an api. So far i found out that Late List<Cases> casesList is not nullable. I tried to do this List<Cases>? casesList when i do that i get a lot more errors. any help would be appriciated.

Error: LateInitializationError: Field ‘casesList’ has not been initialized.

Main.dart

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

class MyHomePage extends StatefulWidget {
  const MyHomePage({ Key? key, required this.title}) : super(key: key);


  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final ApiService api = ApiService();
  late List<Cases> casesList;

  @override
  Widget build(BuildContext context) {
    if(casesList == null) {
      casesList = <Cases>[];
    }

    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
          child: FutureBuilder(
            future: loadList(),
            builder: (context, snapshot) {
              return casesList.isNotEmpty? CasesList(cases: casesList):
              const Center(child:
              Text('No data found, tap plus button to add!')
              );
            },
          )
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          _navigateToAddScreen(context);
        },
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }

  Future loadList() {
    Future<List<Cases>> futureCases = api.getCases();
    futureCases.then((casesList) {
      setState(() {
        this.casesList = casesList;
      });
    });
    return futureCases;
  }

Model.dart

class Cases {
  final int klantId;
  final String mailaddres;
  final String wachtwoord;
  final String klantvoornaam;
  final String tussenvoegsel;
  final String klantachternaam;
  final String bedrijfsnaam;
  final String telefoonnummer;

  Cases({ required this.klantId, required this.mailaddres, required this.wachtwoord, required this.klantvoornaam, required this.tussenvoegsel,
    required this.klantachternaam, required this.bedrijfsnaam, required this.telefoonnummer });

  factory Cases.fromJson(Map<String, dynamic> json) {
    return Cases(
      klantId: json['klantId'] as int,
      mailaddres: json['mailaddres'] as String,
      wachtwoord: json['wachtwoord'] as String,
      klantvoornaam: json['klantvoornaam'] as String,
      tussenvoegsel: json['tussenvoegsel'] as String,
      klantachternaam: json['klantachternaam'] as String,
      bedrijfsnaam: json['bedrijfsnaam'] as String,
      telefoonnummer: json['telefoonnummer'] as String,
    );
  }

  @override
  String toString() {
    return 'Trans{id: $klantId, name: $mailaddres, age: $wachtwoord}';
  }
}

caseslist.dart

class CasesList extends StatelessWidget {

  final List<Cases> cases;
  const CasesList({Key? key, required this.cases}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return
      ListView.builder(
          itemCount: cases == null ? 0 : cases.length,
          itemBuilder: (BuildContext context, int index) {
            return
              Card(
                  child: InkWell(
                    onTap: () {
                      Navigator.push(
                        context,
                        MaterialPageRoute(
                            builder: (context) => DetailWidget(cases[index])),
                      );
                    },
                    child: ListTile(
                      leading: const Icon(Icons.person),
                      title: Text(cases[index].klantvoornaam),
                      subtitle: Text(cases[index].klantachternaam.toString()),
                    ),
                  )
              );
          });
  }
}

privider.dart

  Future<List<Cases>> getCases() async {
    Response res = await get(Uri.parse(apiUrl));

    if (res.statusCode == 200) {
      List<dynamic> body = jsonDecode(res.body);
      List<Cases> cases = body.map((dynamic item) => Cases.fromJson(item)).toList();
      return cases;
    } else {
      throw "Failed to load cases list";
    }
  }

>Solution :

just add this method to your class

@override
void initState() {
  super.initState();
  casesList = [];
}

or initialize the list as below:

List<Cases> casesList = [];
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading