text - 始终显示滚动条 - Flutter

标签 text layout dart flutter

我有一个很长的文本,当用户进入我的页面时,我需要默认显示滚动条。

目前,直到用户单击文本后才会显示栏,这不是一个好的行为,因为用户可能会在没有注意到有一些未读文本的情况下离开页面。

我的代码:

    return Scaffold(
      body: Padding(
        padding: const EdgeInsets.all(15.0),
        child: Center(
          child: Column(
            children: <Widget>[
              Image.asset(
                "assets/images/logo.png",
                height: 200.0,
              ),
              SizedBox(
                height: 40,
              ),
              Expanded(
                child: Scrollbar(
                  child: SingleChildScrollView(
                    child: Text("Long Text Here ...",
                      textDirection: TextDirection.rtl,
                      style: TextStyle(fontSize: 17.2),
                    ),
                  ),
                ),
              ),
              SizedBox(
                height: 50,
              ),
              Row(
                children: <Widget>[
                  Expanded(
                    child: RaisedButton(
                      child: Text("Continue"),
                      onPressed: () {
                        MaterialPageRoute route = MaterialPageRoute(
                            builder: (BuildContext context) => MainPage());
                        Navigator.of(context).push(route);
                      },
                    ),
                  ),
                  SizedBox(
                    width: 20.0,
                  ),
                  RaisedButton(
                    child: Text("Close"),
                    onPressed: () {
                      exit(0);
                    },
                  ),
                ],
              )
            ],
          ),
        ),
      ),
    );
  }```

最佳答案

更新答案 2023 年 4 月

从 v2.9.0-1.0.pre 开始,isAlwaysShown 已弃用,您应该使用 thumbVisibility 代替。检查jayjw更完整的答案:https://stackoverflow.com/a/71357052/9777674

<小时/>

原始答案 2020 年 6 月

从 Flutter 版本 1.17 开始,在 Scrollbar 上,您可以将 isAlwaysShown 设置为 true,但您必须设置相同的 controller 用于您的 ScrollbarSingleChildScrollView(这也适用于任何其他可滚动的 Widget)。

请记住,要使滚动条可见,必须有足够的项目可以滚动。如果没有,滚动条将不会显示。

完整的工作示例:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: MyWidget(),
      ),
    );
  }
}

class MyWidget extends StatefulWidget {  
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  final _scrollController = ScrollController();
  
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Padding(
        padding: const EdgeInsets.all(15.0),
        child: Center(
          child: Column(
            children: <Widget>[
              // ...
              Expanded(
                child: Scrollbar(
                  controller: _scrollController, // <---- Here, the controller
                  isAlwaysShown: true, // <---- Required
                  child: SingleChildScrollView(
                    controller: _scrollController, // <---- Same as the Scrollbar controller
                    child: Text(
                      "Long Text Here ...",
                      textDirection: TextDirection.rtl,
                      style: TextStyle(fontSize: 17.2),
                    ),
                  ),
                ),
              ),
              // ...
            ],
          ),
        ),
      ),
    );
  }
}

关于text - 始终显示滚动条 - Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54963284/

相关文章:

flutter - 标签栏,每个标签具有唯一操作

firebase - 如何在 map() 中使用异步代码(Flutter、Firestore)

c++ - Qt - 如何在 QVBoxLayout 中放置具有左右边距的 QTextEdit?

javascript - Dart 和第三方 CSS 和 JS 框架

java - NumberFormat Java 中的格式方法

vb.net - 验证 UTF32->ASCII

C# 如何将文本文件中的几组单词放入数组中

C++ 问题读取文本文件

Android 选择了错误的资源文件夹

jquery - 静态页脚,带有附加和缩放重叠