When I first started learning state management in Flutter, it honestly felt like magic. I'd change one variable, call setState , and the screen would just… update. Later I met ValueNotifier and ValueListenableBuilder , and it got even stranger — now only one widget would rebuild while everything around it stayed perfectly still. I hadn't written any code to watch for changes. I hadn't wired anything up. It just worked. And anything that "just works" without me understanding why makes me a little uncomfortable. So I did what any curious developer does: I went down the rabbit hole. I wanted to know how a value "knows" when to tell the UI to rebuild. Who is listening? How does the change travel from my variable to the pixels on screen? That question led me to something much bigger than Flutter — a classic software design pattern called the Observer pattern . Once I understood it, the magic didn't disappear. It just turned into some...
ListView.builder is a versatile Flutter widget that allows you to create scrollable lists efficiently, especially when dealing with large or dynamic lists. Unlike a traditional ListView, where you provide a fixed list of children, ListView.builder generates list items on-demand as the user scrolls, which can help save memory and improve performance.
When we have to to deal with large amount of dynamically changing data or we have fetch data from the database, we have to use a ListView.builder widget.
The main difference between ListView and ListView.builder is one work with fixed data and other work with generated list items on-demand as the user scrolls, which can help save memory and improve performance.
ListView.builder widget has some additional parameters, which are:
- itemCount, is set to the length of the data source (myList), indicating the total number of items to be displayed.
- itemBuilder, defines how each list item is constructed. It receives an index, which is used to access the corresponding item in the data source.
class home extends StatelessWidget {
home({super.key});
List<String> Sub = ["CSE","EEE","CIVIL"];
List<String> FullN = ["Computer Science","Electric Engineering","Civil Engineering"];
List<int> Price =[320000,350000,470000];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
"Listview Builder",
style: TextStyle(fontWeight: FontWeight.bold),
),
centerTitle: true,
backgroundColor: Colors.deepOrange,
),
body: Container(
child: ListView.builder(
itemCount: Sub.length,
itemExtent: 65,
itemBuilder: (context, index) {
return ListTile(
leading: CircleAvatar(child: Text(Sub[index][0]),),
title: Text(Sub[index]),
subtitle: Text(FullN[index]),
trailing: Text(Price[index].toString() + "/-"),
);
}),
),
);
}
}

Comments
Post a Comment