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(