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),
],
);
},
),
],
),
),
);
}
}
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!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With