Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ListView.builder gives error: RenderBox was not laid out

Tags:

flutter

My listview.builder gives me tons of Renderbox errors such as flutter:

Another exception was thrown: RenderBox was not laid out: RenderViewport#fa71e NEEDS-LAYOUT NEEDS-PAINT

And:

NoSuchMethodError: The method '<=' was called on null.

I tried adding a padding but to no avail. I am running on Flutter version 1.3.10.

What was initialised wrongly?

import 'package:flutter/material.dart';

void main() => runApp(TodoList());

class TodoList extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return _TodoListState();
  }
}

var TaskTextField;
List taskTextList = [];
var TaskIsImportant = false;

class _TodoListState extends State<TodoList> {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text("To-Do List V2"),
        ),
        body: Column(
          children: <Widget>[
            Container(
              child: TextField(
                decoration: InputDecoration(
                  hintText: "Enter title of task to be added"),
                onChanged: (taskTextField) {
                  setState(() {
                    TaskTextField = taskTextField;
                    print(TaskTextField);
                  });
                },
              ),
              margin: EdgeInsets.all(16.0),
            ),
            CheckboxListTile(
              title: Text("Important"),
              activeColor: Colors.blue,
              value: TaskIsImportant,
              onChanged: (val) {
                setState(() {
                  TaskIsImportant = !TaskIsImportant;
                  print(TaskIsImportant);
                });
              },
            ),
            Container(
              margin: EdgeInsetsDirectional.fromSTEB(118, 20, 118, 20),
              child: Row(
                children: <Widget>[
                  RaisedButton(
                    child: Icon(Icons.add),
                    onPressed: () {
                      setState(() {
                        if (TaskIsImportant) {
                          taskTextList.add("❗️$TaskTextField");
                          //taskTitleList.add(TaskDetailField);
                        } else {
                          taskTextList.add(TaskTextField);
                          //taskTitleList.add(TaskDetailField);
                        }
                      });
                    },
                  ),
                  RaisedButton(
                    child: Icon(Icons.done_all),
                    onPressed: () {
                      setState(() {
                        taskTextList = [];
                      });
                    },
                  ),
                ],
              ),
            ),
            ListView.builder(
              itemBuilder: (context, index) {
                var title = taskTextList[index];
                padding: EdgeInsets.all(16.0);
                return ListView(
                  children: <Widget>[
                    Text(title),
                  ],
                );
              },
            ),
          ],
        ),
      ),
    );
  }
}
like image 615
Xuan Han Tan Avatar asked Nov 25 '25 02:11

Xuan Han Tan


1 Answers

Please change your ListView.builder to,

        Expanded(
          child: ListView.builder(
            itemBuilder: (context, index) {
              var title = taskTextList[index];
              padding: EdgeInsets.all(16.0);
              return ListTile(
                title: Text(title),
              );
            },
            itemCount: taskTextList.length,
          ),
        )

Hope this helps!

like image 65
Hemanth Raj Avatar answered Nov 27 '25 23:11

Hemanth Raj



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!