Flutter 颤振:滚动视图没有响应
我是个新手。我已经使用网格视图构建了一个登录页,并添加了一个底部导航栏。登录后首先调用导航栏,我已将屏幕添加到导航类中。我面临的问题是,导航栏位于我的网格项的顶部,当我尝试向上滚动时,网格项粘滞且不移动,我做得不对吗 我的主屏幕代码Flutter 颤振:滚动视图没有响应,flutter,dart,Flutter,Dart,我是个新手。我已经使用网格视图构建了一个登录页,并添加了一个底部导航栏。登录后首先调用导航栏,我已将屏幕添加到导航类中。我面临的问题是,导航栏位于我的网格项的顶部,当我尝试向上滚动时,网格项粘滞且不移动,我做得不对吗 我的主屏幕代码 class GridDashboard extends StatelessWidget { var services = [ "Home", "Update", "Bluetooth&q
class GridDashboard extends StatelessWidget {
var services = [
"Home",
"Update",
"Bluetooth",
"Forms",
"Supervisor",
"Messages",
"Settings",
"App updates",
"Logout",
];
var images = [
"assets/home.png",
"assets/updated.png",
"assets/bluetooth.png",
"assets/todo.png",
"assets/supervisor.png",
"assets/message.png",
"assets/setting.png",
"assets/update.ico",
"assets/logout.png",
];
@override
Widget build(BuildContext context) {
List<Items> myList = [home, update, bluetooth, forms, supervisor, messages, settings, check, logout];
var color = 0xff453658;
return Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
height: 500,
// margin: EdgeInsets.only(top: 10),
// padding: EdgeInsets.all(20),
child: GridView.builder(
// add this
shrinkWrap: true,
itemCount: services.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
childAspectRatio: MediaQuery.of(context).size.width /
(MediaQuery.of(context).size.height / 1.4),
),
itemBuilder: (BuildContext context, int index) {
return GestureDetector(
onTap: () {
Navigator.push(context, new MaterialPageRoute<Widget>(
builder: (BuildContext context) {
if(myList != null){
return myList[index].screen;
}else{
return null;
}
}));
},
child: Padding(
padding: EdgeInsets.all(3),
child: Card(
elevation: 10,
child: ListView(
children: <Widget>[
SizedBox(
height: 20,
),
Image.asset(
images[index],
height: 50.0,
width: 50.0,
),
Padding(
padding: const EdgeInsets.all(20.0),
child: Text(
services[index],
style: TextStyle(
fontSize: 16.0,
height: 1.2,
color: Colors.white,
fontWeight: FontWeight.bold),
textAlign: TextAlign.center,
),
),
],
),
color: Color(color),
),
),
);
},
),
),
);
}
}
class Items {
String title;
String subtitle;
String event;
String img;
final Widget screen;
Items({this.title, this.subtitle, this.event, this.img, this.screen});
}
class GridDashboard扩展了无状态小部件{
var服务=[
“家”,
“更新”,
“蓝牙”,
“表格”,
“主管”,
“信息”,
“设置”,
“应用程序更新”,
“注销”,
];
变量图像=[
“assets/home.png”,
“assets/updated.png”,
“assets/bluetooth.png”,
“assets/todo.png”,
“assets/supervisor.png”,
“assets/message.png”,
“assets/setting.png”,
“assets/update.ico”,
“assets/logout.png”,
];
@凌驾
小部件构建(构建上下文){
列表myList=[主页、更新、蓝牙、表单、主管、消息、设置、检查、注销];
var color=0xff453658;
返回填充(
填充:常数边集全部(8.0),
子:容器(
身高:500,
//页边空白:仅限边集(前10页),
//填充:边缘设置。全部(20),
子项:GridView.builder(
//加上这个
收缩膜:对,
itemCount:services.length,
gridDelegate:SliverGridDelegateWithFixedCrossAxisCount(
交叉轴计数:3,
childAspectRatio:MediaQuery.of(context).size.width/
(MediaQuery.of(context.size.height/1.4),
),
itemBuilder:(构建上下文,int索引){
返回手势检测器(
onTap:(){
推送(上下文,新材料路径)(
生成器:(BuildContext上下文){
如果(myList!=null){
返回myList[索引]。屏幕;
}否则{
返回null;
}
}));
},
孩子:填充(
填充:边缘设置。全部(3),
孩子:卡片(
标高:10,
子:ListView(
儿童:[
大小盒子(
身高:20,
),
影像资产(
图像[索引],
身高:50.0,
宽度:50.0,
),
填充物(
填充:常数边集全部(20.0),
子:文本(
服务[索引],
样式:TextStyle(
字体大小:16.0,
身高:1.2,
颜色:颜色,白色,
fontWeight:fontWeight.bold),
textAlign:textAlign.center,
),
),
],
),
颜色:颜色(颜色),
),
),
);
},
),
),
);
}
}
类别项目{
字符串标题;
字符串字幕;
字符串事件;
字符串img;
最终窗口小部件屏幕;
项目({this.title,this.subtitle,this.event,this.img,this.screen});
}
我的导航条形码
class _NavSCreenState extends State<NavSCreen> {
final List<Widget> _screens = [Home()];
final List<IconData> _icons = const [
Icons.home,
Icons.settings,
MdiIcons.accountCircleOutline,
MdiIcons.accountGroupOutline,
Icons.menu,
];
int _selectedIndex = 0;
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: _icons.length,
child: Scaffold(
body: IndexedStack(index: _selectedIndex, children: _screens),
bottomNavigationBar: Padding(
padding: const EdgeInsets.only(bottom: 8.0),
child: CustomTabBar(
icons: _icons,
selectedIndex: _selectedIndex,
onTap: (index) => setState(() => _selectedIndex = index),
),
),
));
}
}
class\u导航屏幕状态扩展状态{
最终列表_屏幕=[Home()];
最终列表_图标=常量[
我的家,
图标。设置,
MDICONS.accountCircleOutline,
mdicons.accountGroupOutline,
图标菜单,
];
int _selectedIndex=0;
@凌驾
小部件构建(构建上下文){
返回DefaultTabController(
长度:_.length,
孩子:脚手架(
正文:IndexedStack(索引:_selectedIndex,子项:_screens),
底部导航栏:填充(
填充:仅限常量边集(底部:8.0),
子项:CustomTabBar(
图标:_图标,
selectedIndex:\u selectedIndex,
onTap:(索引)=>setState(()=>_selectedIndex=index),
),
),
));
}
}
尝试添加SingleChildScrollView。希望这能解决你的问题
@override
Widget build(BuildContext context) {
List<Items> myList = [home, update, bluetooth, forms, supervisor, messages, settings, check, logout];
var color = 0xff453658;
return Scaffold(
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
height: 500,
// margin: EdgeInsets.only(top: 10),
// padding: EdgeInsets.all(20),
child: GridView.builder(
// add this
shrinkWrap: true,
itemCount: services.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
childAspectRatio: MediaQuery.of(context).size.width /
(MediaQuery.of(context).size.height / 1.4),
),
itemBuilder: (BuildContext context, int index) {
return GestureDetector(
onTap: () {
Navigator.push(context, new MaterialPageRoute<Widget>(
builder: (BuildContext context) {
if(myList != null){
return myList[index].screen;
}else{
return null;
}
}));
},
child: Padding(
padding: EdgeInsets.all(3),
child: Card(
elevation: 10,
child: ListView(
children: <Widget>[
SizedBox(
height: 20,
),
Image.asset(
images[index],
height: 50.0,
width: 50.0,
),
Padding(
padding: const EdgeInsets.all(20.0),
child: Text(
services[index],
style: TextStyle(
fontSize: 16.0,
height: 1.2,
color: Colors.white,
fontWeight: FontWeight.bold),
textAlign: TextAlign.center,
),
),
],
),
color: Color(color),
),
),
);
},
),
),
),
),
);
}
@覆盖
小部件构建(构建上下文){
列表myList=[主页、更新、蓝牙、表单、主管、消息、设置、检查、注销];
var color=0xff453658;
返回脚手架(
正文:SingleChildScrollView(
孩子:填充(
填充:常数边集全部(8.0),
子:容器(
身高:500,
//页边空白:仅限边集(前10页),
//填充:边缘设置。全部(20),
子项:GridView.builder(
//加上这个
收缩膜:对,
itemCount:services.length,
gridDelegate:SliverGridDelegateWithFixedCrossAxisCount(
交叉轴计数:3,
childAspectRatio:MediaQuery.of(context).size.width/
(MediaQuery.of(context.size.height/1.4),
),
itemBuilder:(构建上下文,int索引){
返回手势检测器(
onTap:(){
推送(上下文,新材料路径)(
生成器:(BuildContext上下文){
如果(myList!=null){
返回myList[索引]。屏幕;
}否则{
返回null;
}
}));
},
孩子:填充(
填充:边缘设置。全部(3),
孩子:卡片(
标高:10,
子:ListView(