Flutter PageView 在网络上不可滑动(桌面模式)
Flutter PageView not swipeable on web (desktop mode)
我是 Flutter 新手。
我在其文档的帮助下实现了 flutter PageView:
/// Flutter code sample for PageView
// Here is an example of [PageView]. It creates a centered [Text] in each of the three pages
// which scroll horizontally.
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
/// This is the main application widget.
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
static const String _title = 'Flutter Code Sample';
@override
Widget build(BuildContext context) {
return MaterialApp(
title: _title,
home: Scaffold(
appBar: AppBar(title: const Text(_title)),
body: const MyStatelessWidget(),
),
);
}
}
/// This is the stateless widget that the main application instantiates.
class MyStatelessWidget extends StatelessWidget {
const MyStatelessWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final PageController controller = PageController(initialPage: 0);
return PageView(
/// [PageView.scrollDirection] defaults to [Axis.horizontal].
/// Use [Axis.vertical] to scroll vertically.
scrollDirection: Axis.horizontal,
controller: controller,
children: const <Widget>[
Center(
child: Text('First Page'),
),
Center(
child: Text('Second Page'),
),
Center(
child: Text('Third Page'),
)
],
);
}
}
我 运行 它在 Android 上,效果很好。
它也适用于网络(移动模式)。
但是当我 运行 它在 chrome (web|desktop) 页面上时无法滑动,也无法更改页面。
如何在 Web 桌面导出时启用滑动?
Flutter 版本为 2.5.2
我在我的 Flutter 作品集网站中使用了 PageView。我注意到我无法通过滑动来更改页面。后来我才知道这可以通过 Mac 的触控板手势来完成。
由于 PageView 是水平的,我不得不在触控板上水平滑动两根手指。你可以试试。
在 flutter 2.5.0 上他们改变了滚动行为
检查此 默认拖动滚动设备
感谢 Bigfoot,为了支持鼠标滑动,我们需要通过以下步骤更改应用程序的默认滚动行为:
1- 创建一个 class,从 MaterialScrollBeavior
扩展它,并覆盖 dragDevices
:
class AppScrollBehavior extends MaterialScrollBehavior {
@override
Set<PointerDeviceKind> get dragDevices => {
PointerDeviceKind.touch,
PointerDeviceKind.mouse,
};
}
2- 将 AppScrollBehavior 实例传递给 MaterialApp 的 scrollBehavior 属性:
MaterialApp(
scrollBehavior: AppScrollBehavior(),
...
);
之后,我们也可以用鼠标在页面之间滑动了。
我是 Flutter 新手。 我在其文档的帮助下实现了 flutter PageView:
/// Flutter code sample for PageView
// Here is an example of [PageView]. It creates a centered [Text] in each of the three pages
// which scroll horizontally.
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
/// This is the main application widget.
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
static const String _title = 'Flutter Code Sample';
@override
Widget build(BuildContext context) {
return MaterialApp(
title: _title,
home: Scaffold(
appBar: AppBar(title: const Text(_title)),
body: const MyStatelessWidget(),
),
);
}
}
/// This is the stateless widget that the main application instantiates.
class MyStatelessWidget extends StatelessWidget {
const MyStatelessWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final PageController controller = PageController(initialPage: 0);
return PageView(
/// [PageView.scrollDirection] defaults to [Axis.horizontal].
/// Use [Axis.vertical] to scroll vertically.
scrollDirection: Axis.horizontal,
controller: controller,
children: const <Widget>[
Center(
child: Text('First Page'),
),
Center(
child: Text('Second Page'),
),
Center(
child: Text('Third Page'),
)
],
);
}
}
我 运行 它在 Android 上,效果很好。 它也适用于网络(移动模式)。
但是当我 运行 它在 chrome (web|desktop) 页面上时无法滑动,也无法更改页面。
如何在 Web 桌面导出时启用滑动?
Flutter 版本为 2.5.2
我在我的 Flutter 作品集网站中使用了 PageView。我注意到我无法通过滑动来更改页面。后来我才知道这可以通过 Mac 的触控板手势来完成。 由于 PageView 是水平的,我不得不在触控板上水平滑动两根手指。你可以试试。
在 flutter 2.5.0 上他们改变了滚动行为 检查此 默认拖动滚动设备
感谢 Bigfoot,为了支持鼠标滑动,我们需要通过以下步骤更改应用程序的默认滚动行为:
1- 创建一个 class,从 MaterialScrollBeavior
扩展它,并覆盖 dragDevices
:
class AppScrollBehavior extends MaterialScrollBehavior {
@override
Set<PointerDeviceKind> get dragDevices => {
PointerDeviceKind.touch,
PointerDeviceKind.mouse,
};
}
2- 将 AppScrollBehavior 实例传递给 MaterialApp 的 scrollBehavior 属性:
MaterialApp(
scrollBehavior: AppScrollBehavior(),
...
);
之后,我们也可以用鼠标在页面之间滑动了。