【发布时间】:2021-01-20 23:35:19
【问题描述】:
我正在尝试解析一个颤振的 api。异步请求延迟了进度指示器显示的响应。但是在获取响应后进度指示器不会消失。它仍然在屏幕上。
获取响应时如何将进度加载器的状态更改为listview.builder?
这是我的代码。
import 'dart:convert';
import 'package:flutter/material.dart';
import 'users.dart';
import 'package:http/http.dart' as http;
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
bool isLoading = false;
List<Users> _users;
Future<List<Users>> getUsers() async {
var response = await http.get(Uri.encodeFull('http://jsonplaceholder.typicode.com/users'));
_users = usersFromJson(response.body);
isLoading = true;
}
@override
void initState() {
setState(() {
getUsers();
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(isLoading ? "Parsed Json" : "Loading..."),
backgroundColor: Colors.deepPurple,
),
body: isLoading ? ListView.builder(
itemCount: _users.length,
itemBuilder: (BuildContext context,int index){
return ListTile(
leading: Image.network('https://images.unsplash.com/photo-1488426862026-3ee34a7d66df?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=334&q=80'),
title: Text(_users[index].name),
);
}) : Center(child: CircularProgressIndicator()),
);
}
}
【问题讨论】:
-
你的布尔值总是假的,你把它设置为假 always
isLoading = false; -
@Reign 现在给我错误:在 null 上调用了 getter 'length'。
-
将其设置为空 []
List<Users> _users = [],如果长度 == 0 则创建另一个条件,如果不显示列表小部件