如何启用垂直滚动的滚动条和水平滚动的禁用?

杜明

我一直在使用水平和垂直滚动创建布局。垂直滚动条Column用于主要内容,并由不同的视图填充,包括ListView显示促销横幅的水平视图我想显示滚动条用于垂直滚动,而不显示水平滚动。我已经包装了SingleChildScrollView使可以Column滚动的ScrollBar,但是该条在水平滚动条上都垂直显示。这些事情有什么微调吗?

样本来证明问题

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Scrollables',
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Scrollbar(
        child: new SingleChildScrollView(
            child: new Container(
          padding: EdgeInsets.only(top: 40.0),
          child: Column(children: <Widget>[
            HorizontalListView(),
            VerticalListView(),
          ]),
        )),
      ),
    );
  }
}

class HorizontalListView extends StatelessWidget {
  var items = new List<String>();

  _addNewItem(int index) {
    items.add("Item $index");
  }

  @override
  Widget build(BuildContext context) => Container(
      height: 120,
      child: ListView.builder(
          scrollDirection: Axis.horizontal,
          itemCount: 15,
          itemBuilder: (context, index) {
            return Card(child: ListItem(index));
          }));
}

class VerticalListView extends StatelessWidget {
  var items = new List<String>();

  _addNewItem(int index) {
    items.add("Item $index");
  }

  @override
  Widget build(BuildContext context) => Container(
      child: ListView.builder(
          scrollDirection: Axis.vertical,
          itemCount: 50,
          shrinkWrap: true,
          physics: const NeverScrollableScrollPhysics(),
          itemBuilder: (context, index) {
            return ListItem(index);
          }));
}

class ListItem extends StatelessWidget {
  int _index;
  ListItem(this._index);
  @override
  Widget build(BuildContext context) {
    return Container(
      width: 280,
      child: Text("Item ${this._index}"),
    );
  }
}

滚动演示

注意水平滚动的底部

尼克拉斯·拉布(Niklas Raab)
class NoScrollbar extends StatelessWidget {
  final Widget child;
  const NoScrollbar({Key key, this.child}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return NotificationListener<ScrollNotification>(
      onNotification: (_) => true,
      child: child,
    );
  }
}

只需将NoScrollbar Widget包裹在Scrolling Widget周围,就不想让Scrollbar出现。这为我解决了!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

启用永久的垂直和水平滚动条

来自分类Dev

Bootstrap:如何禁用垂直滚动条?

来自分类Dev

Bootstrap:如何禁用垂直滚动条?

来自分类Dev

QScrollArea:垂直滚动条引起的水平滚动条

来自分类Dev

水平滚动条页面导航和垂直滚动条

来自分类Dev

面板中的垂直和水平滚动条

来自分类Dev

如何显示JList的水平和垂直滚动条?

来自分类Dev

水平滚动条?

来自分类Dev

如何在iframe中禁用水平滚动条

来自分类Dev

滚动条ItemsControl垂直填充,然后水平滚动

来自分类Dev

如何启用此蚀滚动条?

来自分类Dev

如何隐藏水平滚动条

来自分类Dev

如何删除水平滚动条?

来自分类Dev

如何强制显示垂直滚动条?

来自分类Dev

如何禁用叠加滚动条?

来自分类Dev

如何为水平滚动列表设置滚动条的样式?

来自分类Dev

如何向下滚动JScrollPane上的垂直滚动条?

来自分类Dev

如何向下滚动JScrollPane上的垂直滚动条?

来自分类Dev

隐藏滚动条(启用滚动)

来自分类Dev

垂直滚动条不滚动

来自分类Dev

HTML不要让垂直滚动条创建水平滚动条

来自分类Dev

烦人的水平滚动条

来自分类Dev

固定水平滚动条

来自分类Dev

Div水平滚动条

来自分类Dev

NSText的水平滚动条

来自分类Dev

删除水平滚动条

来自分类Dev

反应水平滚动条

来自分类Dev

水平滚动条丢失

来自分类Dev

禁用滚动但保留滚动条CSS