Вам просто нужно использовать виджет Expand
в Gridview, как показано ниже
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
class HomeScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return HomeState();
}
}
class HomeState extends State<HomeScreen> {
Widget build(BuildContext context) {
return MaterialApp(
title: 'Home',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primaryColor: Colors.red,
accentColor: Color(0xFFFEF9EB),
),
home: Scaffold(
body: Column(
children: <Widget>[
Container(
height: MediaQuery.of(context).size.height * 0.1,
color: Colors.green,
),
Expanded(
child: GridView.count(
crossAxisCount: 2,
children: List.generate(100, (index) {
return (Center(
child: Text(
'Item $index',
style: Theme.of(context).textTheme.headline,
// TextStyle(
// color: Colors.white,
// fontSize: 20.0,
// fontWeight: FontWeight.bold),
)));
}),
),
),
Container(
height: MediaQuery.of(context).size.height*0.1,
color: Colors.yellow,
),
],
),
));
}
}
И вывод будет следующий
И написание еще одного ответа для полноэкранного прокрутки с помощью gridview
и других виджетов. Для этого вам необходимо использовать CustomScrollView
с Silver
, как показано ниже
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
class HomeScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return HomeState();
}
}
class HomeState extends State<HomeScreen> {
Widget build(BuildContext context) {
return MaterialApp(
title: 'Home',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primaryColor: Colors.red,
accentColor: Color(0xFFFEF9EB),
),
home: Scaffold(
appBar: new AppBar(),
body: CustomScrollView(
slivers: [
SliverToBoxAdapter(
child: Container(
color: Colors.green,
height: MediaQuery.of(context).size.height*0.2,
child: Center(
child: Text("Top"),
),
)
),
SliverGrid(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
childAspectRatio: 1.5,
),
delegate: SliverChildBuilderDelegate(
(context, index) => Container(
margin: EdgeInsets.all(5.0),
color: Colors.yellow,
),
childCount: 10,
),
),
SliverToBoxAdapter(
child: Container(
color: Colors.green,
height: MediaQuery.of(context).size.height*0.2,
child: Center(
child: Text("Bottom"),
),
)
),
],
)));
}
}
И вывод следующей программы, как следует