【问题标题】:How to continious scroll bottomModelSheet after child ListView completes the scroll in flutter?子ListView在flutter中完成滚动后如何连续滚动底部Modal Sheet?
【发布时间】:2020-07-13 15:42:27
【问题描述】:

我有 showModalBottomSheet 小部件,当用户单击按钮时我正在调用它,它有 listView 作为子小部件。

有了这个,我可以滚动底部的模型表,

但是如何在listview完成向下滚动后,继续向下滚动底部模型表呢?

目前,底部模型表不向下只有ListView表示滚动完成。

ListView 完成滚动时,我想向下滚动BottomModelSheet,而不是滚动完成反馈。 有什么方法可以通过 `showModalBottomSheet' 实现这一点?

【问题讨论】:

    标签: android flutter scroll


    【解决方案1】:
      class _ExampleState extends State<Example> {
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Center(
            child: Column(
              children: <Widget>[
                RaisedButton(
                  child: Text('Press Me'),
                  onPressed: () async => await showModalBottomSheet(
                      // isScrollControlled: true,
                      context: context,
                      builder: (ctx) => ListViewWidget()),
                ),
              ],
            ),
          ),
        );
      }
    }
    
    class ListViewWidget extends StatefulWidget {
      @override
      _ListViewWidgetState createState() => _ListViewWidgetState();
    }
    
    class _ListViewWidgetState extends State<ListViewWidget> {
      ScrollController _scrollController;
      ScrollPhysics _scrollPhysics;
    
      void _scrollListener() async {
        if (_scrollController.position.pixels ==
            _scrollController.position.minScrollExtent) {
          setState(() {
            _scrollPhysics = NeverScrollableScrollPhysics();
          });
        }
      }
    
      @override
      void initState() {
        _scrollController = ScrollController()..addListener(_scrollListener);
        _scrollPhysics = AlwaysScrollableScrollPhysics();
        super.initState();
      }
    
      @override
      Widget build(BuildContext context) {
        return ListView.builder(
          shrinkWrap: true,
          itemCount: kStates.length,
          controller: _scrollController,
          physics: _scrollPhysics,
          itemBuilder: (_, index) => GestureDetector(
            child: Text(
              kStates[index],
              style: TextStyle(
                color: Colors.black,
              ),
            ),
          ),
        );
      }
    }
    

    【讨论】:

    • BottomBodelSheet 应该在子ListView 的滚动到达末尾时开始关闭(我的意思是当没有滚动条可以向下滚动时),目前几乎没有红色溢出指示,当滚动结束时,想在滚动完成后继续向下滚动整个bottomModelsheet。而是显示溢出指示。
    • 现在,你可以看到BottomModelSheetListView 作为一个孩子,现在,工作表占据了全屏,正如你在上面看到的如何关闭工作表。因为如果不按后退按钮,则无法关闭底部模型表,对吗?因为滚动卡在“ListView”。
    • 我希望BottomModelSheet更像DraggableScrollableSheet',但是当用户点击时你不能显示DraggableScrollableSheet,因此我们使用showBottomModelSheet,希望你现在明白了。
    • 当我使用bottomModelSheet时,您是否希望它占据整个屏幕?我不让它占据整个屏幕那样用户只需点击@987654331上方的区域@关闭它
    • 嗯,就是那里,我也不会覆盖整个屏幕,但这是我的要求。
    猜你喜欢
    • 2021-07-31
    • 2018-06-03
    • 2020-07-16
    • 2023-03-26
    • 2021-07-25
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多