Flutter 如何使用FutureBuilder实现滚动不定式
我试图用futurebuilder实现一个InfinitiveScroll,但我不知道如何调用该方法来加载更多数据。 我留下了调用第一个用户的代码,我使用的是reqres.in的API。 我尝试了一个状态,但结果是一个无限循环。 检查示例,但它们使用ListView.builder,对于此用例,FutureBuilder不是最佳选项 Mi代码:Flutter 如何使用FutureBuilder实现滚动不定式,flutter,flutter-layout,flutter-dependencies,flutter-animation,Flutter,Flutter Layout,Flutter Dependencies,Flutter Animation,我试图用futurebuilder实现一个InfinitiveScroll,但我不知道如何调用该方法来加载更多数据。 我留下了调用第一个用户的代码,我使用的是reqres.in的API。 我尝试了一个状态,但结果是一个无限循环。 检查示例,但它们使用ListView.builder,对于此用例,FutureBuilder不是最佳选项 Mi代码: import 'package:animate_do/animate_do.dart'; import 'package:flutter/materia
import 'package:animate_do/animate_do.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:watu_flutter/models/req_model.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Material App',
home: Scaffold(
appBar: AppBar(
title: Text('Material App Bar'),
),
body: MiPagina()),
);
}
}
Future<ReqResRespuesta> getUsuarios() async {
final resp = await http.get('https://reqres.in/api/users?page=2');
print(resp.body);
//resp.body es un Json
return reqResRespuestaFromJson(resp.body);
}
class MiPagina extends StatefulWidget {
const MiPagina({Key key}) : super(key: key);
@override
_MiPaginaState createState() => _MiPaginaState();
}
class _MiPaginaState extends State<MiPagina> {
List<Usuario> usuariooState;
@override
void initState() {
// TODO: implement initState
super.initState();
usuariooState = [];
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder(
future: getUsuarios(),
builder: (context, AsyncSnapshot<ReqResRespuesta> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(child: CircularProgressIndicator());
} else if (snapshot.connectionState == ConnectionState.done) {
return ListaUsuarios(snapshot.data.data);
}
},
),
floatingActionButton: FloatingActionButton(
onPressed: () {
//HERE CALL METHOD FETCH MORE USERS
},
),
);
}
}
class ListaUsuarios extends StatelessWidget {
final List<Usuario> usuarios;
ListaUsuarios(this.usuarios);
@override
Widget build(BuildContext context) {
print(usuarios);
return ListView.builder(
itemCount: usuarios.length,
itemBuilder: (context, index) {
final usuario = usuarios[index];
return FadeInLeft(
duration: Duration(milliseconds: 300 * index),
child: ListTile(
trailing: Image.network(usuario.avatar),
title: Text(usuario.firstName),
),
);
},
);
}
}
import'package:animate_do/animate_do.dart';
进口“包装:颤振/材料.省道”;
将“package:http/http.dart”导入为http;
导入“包装:watu_颤振/models/req_model.dart”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“材料应用程序”,
家:脚手架(
appBar:appBar(
标题:文本(“材质应用栏”),
),
正文:MiPagina()),
);
}
}
Future getUsuarios()异步{
final resp=wait http.get('https://reqres.in/api/users?page=2');
印刷品(分别为正文);
//resp.body es un Json
返回REQUESPRESUESTAFROMJSON(响应主体);
}
类MiPagina扩展了StatefulWidget{
const MiPagina({Key}):super(Key:Key);
@凌驾
_miPaginAtate createState()=>\u miPaginAtate();
}
类_mipaginate扩展状态{
表1-1-1;
@凌驾
void initState(){
//TODO:实现initState
super.initState();
usuariostate=[];
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:未来建设者(
future:getUsuarios(),
生成器:(上下文,异步快照){
if(snapshot.connectionState==connectionState.waiting){
返回中心(子项:CircularProgressIndicator());
}else if(snapshot.connectionState==connectionState.done){
返回ListaUsuarios(snapshot.data.data);
}
},
),
浮动操作按钮:浮动操作按钮(
已按下:(){
//这里调用方法获取更多用户
},
),
);
}
}
类ListaUsuarios扩展了无状态小部件{
最终清单惯例;
ListaUsuarios(这是usuarios);
@凌驾
小部件构建(构建上下文){
印刷品(通常);
返回ListView.builder(
itemCount:usuarios.length,
itemBuilder:(上下文,索引){
最终usuario=usuarios[索引];
返回FadeInLeft(
持续时间:持续时间(毫秒:300*索引),
孩子:ListTile(
尾随:Image.network(usuario.avatar),
标题:文本(usuario.firstName),
),
);
},
);
}
}