因此,我有一个无限宽度(Row)的小部件。为了用项目填充小部件,我正在使用Axis水平的Lisview构建器。我还可以将SingleChildScrollview用作水平轴,并将Row作为子级。
如果有几个项目,那么屏幕的宽度不会被填满,那就太好了。但是,当有很多项目时,Listview变为“可滚动”,并且我可以向右滚动以显示项目。
我想知道列表是否可滚动(如果它溢出)。目的是显示一个小文字“滚动以显示更多>>”。
我知道我可以使用数学并通过屏幕宽度计算项目宽度。但是... Listview已经知道了,所以我想知道是否有一种方法可以访问该信息
答案 0 :(得分:0)
在构建器中:
return NotificationListener(
onNotification: (scrollNotification) {
print("ScrollStartNotification");
// add your logic here
},
child: SingleChildScrollView(...
我试图自己检测完全相同的东西,至少将SingleChildScrollView和NotificationListener包裹在一起,这给了我一个开始进行此工作的参考点。
答案 1 :(得分:0)
我有类似的问题。我在这里找到了此解决方案:Determine Scroll Widget height
如果有帮助,请问以下问题:How do you tell if scrolling is not needed in a SingleChildScrollView when the screen is first built?
解决方案:
import 'package:flutter/scheduler.dart';
build
方法外部创建一个布尔标志,以跟踪是否已调用build
:bool buildCalledYet = false;
isScrollable
方法外部创建一个布尔build
变量:bool isScrollable;
build
方法的开头添加以下内容:if (!firstBuild) {
firstBuild = true;
SchedulerBinding.instance.addPostFrameCallback((_) {
setState(() {
isScrollable = !(_scrollController.position.maxScrollExtent > 0);
});
});
}
(buildCalledYet
的目的是防止此代码导致一遍又一遍地调用build
。)
isScrollable
是true
,请显示您的文字。