Flutter:如何恢复 ListView 的位置?

标签 flutter

当使用 Navigator 路由主 ListView 及其详细信息 ItemView 时,ListView 的滚动位置丢失返回堆栈。

如何恢复ListView滚动位置?

重用 ListView 小部件也失去了位置 - 在 flutter 示例中也看不到重用 Widget。

Rainer 要求的示例代码,

 Widget build(BuildContext context) {
return new MaterialApp(

  routes: <String, WidgetBuilder>{
    '/': (BuildContext context) => new MyListView(),
  },
  onGenerateRoute: (RouteSettings s) {
    final List<String> paths = name.split('/');
    ...
    return new new ItemView(paths[1])
  }
}

MyListView 中,当 ItemRow.onTab => Navigator.pushNamed(c, '/item/1') 时。

ItemView返回按钮调用Navigator.pushNamed('/');

两个Widget都是有状态的

最佳答案

这应该有效。这是一些示例代码。

screenshot

import 'package:flutter/material.dart';

void main() {
  runApp(new MaterialApp(
    home: new MyHomePage(),
  ));
}

class MyHomePage extends StatelessWidget {
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new ListView(
          children: new List.generate(100, (int index) {
            return new ListTile(
              title: new Text('Item $index'),
              onTap: () {
                Navigator.push(
                  context,
                  new MaterialPageRoute(
                    builder: (BuildContext context) {
                      return new Scaffold(
                        body: new Center(
                          child: new RaisedButton(
                            child: new Text('Pop!'),
                            onPressed: () => Navigator.pop(context),
                          ),
                        ),
                      );
                    },
                  ),
                );
              },
            );
          },
        ),
      ),
    );
  }
}

确保您使用的是 Navigator.pop()而不是 Navigator.pushNamed('/'); 返回。如果它不起作用,请发布更多代码或 file an issue .

关于Flutter:如何恢复 ListView 的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45812655/

相关文章:

dart - 如何格式化内插字符串

string - 将 ASCII 转换为十六进制

Flutter Visibility 小部件占据空白位置

flutter - 使用 image_picker 时构建失败并出现异常

flutter - 如何在 flutter 中刷新图像路径的状态?

listview - 如何在 Flutter ListView Builder 中移除或管理空间?

flutter - 错误: The argument type 'List<String>' can't be assigned to the parameter type 'String'

firebase - 构建Flutter项目时Deshing时出错

database - 如何在 flutter 朔迷离的Firestore卡片列表中显示我的结果

flutter - 如何从类字段设置提供者值?