【问题标题】:Flutter PageController nextPage, previousPage, animateToPage are not workingFlutter PageController nextPage、previousPage、animateToPage 不工作
【发布时间】:2022-01-03 05:52:01
【问题描述】:

我正在尝试使页面在 web 上的鼠标滚动 (snap) 上切换,因为默认情况下它不支持在颤振中。但是, animateTo 方法没有产生任何效果,并且滚动仍在继续。 我使用按钮尝试了 animateTo 并且它有效。我不太清楚为什么它不能以这种方式工作。

代码如下:

import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart' show kIsWeb;

class MainView extends StatelessWidget {
  MainView({Key? key}) : super(key: key);
  final PageController controller = PageController(initialPage: 0);

  @override
  Widget build(BuildContext context) {
    if (kIsWeb) {
      // running on the web!
      return Listener(
        onPointerSignal: (pointerSignal) {
          if (pointerSignal is PointerScrollEvent) {
            if (pointerSignal.scrollDelta.dy > 0) {
              // scroll down
              controller.nextPage(
                  duration: const Duration(seconds: 1), curve: Curves.ease);
            } else if (pointerSignal.scrollDelta.dy < 0) {
              controller.previousPage(
                  duration: const Duration(seconds: 1), curve: Curves.ease);
            }
          }
        },
        child: PageView(
          scrollDirection: Axis.vertical,
          pageSnapping: false,
          controller: controller,
          children: const <Widget>[
            Center(
              child: Text('First Page'),
            ),
            Center(
              child: Text('Second Page'),
            ),
            Center(
              child: Text('Third Page'),
            )
          ],
        ),
      );
    } else {
      // NOT running on the web! You can check for additional platforms here.
      return const Container();
    }
  }
}```

【问题讨论】:

    标签: flutter flutter-web


    【解决方案1】:

    如果我对您的理解正确,您希望在使用指针信号事件使用鼠标滚动时为页面设置动画。一种选择是将physics: const NeverScrollableScrollPhysics(), 添加到您的 PageView 小部件中,这将禁用任何默认滚动行为。

    希望这就是您要找的东西!

    【讨论】:

    • 谢谢。这解决了这个问题。似乎问题出在默认的滚动行为上。
    猜你喜欢
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    相关资源
    最近更新 更多