【问题标题】:How to do a stacked widget with a scrollable widget and non scrollable widget如何使用可滚动小部件和不可滚动小部件制作堆叠小部件
【发布时间】:2020-06-27 18:56:44
【问题描述】:

我想做一个屏幕,其中有一个可滚动的小部件和一个不可滚动的小部件,其中不可滚动的小部件将位于 dart flutter 中的可滚动小部件的顶部。

我试过这样的东西:伪代码:

Stacked(
  children: <Widget>[
    SingleChildScrollView(
      child: // scrollable widget 
    ),
    Align(
      alignment: Alignment.bottomCenter,
      child: // non-scrollable widget eg container
    ),
  ]
)

但可滚动小部件没有滚动。此实现没有错误,但滚动不起作用

【问题讨论】:

标签: flutter dart


【解决方案1】:

这里的问题是不可滚动小部件位于可滚动小部件的顶部,并且倾向于阻止所有触摸事件到底部小部件(可滚动小部件)。

你有几种方法可以解决这个问题,第一种是将不可滚动的小部件包装在 IgnorePointer

  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Stack(children: [
          ListView.builder(itemBuilder: (context, index) {
            return Text("item ${index + 1}");
          }),
          IgnorePointer(
            child: Align(
                alignment: Alignment.bottomCenter,
                child: Container(color: Colors.red.withAlpha(50))),
          ),
        ]));
  }

但这会阻止重叠小部件上的任何输入

如果你想达到同样的效果,但能够与重叠的小部件进行交互,你可能想用 GestureDetector 更改 IgnorePointer,并使用 https://api.flutter.dev/flutter/widgets/GestureDetector/GestureDetector.html 的行为

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    相关资源
    最近更新 更多