- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望创建以下内容:当到达内部 Listview 的顶部或底部时,我想继续在顶部 Listview 中滚动。见动图:
Gif of what I got so far
一个选项是在到达底部时将内部 Listview 的物理设置为 NeverScrollablePhysics(使用 Controller 的监听器),但是如果您想再次向上滚动,这将不起作用。
请参阅下面的代码,提前致谢!
class TestAppHomePage extends StatefulWidget {
@override
TestAppHomePageState createState() => new TestAppHomePageState();
}
class TestAppHomePageState extends State<TestAppHomePage> {
ScrollController _scrollController = ScrollController();
@override
void initState() {
print('set up');
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: Container(
color: Colors.green,
child: ListView(
primary: false,
// controller: _scrollController,
children: <Widget>[topWidget(), topWidget(), topWidget(), topWidget()],
),
),
);
}
Widget topWidget() {
return Card(
color: Colors.purple,
margin: EdgeInsets.all(16),
child: Container(
height: 400,
child: Column(
children: <Widget>[
Container(height: 100, color: Colors.white),
Expanded(
child: ListView(
controller: _scrollController,
children: List.generate(
40,
(index) {
return someText(index);
},
).toList()))
],
),
));
}
Widget someText(int i) {
return Text('text no $i');
}
}
最佳答案
我和 OP 在同一个项目上工作,但因为还没有人回应,我想我会分享我自己的摆弄、思考过程以及我现在所拥有的。我会更新这个答案
首先,我试图阻止使用大量样板代码创建解决方案,但恐怕我这样做可能有点过头了。我很确定我的解决方案不正确,因为编译器给了我警告。
闲话少说,我的想法是:
1. 我需要一种方法来捕获用户在内部列表中的输入。因此,创建自定义 ScrollPhysics 是有意义的。
2. 重要的是,innerlist 在所有情况下都能正常工作。因此,它总是调用 super 来处理。
3. 我需要传递一个函数,该函数接受我捕获的输入并假装该输入被传递到外部列表中。
The Gif with the result
// imports and stuff..
class CustomScroll extends BouncingScrollPhysics {
final Function outerController;
CustomScroll({this.outerController, ScrollPhysics parent}): super(parent: parent);
@override
CustomScroll applyTo(ScrollPhysics ancestor) {
return CustomScroll(
outerController: outerController, parent: buildParent(ancestor));
}
@override
Simulation createBallisticSimulation(ScrollMetrics position, double velocity) {
if (position.pixels >= position.maxScrollExtent && velocity >= 0.0) {
outerController(velocity);
}
return super.createBallisticSimulation(position, velocity);
}
}
class ListInAList extends StatefulWidget {
createState() => ListInAListState();
}
class ListInAListState extends State<ListInAList> with TickerProviderStateMixin {
List<ScrollController> innerControllers = List();
ScrollController outerController = ScrollController();
final outerPhysics = BouncingScrollPhysics();
void innerListener(double velocity, ScrollController outerController)
{
final sim = outerPhysics.createBallisticSimulation(outerController.position, velocity);
ScrollActivity _test = BallisticScrollActivity(outerController.position.activity.delegate,sim,this);
if (_test != null)
outerController.position.beginActivity(_test);
}
Widget build(BuildContext context) {
return ListView.builder(
itemBuilder: buildItem, controller: outerController, itemCount: 4, physics: outerPhysics);
}
Widget buildItem(BuildContext context, int index) {
final innerController = ScrollController();
innerControllers.add(innerController);
return Column(children: [
Container(height: 100, color: Colors.blue),
ListView.builder(
physics: CustomScroll(outerController: (velocity) => innerListener(velocity, outerController)),
itemBuilder: buildLoremImpsum,
controller: innerController,
itemCount: 20),
]);
}
Widget buildLoremImpsum(context, index) {
return Container(
height: 30,
color: (index % 2 == 0)
? Color.fromRGBO(255, 0, 0, 1)
: Color.fromRGBO(255, 255, 0, 1));
}
}
createBallisticSimulation
和函数
innerListener
是代码中真正有趣的部分,其他一切都只是示例的一部分。
关于listview - Flutter:到达嵌套 ListView 的底部时继续在顶部 ListView 中滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59294547/
我正在尝试制作一个程序,显示飞机到达和起飞的时间表,然后要求用户在 C 中输入时间。然后程序将找到最接近输入时间的到达时间用户。问题是它没有按预期工作,并且给我一个错误的到达时间,甚至不接近输入的时间
我有一个不断填充新信息行的 Excel 表,其中一列与联系客户的日期(有时为空 - 无需输入日期)相关,如果在 10 内没有收到回复从那以后的几天,我们必须发送提醒,如果过了 17 天,我们必须取消订
实际到达很简单,标签进入接收器天线范围,但是偏离是造成问题的原因。 首先,我们了解一些有关设置的信息。 标签: 它们以433Mhz的速度工作,每1.5秒钟发送一次“心跳”,移动时进入传输突发模式,这种
我构建了这段代码来从 URL 获取 XML我使用了 AsyncTask,当到达 getInputStream() 点时,半身应用程序仍然崩溃 重点是我想从 url 获取 XML 作为字符串。 我尝试不
所以我有一个 TDBGrid,我的目的是搜索 DBGrid 的 Fieldname 并将其与我的编辑的 Text 属性进行比较,如果它们相等,则 我想将找到匹配项的整列写入列表框。 通过带有 fiel
我会写得非常简单,因为实际的修复并不比我不理解的实际设计重要。似乎一旦我的 @RequestBody 命中 @Controller,有关 subtype 的信息就会丢失。 假设我们有: class A
所以我正在做这个简单的动态编程问题,关于达到 n一次只能走 1 或 2 步。我知道答案基本上是一个斐波那契序列,答案是:达到n-2的步骤数+ 到达 n-1 的步数. T(n) = T(n-1) +
(function start (){ $('.bar').each(function(i){ var $bar = $(this); $(this).append('')
我有一个程序,我在启动它之前要求用户输入。 public static void main(String args[]) { String database = JOptionPane.sho
就是这样,我必须在提交按钮上有一张图片,但它根本没有出现。 我希望它看起来像这样: 现在看到我的是这样的,我不明白为什么它没有出现在页面上。 HTML CSS #sognu { bac
click here 点击后重定向至 xyz.com/#contact, 现在我想获得div #abc的顶部位置 //set the value as a variable, and remove t
here is a fiddle to know where I am starting from 我要解决的问题涉及对单个 html 文件的内容进行“分页”,以一种将它们一次锁定在一个部分中的方式。
是否可以在传递页面部分时运行 javascript 函数?我想要实现的是类似于 Twitter Bootstrap 的 scrollspy。 最佳答案 您可以使用 waypoints 插件: http
我有一个可以动态调整其大小的 iframe。我通过父页面上的发布消息和监听器解决了这个问题,因此每次 iframe 的内容发生变化时,iframe 的大小也会发生变化,并且永远不会有滚动条。 在 if
我试图让我的导航栏在到达我在网站下方设置的 anchor 时变得透明。 这是我的HTML Home About Logo W
我写了一个简单的程序来管理姓名列表(下面是程序的一部分)。我希望函数“choice()”结束并返回到 main()——从而结束程序——当用户对变量“option”的输入为 4 时。然而,choice(
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
代码片段在 while 循环后有一个 EOF,之后必须再次重新打开文件 - fopen 被重用。我的问题是是否有办法避免这种笨拙的 fopen 双重使用或以某种方式不使用 EOF? if (!(f=f
从这个页面: http://www.beta.inegi.org.mx/app/buscador/default.html?q=e15a61a 我正在尝试检索此网址: http://www.beta.
我使用维基百科的 API 来获取有关页面的信息。API 给我这样的 JSON: "query":{ "pages":{ "188791":{ "pageid":18879
我是一名优秀的程序员,十分优秀!