在Flutter中,当我用SingleChildScrollView将我的ReorderableListView包装在ListView或列中时,它正在被渲染,但在项目总数的高度超过屏幕高度的情况下,当我将一个项目拖到屏幕边缘时,可重新排序的列表视图不会自动滚动.

但当没有可滚动的父级时,它可以正常工作,当我将项目拖到屏幕边缘时,它会自动滚动

这是一个极简主义的代码,解释了我的问题

class _MyHomePageState extends State<MyHomePage> {
  final _items = List.generate(25, (index) => index.toString());

  @override
  Widget build(BuildContext context) {
    // This trailing comma makes auto-formatting nicer for build methods.
    return Scaffold(
      backgroundColor: Colors.grey,
      body: ListView(
        children: [
          Container(
            height: 48 * 25,
            color: Colors.yellow,
            margin: EdgeInsets.only(top: 88),
            child: ReorderableListView.builder(
                physics: ClampingScrollPhysics(),
                shrinkWrap: true,
                itemCount: _items.length,
                itemBuilder: (context, index) {
                  return ListTile(
                    key: ValueKey(_items[index]),
                    title: Text(_items[index]),
                  );
                },
                onReorder: (int oldindex, int newindex) {
                  setState(() {
                    if (newindex > oldindex) {
                      newindex -= 1;
                    }
                    final item = _items.removeAt(oldindex);
                    _items.insert(newindex, item);
                  });
                }),
          ),
        ],
      ),
    );
  }
}

我try 过使用nestedscrollview、primaryscrollController,但没有得到任何好的结果

推荐答案

看看下面的 struct :

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              Expanded(
                child: ListView(
                  shrinkWrap: true,
                  children: [
                    Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: <Widget>[
                        Container(
                            height: MediaQuery.of(context).size.height, // Your height
                            child: ReorderableListView.builder(
                                     physics: ClampingScrollPhysics(),
                                     shrinkWrap: true,
                                     ......
                             )
                             ),
                        Text('Does it work?')
                      ],
                    )
                  ],
                ),
              )
            ],
          ),
        ),
    );
  }

希望对你有帮助.

Flutter相关问答推荐

Flutter -如何从布局填充(对称水平)中排除小部件?

无法在GroupButton内部正确呈现

壁炉有序在Flutter

我可以在iOS设备上使用Ffltter实现Google Pay按钮吗?

Flutter 蜂窝单元测试

在Flutter 中每次点击按钮时都很难调用自定义函数

我有相关的下拉菜单Flutter Windows应用程序的问题

如何正确处理Flutter 翼中使用火基时发生的碰撞?

dart /长笛中的返回早期模式和拆分方法

有没有办法在 google_map 上移动标记(向左或向右移动一些像素)?

Flutter:使用 GlobalKey 访问 BlocProvider

hooks_riverpod 有用途吗

如何使 flutter 2 手指zoom ?

splash_screen 没有被推送到登录页面

Elevated 和 Outlined 按钮之间的动画

Paypal 支付网关添加带有 magento 2 网络详细信息用户名、密码、签名 Magento 2 的 flutter 应用程序?

如何更改中心的圆形进度指示器

无法在 flutter 中更新 void 方法内的变量值

Flutter 平台通道将多数据传递给 windows 功能

用于空值 FirebaseFirestore 的空值判断运算符