颤振列表.生成器获取JSON



这是我的代码:

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,
),
),
),
);
}
}

当执行initstate()时,它打印_usersDisplay。长度为100但只返回LoadingView()。它没有显示UserTile()

在构建内部检查_usersDisplay.length时,它总是0。为什么?

不能定义这样列出:List<User> _users = List<User>();

UseFuture Builderfor JSON &

列表
FutureBuilder(
builder: (context, snapshot) {
// WHILE THE CALL IS BEING MADE AKA LOADING
if (ConnectionState.active != null && !snapshot.hasData) {
return Center(child: Text('Loading'));
}
// WHEN THE CALL IS DONE BUT HAPPENS TO HAVE AN ERROR
if (ConnectionState.done != null && snapshot.hasError) {
return Center(child: Text(snapshot.error));
}
// IF IT WORKS IT GOES HERE!
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context, index) {
return Text(snapshot.data[index].toString());
},
);
},
future: getAllTodos(),
),

change

fetchUsers().then((value){
_users.addAll(value);
_usersDisplay = _users;
print(_usersDisplay.length);
});

fetchUsers().then((value){
_users.addAll(value);
_usersDisplay = _users;
print(_usersDisplay.length);
setState(() {})
});

最新更新