Is:
В приведенном ниже коде пример с GridView
на верхнем уровне работает, но не с ListView
.
Требуется:
Я пытаюсь понять, что это scrollable page
, в котором есть число Containers
, а затем PageView
в конце, в котором есть два GridViews
вit.
Все 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,
)
]
)
);
}
}