Флаттер: оборачивать PageViews без ограничений по размеру в ListViews?
Является:
В приведенном ниже коде пример с GridView
на верхнем уровне работает, но не с ListView
,
В розыске:
То, что я пытаюсь понять, это scrollable page
который имеет ряд Containers
в этом, а затем PageView
в конце, который имеет два GridViews
в этом.
Все Widgets
в этом сценарии предполагается сократить их содержание / детей, поэтому я также не могу использовать GridView
на верхнем уровне. Это наиболее важно для PageView -> GridView
состав.
Вопросы:
Почему ListView
пример не работает а GridView
один делает? Как я мог реализовать желаемый сценарий, описанный выше?
Спасибо за Ваше внимание.
import "package:flutter/material.dart";
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage() /* MyHomePage2() */,
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: GridView(
scrollDirection: Axis.vertical,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 1,
),
children: [
GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
),
itemCount: 10,
itemBuilder: (context, item) {
return Text("I am a text in a GridView in a GridView.");
},
),
PageView.builder(
itemBuilder: (context, item) {
return GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
),
itemCount: 10,
itemBuilder: (context, item) {
return Text("I am text in a GridView in a PageView in a GridView.");
},
);
},
itemCount: 2,
)
]
)
);
}
}
class MyHomePage2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
scrollDirection: Axis.vertical,
children: [
GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
),
itemCount: 10,
itemBuilder: (context, item) {
return Text("I am a text in a GridView in a ListView.");
},
),
PageView.builder(
itemBuilder: (context, item) {
return GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
),
itemCount: 10,
itemBuilder: (context, item) {
return Text("I am text in a GridView in a PageView in a ListView.");
},
);
},
itemCount: 2,
)
]
)
);
}
}