Flutter 分页滚动控制器ScrolPhysics
尝试分页ListView。但在ListView中包含物理参数时,无法使用此通知(只需忽略它)。但是如果我删除物理参数,我的widjet visuali就不会滚动了Flutter 分页滚动控制器ScrolPhysics,flutter,listview,scroll,Flutter,Listview,Scroll,尝试分页ListView。但在ListView中包含物理参数时,无法使用此通知(只需忽略它)。但是如果我删除物理参数,我的widjet visuali就不会滚动了 import 'package:flutter/material.dart'; import 'package:news_api_app/models/NewsModels/NewsModel.dart'; import 'BlogTile.dart'; class NewsListView extends StatefulWidg
import 'package:flutter/material.dart';
import 'package:news_api_app/models/NewsModels/NewsModel.dart';
import 'BlogTile.dart';
class NewsListView extends StatefulWidget {
final NewsModel newsModel;
NewsListView({required this.newsModel});
@override
_NewsListViewState createState() => _NewsListViewState();
}
class _NewsListViewState extends State<NewsListView> {
late ScrollController _controller;
_scrollListener() {
if (_controller.offset >= _controller.position.maxScrollExtent &&
!_controller.position.outOfRange) {
setState(() {
print("reach the bottom");
});
}
if (_controller.offset <= _controller.position.minScrollExtent &&
!_controller.position.outOfRange) {
setState(() {
print("reach the top");
});
}
}
@override
void initState() {
_controller = ScrollController();
_controller.addListener(_scrollListener);
super.initState();
}
@override
Widget build(BuildContext context) {
var articles = widget.newsModel.getArticleList;
return Container(
child: SingleChildScrollView(
child: Container(
padding: EdgeInsets.symmetric(horizontal: 16),
child: Column(
children: [
///Blogs
Container(
padding: EdgeInsets.only(top: 16),
child: Expanded(
child: NotificationListener<ScrollNotification>(
onNotification: (scrollNotification) {
if (scrollNotification is ScrollNotification) {
print("sd");
}
if (scrollNotification is ScrollStartNotification) {
print("Start");
} else if (scrollNotification
is ScrollUpdateNotification) {
print("Update");
;
} else if (scrollNotification is ScrollEndNotification) {
print("End");
}
return false;
},
child: ListView.builder(
controller: _controller,
shrinkWrap: true,
scrollDirection: Axis.vertical,
physics: const ClampingScrollPhysics(),
itemCount: articles.length,
itemBuilder: (context, index) {
return BlogTile(
title: articles[index].title,
desc: articles[index].description,
imageUrl: articles[index].urlImage,
url: articles[index].url,
);
},
),
),
),
),
],
),
),
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“包:news_api_app/models/NewsModels/NewsModel.dart”;
导入“BlogTile.dart”;
类NewsListView扩展了StatefulWidget{
最终新闻模型新闻模型;
NewsListView({required this.newsModel});
@凌驾
_NewsListViewState createState()=>\u NewsListViewState();
}
类_NewsListViewState扩展状态{
晚滚动控制器(u控制器),;
_scrollListener(){
如果(_controller.offset>=_controller.position.maxScrollExtent&&
!\u控制器。位置。超出范围){
设置状态(){
打印(“到达底部”);
});
}
如果(_controller.offset)我的滚动控制器不工作。我哪里出错了