问题描述
我很难在颤动中无限滚动。 我尝试先加载 10 个食谱,然后在 ScrollController 的帮助下显示新食谱。 当没有更多食谱时,我想显示一条消息,显示没有更多帖子。
这是我的项目代码。
import 'package:flutter/material.dart';
import 'package:test/model/recipe.dart';
import 'package:test/pages/recipe_details.dart';
import 'package:test/widgets/recipe_card.dart';
import 'package:http/http.dart' as http;
class SingleCategory extends StatefulWidget {
final Recipe recipe;
final int recipeCourseid;
final String recipeCourseName;
SingleCategory({
this.recipe,@required this.recipeCourseid,@required this.recipeCourseName,});
@override
_SingleCategoryState createState() => _SingleCategoryState();
}
class _SingleCategoryState extends State<SingleCategory> {
ScrollController _scrollController = ScrollController();
int pageNumber = 1;
var myRecipe;
Future<List<Recipe>> getRecipeList({int pageNumber}) async {
// pageNum = 1;
var response = await http.get(
'https://test.com/wp-json/wp/v2/wprm_recipe?wprm_course=${widget.recipeCourseid}&per_page=10&$pageNumber');
var body = response.body;
final recipes = recipeFromJson(body)
return recipes;
}
@override
void initState() {
super.initState();
_scrollController.addListener(() {
if (_scrollController.position.pixels ==
_scrollController.position.maxScrollExtent) {
pageNumber++;
print(pageNumber);
getRecipeList();
}
});
}
@override
void dispose() {
_scrollController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Directionality(
textDirection: TextDirection.rtl,child: Scaffold(
appBar: AppBar(
title: Text(widget.recipeCourseName),centerTitle: true,elevation: 5,),body: Padding(
padding: const EdgeInsets.symmetric(vertical: 16.0,horizontal: 12.0),child: FutureBuilder(
future: getRecipeList(),builder: (context,snapshot) {
if (snapshot.hasData) {
return GridView.builder(
controller: _scrollController,itemCount: snapshot.data.length,gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,crossAxisSpacing: 12.0,mainAxisSpacing: 12.0,itemBuilder: (BuildContext context,int index) {
myRecipe = snapshot.data[index].recipe;
return InkWell(
onTap: () {
Navigator.push(
context,MaterialPageRoute(
builder: (context) => RecipeDetails(
recipe: snapshot.data[index],);
},child: RecipeCard(myRecipe: myRecipe),);
},);
} else if (snapshot.hasError) {
return Center(
child: Text('There was an error,Please try again'),);
} else {
return Center(
child: CircularProgressIndicator(),);
}
},);
}
}
如果你能指出我正确的方向,我会很感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)