Flutter 如何在flatter中http请求时显示指示器
这是请求函数,但在创建列表和显示项目之前没有显示任何内容。我想在本例中显示指示器,在加载项目时,在显示之前,显示指示器Flutter 如何在flatter中http请求时显示指示器,flutter,Flutter,这是请求函数,但在创建列表和显示项目之前没有显示任何内容。我想在本例中显示指示器,在加载项目时,在显示之前,显示指示器 Future<List<Film>> fetchFilms() async { var url = 'http://infinite-dawn-32185.herokuapp.com/api/all'; var response = await http
Future<List<Film>> fetchFilms() async
{
var url = 'http://infinite-dawn-32185.herokuapp.com/api/all';
var response = await http.get(url);
var drugs = List<Film>();
if (response.statusCode == 200)
{
var drugsJson = json.decode(response.body)['data'];
for (var drugJson in drugsJson)
{
drugs.add(Drug.fromJson(drugJson));
}
}
return drugs;
}
Future fetchFilms()异步
{
var url='1〕http://infinite-dawn-32185.herokuapp.com/api/all';
var response=wait http.get(url);
var=List();
如果(response.statusCode==200)
{
var drugsJson=json.decode(response.body)['data'];
for(drugsJson中的var drugJson)
{
add(Drug.fromJson(drugJson));
}
}
归还毒品;
}
使用此软件包:
此软件包提供各种不同的加载图标
在pubspec.yaml中将包安装到项目中并在文件顶部使用import“package:flatter\u spinkit/flatter\u spinkit.dart”后,将以下内容放在希望加载屏幕显示的文件的构建方法中,如下所示:
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: SpinKitDoubleBounce(
color: Colors.white,
size: 100.0,
)));
}
“SpinKitDoubleBounce”上面的代码段中使用的名称决定了要使用23个加载图标中的哪一个。因此,如果您想使用DualRing图标,那么请使用“SpinKitDualRing”。制作一个变量并将其称为例如
isLoading
,将其设置为默认值false
然后在isLoading为true时有条件地显示指示器。将isLoading更改为true,然后在使用await http.get(…命令行之前启动请求,并在完成后将其更改回false
bool isLoading = false;
...
Future<List<Film>> fetchFilms() async
{
var url = 'http://example.com/api/test';
isLoading = true;
var response = await http.get(url);
isLoading = false;
var drugs = List<Film>();
if (response.statusCode == 200)
{
var drugsJson = json.decode(response.body)['data'];
for (var drugJson in drugsJson)
{
drugs.add(Drug.fromJson(drugJson));
}
}
return drugs;
}
我正在使用一个三元表达式
yourCondition?“这发生在true上”:“这发生在false上”
有条件地显示小部件。如果isLoading
为true,它将显示ProgressIndicator,当它为false时,它将呈现一个没有大小的SizedBox(因此它基本上不可见)创建一个类似于isLoading
的变量,并将其设置为false作为默认值。当isLoading
为true时,有条件地显示指示器。在启动请求之前,将isLoading
更改为true(在带有wait http.get的行之前)(…
并在完成后将其更改回false。如何使用指示器小部件@xDragoYou轻松地执行此操作:…子项:isLoading?CircularProgressIndicator():SizedBox(),
。当您需要在另一个小部件中进行isLoading
时,您应该使用提供程序跨多个小部件访问信息。很快,我在Flatter中是新手,我在build()中将指示器条件放在了指示器的显示位置。真正基本的方法是build(){return isLoading?CircularProgressIndicator():SizedBox();}
我正在使用三元表达式条件?“这发生在true上”:“这发生在false上”
在此处有条件地显示小部件。
...
@override
Widget build(BuildContext context) {
return isLoading ? CircularProgressIndicator() : SizedBox();
}
...