This is my code:
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
List<User> _users = <User>[];
List<User> _usersDisplay = <User>[];
@override
void initState() {
super.initState();
fetchUsers().then((value){
_users.addAll(value);
_usersDisplay = _users;
print(_usersDisplay.length);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Users List'),
),
body: SafeArea(
child: Container(
child: ListView.builder(
itemBuilder: (context, index) {
if (_usersDisplay.length > 0){
return UserTile(user: this._usersDisplay[index]);
}else{
return LoadingView();
}
},
itemCount: _usersDisplay.length + 1,
),
),
),
);
}
}
While executing initStae() it prints _usersDisplay.length as 100 but only return LoadingView(). It not shows UserTile().
When checking _usersDisplay.length
inside of build it is always 0. Why?
Also I cannot define List as this way:
List<User> _users = List<User>();
change
fetchUsers().then((value){
_users.addAll(value);
_usersDisplay = _users;
print(_usersDisplay.length);
});
to
fetchUsers().then((value){
_users.addAll(value);
_usersDisplay = _users;
print(_usersDisplay.length);
setState(() {})
});