I just started learning Flutter and during the development, the app got stuck at Performing hot-reload.
I tried flutter clean
, flutter pub get
and reboot of the android emulator and then re-run the app. Now the app is stuck at Connecting to VM service.
After undoing my changes, it got resolved. So I traced my changes line by line and found that my incomplete code that returned an empty Container from ListView builder’s callback is causing it. I could reproduce it in a clean project as follow:
import 'package:flutter/material.dart';
void main() {
runApp(const MainApp());
}
class MainApp extends StatelessWidget {
const MainApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Padding(
padding: EdgeInsets.all(1),
child: ListView.builder(itemBuilder: (context, index) {
return Container();
}))),
);
}
}
Why does this happen? My guess is that it needs to return a Widget or a tree of Widgets that finally resolves to a Render Widget. But then, shouldn’t it be somehow warned or errored if I cannot return Widgets that don’t resolve to a Render Widget?
I have tried searching the existing Flutter issues and didn’t find it.
2
Answers
The "itemCount" parameter in ListView.builder is missing, which is necessary to define the number of items the list should display.
The Container inside the itemBuilder is empty, meaning it has no height, width, or content, so nothing will be displayed.
Here’s the updated version.
Containers with no children try to be as big as possible
Actually container with no children or no dimensions constraints try to be as big as possible.
Remember, you are within a scroll view which offers an infinity of space, that container which is placed inside that scroll view tries to be as big as possible
Then how much big? to infinity!
which leads to white blank screen.
for more info about container go here