У меня есть SingleChildScrollView в качестве дочернего виджета внутри его родительского виджета SingleChildScrollView, как на рисунке ниже,
В настоящее время, когда я прокручиваю вниз касающуюся область во внутреннем виде прокрутки, внутренний вид прокрутки прокручивается вниз, и ничто не перемещается, когда оно достигает дна.
Но я хочу, чтобы весь экран (внешний вид прокрутки) начинал прокручиваться, когда внутренний вид прокрутки достигает дна, как показано ниже. (Не имеет значения, нужно ли мне снова нажимать, чтобы прокрутить внешний вид прокрутки)
Как я мог добиться поведения? Я пытался использовать NeverScrollableScrollPhysics, как вы можете видеть из моего кода ниже, и это вроде работает, но есть проблема. Когда внутренний вид прокрутки достигает дна, физика становится NeverScrollableScrollPhysics, поэтому внутренний вид прокрутки больше не сможет прокручиваться, что удовлетворяет моим намерениям. Поэтому автоматически включается внешняя прокрутка прокрутки, но проблема в том, что внутренняя прокрутка не будет прокручиваться вверх, так как она вообще не будет прокручиваться.
Пожалуйста, проверьте мой код ниже:
class Example extends StatefulWidget {
State<Example> createState() => ExampleState();
}
class ExampleState extends State<Example> {
ScrollController _scrollController = ScrollController();
ScrollPhysics _scrollPhysics = ScrollPhysics();
String description = "textexxtett t exte tx tetexxt text text text";
@override
void initState(){
_scrollController.addListener(_scrollListener);
}
void _scrollListener(){
if (_scrollController.offset >= _scrollController.position.maxScrollExtent){
if (_scrollController.position.axisDirection == AxisDirection.down) {
print("down");
setState(() {
_scrollPhysics = NeverScrollableScrollPhysics();
});
}
}else if (_scrollController.offset <= _scrollController.position.minScrollExtent){
if (_scrollController.position.axisDirection == AxisDirection.up) {
print("top");
setState(() {
_scrollPhysics = NeverScrollableScrollPhysics();
});
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
physics: _scrollPhysics,
controller: _scrollController,
child: ConstrainedBox(
constraints: BoxConstraints(
minHeight: MediaQuery.of(context).size.height,
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
ConstrainedBox(
constraints: BoxConstraints(
minHeight: MediaQuery.of(context).size.height * 0.15,
maxHeight: MediaQuery.of(context).size.height * 0.30,
),
child: Container(
padding: EdgeInsets.fromLTRB(25, 0, 25, 25),
child: SingleChildScrollView(child: Column(
children: [
Text("$title\n"),
Text("$description")
]))))]))));}},