小编use*_*027的帖子

Flutter:将项目添加到列表并滚动到末尾后,Listview 获取滚动控制器的完整大小

这篇文章描述了一个非常相似的问题,但答案并不能解决所有问题:

我有一个可能很长的列表,用户可以在其中添加新项目(一次打开)。添加后/添加时,列表应滚动到末尾。

(顺便说一句,不,reverse: true不是一个选项)

阅读另一篇文章后,我明白使用SchedulerBinding.instance.addPostFrameCallback((_) => scrollToEnd());should 的技巧 b/c 新列表maxScrollExtent将是正确的。

但它不能可靠地工作:当已经滚动到列表末尾或接近末尾时,一切正常。但是,当添加新项目时列表滚动到其开头(或从结尾的某种方式)时,列表会滚动,但滚动位置恰好偏离了一项 - 最新的一项。

我认为这可能与未能让所有孩子活下来有关ListView.builder- 但如何解决呢?

哦,还有一个额外的问题:刚刚发现了另一个非常奇怪的行为:添加两个项目后,最后一个项目有点看不到,但列表不可滚动 - 这很奇怪。但更奇怪的是,在下一个添加项目单击时,列表会滚动一点点 - 但从未创建新项目!?

这是一个完整的例子:

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';

void main() {
  runApp(MyList());
}

class MyList extends StatefulWidget {
  MyList({Key key}) : super(key: key);

  @override
  _MyListState createState() => _MyListState();
}

var items = List<String>.generate(8, (i) => "Item $i");

class _MyListState extends State<MyList> {
  static ScrollController _scrollController = ScrollController();

  void add() {
    setState(() { …
Run Code Online (Sandbox Code Playgroud)

listview flutter

5
推荐指数
1
解决办法
4901
查看次数

标签 统计

flutter ×1

listview ×1