- Краткое изложение моей проблемы
Цель
Моя цель - представить карусель с длинными страницами. Поэтому я использую PageView с scrollviews. PageView прокручивается горизонтально. Виды прокрутки (дети) прокручивают по вертикали.
Ожидаемые результаты
Проведите пальцем по горизонтали и плавно прокручивайте по вертикали.
Фактические результаты
Если я проведу пальцем по горизонтали до следующей страницы, я не смогу сразу прокрутить ее по вертикали. Мне нужно подождать 1 секунду. Кажется, пользователь должен дождаться завершения анимации, чтобы иметь возможность взаимодействовать с новой текущей страницей.
Что я пробовал до сих пор:
- Я пытался распознаватель жестов для передачи события перетаскивания, но у меня это не получилось.
- Я пробовал разные виджеты, чтобы заменить PageView, но тот же эффект.
- Я пробовал AutomaticKeepAliveClientMixin с wantKeepAlive = true
- Я попробовал PageView.physics = AlwaysScrollableScrollPhysics ()
Вот минимальный код, который вам понадобится для воспроизведения проблемы
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: carousel(),
);
}
Widget carousel() {
return PageView(
children: <Widget>[
page(Colors.pinkAccent),
page(Colors.blueAccent),
page(Colors.orangeAccent)
],
);
}
Widget page(Color color) {
return Container(
decoration: BoxDecoration(
color: color,
),
child: SingleChildScrollView(
child: Column(
children: pageContent()),
));
}
List<Widget> pageContent() {
return <Widget>[
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
Row(children: <Widget>[Text("Hop", textScaleFactor: 5,)]),
];
}
}