滚动条未显示抖动网页

时间:2020-02-26 18:12:27

标签: flutter dart

滚动条未显示在颤动的网络中。 我的第二次尝试是:

Widget getSecondStep() {
        return  DraggableScrollbar.arrows(
          controller: ScrollController(),
          child: ListView(
              shrinkWrap: true,
              children: <Widget>[
                Row(
                  mainAxisSize: MainAxisSize.min,
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: <Widget>[BlaBlaBla(), BlaBla()],
                ),
              ],
            ),
        );
      }

我的第一次尝试是:

Widget getSecondStep() {
        return  Scrollbar(
          controller: ScrollController(),
          child: ListView(
              shrinkWrap: true,
              children: <Widget>[
                Row(
                  mainAxisSize: MainAxisSize.min,
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: <Widget>[BlaBlaBla(), BlaBla()],
                ),
              ],
            ),
        );
      }

我正在尝试更改主题颜色,但是没有用。

最后,flutter doctor -v

 [√] Flutter (Channel beta, v1.14.6, on Microsoft Windows [Version
 10.0.18362.657], locale en-US)
     • Flutter version 1.14.6 at C:\flutter_windows_v1.9.1+hotfix.2-stable\flutter
     • Framework revision fabeb2a16f (4 weeks ago), 2020-01-28 07:56:51 -0800
     • Engine revision c4229bfbba
     • Dart version 2.8.0 (build 2.8.0-dev.5.0 fc3af737c7)


 [√] Android toolchain - develop for Android devices (Android SDK
 version 29.0.2)
     • Android SDK at C:\Users\moshi\AppData\Local\Android\sdk
     • Android NDK location not configured (optional; useful for native profiling support)
     • Platform android-29, build-tools 29.0.2
     • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
     • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
     • All Android licenses accepted.

 [√] Chrome - develop for the web
     • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

 [√] Android Studio (version 3.5)
     • Android Studio at C:\Program Files\Android\Android Studio
     • Flutter plugin version 40.0.2
     • Dart plugin version 191.8423
     • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)

 [!] VS Code (version 1.42.1)
     • VS Code at C:\Users\moshi\AppData\Local\Programs\Microsoft VS Code
     X Flutter extension not installed; install from
       https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

 [√] Connected device (2 available)
     • Chrome     • chrome     • web-javascript • Google Chrome 79.0.3945.130
     • Web Server • web-server • web-javascript • Flutter Tools

 ! Doctor found issues in 1 category.

5 个答案:

答案 0 :(得分:4)

编辑:2021 年 5 月更新: 自 Flutter 2.2 起,滚动条默认可见


旧答案:

ListView 包裹一个 Scrollbar 并像这样使用相同的滚动控制器:

          Scrollbar(
            isAlwaysShown: true,
            controller: _scrollController,
            child: ListView.builder(
                controller: _scrollController,
                itemCount: 100,
                itemBuilder: (context, index) {
                  return Card(
                      child: ListTile(
                    title: Text("Item: ${index + 1}"),
                  ));
                }),
          ),

答案 1 :(得分:2)

这是“预期”功能。请记住,Web仍处于测试阶段,当前大多数Flutter Web应用程序的外观和行为类似于Android Material / iOS应用程序,后者显然没有滚动条。 出于相同的原因,您可以使用鼠标单击并拖动,页面将上下移动。

当前有一个关于此主题(which you can find at this link)的GitHub问题。请记住,这是一项功能请求。

答案 2 :(得分:2)

2021 年 3 月更新:借助 Flutter 2.0,Flutter Web 现已在稳定频道中可用,您可以使用

Scrollbar(controller: _scrollController, isAlwaysShown: true, child: ...

显示滚动条并与之交互:) 只需确保滚动条和列表的控制器是相同的。

答案 3 :(得分:1)

从 flutter 2.2 开始,Web 和桌面上大多数可滚动小部件的默认行为是在滚动时显示滚动条,并在滚动结束时快速消失滚动条。要在滚动结束后保留​​滚动条,请将可滚动小部件包装在一个主题中,如下所示:

Theme(
    data: Theme.of(context).copyWith(scrollbarTheme: const ScrollbarThemeData(isAlwaysShown: true)),
    child: SingleChildScrollView(
       controller: scrollController,

如果您使用多个可滚动小部件,请注意添加的 scrollController 以避免 PrimaryScrollController 的位置冲突。

最后要注意的是,如果您希望滚动条在第一次滚动之前就可见,则必须以某种方式对其进行修改。我的解决方案是在框架构建后以编程方式滚动:

WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
  scrollController.animateTo(3, duration: const Duration(milliseconds: 200), curve: Curves.ease);
});

希望有一天能派上用场...

答案 4 :(得分:0)

当前抖动的网络工作类似于android / iOS应用程序。它不支持通过滚动条滚动。您必须使用自定义的,如果要在Web应用程序中使用一个,则绝对应该在flutter_web_scrollbar中寻找pub.dev软件包。

相关问题