您可以在video中查看详细信息
我不知道如何解决这个问题。与Android Native ViewPager相比,Flutter中PageView的动画似乎较慢,用户只需等待这个缓慢的动画完全停止,就可以拖动内部的ListView。我觉得用户体验比原生Android ViewPager差。希望有一个完美的解决方案。
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_app/reactive_page_view/reactive_page_view.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Page(),
);
}
}
class Page extends StatefulWidget {
@override
_PageState createState() => _PageState();
}
PageView view;
class _PageState extends State<Page> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: CupertinoNavigationBar(
middle: Text("Demo"),
),
body: PageView.builder(
physics: BouncingScrollPhysics(),
itemCount: 3,
itemBuilder: (context, index) {
return ItemPage();
}),
);
}
}
class ItemPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView.builder(
physics: BouncingScrollPhysics(),
itemCount: 30,
itemBuilder: (context, index) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Text('这是第$index', style: TextStyle(fontSize: 30)),
);
});
}
}
3条答案
按热度按时间hvvq6cgz1#
可以控制滚动动画的常规物理特性。
控制滚动行为:
你也应该能够用质量、刚度、阻尼来计算持续时间,但我相信有这些选项更适合你的问题。Source
qfe3c7zg2#
你可以定义你自己的PageController示例并使用它的方法nextPage()和previousPage()。它们有“duration”参数来控制页面视图滚动的速度。
然后将此控制器应用于页面视图:
main.dart的完整代码:
xytpbqjk3#
我用NotificationListener Package 了页面视图并禁用了pageSnapping。当NotificationListener被调用时,我会查找最可见的元素并滚动到它
在那之后,我可以像列表视图一样快地滚动页面。我假设你也可以用水平列表视图来做。