flutter - 交错 GridView Flutter onTap 不适用于我的代码中的图 block

标签 flutter gridview staggered-gridview flutter-onpressed

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:landregapp/HomePage.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:landregapp/TypeofLands.dart';


void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: "landRegistration App",
      theme: new ThemeData(primarySwatch: Colors.amber),
      home: landReg(),
    );
  }
}

class landReg extends StatefulWidget {
  @override
  _landRegState createState() => _landRegState();
}

class _landRegState extends State<landReg> {
  Material myItems(IconData icon, String heading )
  {
    return  Material(
      color: Colors.amber,
      elevation: 14.0,
      borderRadius:  BorderRadius.circular(24.0),
      child:Center(
        child:Padding(
          padding: const EdgeInsets.all(8.0),
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Padding(
                   padding: const EdgeInsets.all(1.0),
                    child: Icon(
                      icon,
                    ),
                  ),

                  Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Text(
                      heading,
                      style: TextStyle(
                        fontWeight: FontWeight.w700,
                      ),
                    ),
                  ),


                ],
              )
            ],
          ),
        )
      )
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: new AppBar(
        title: new Text("Home page"),
        elevation: 5.0,
      ),

     drawer:  new Drawer(
       child: new ListView(
         children: <Widget>[

           new UserAccountsDrawerHeader(

               accountName: new Text("MLHUD"),
               accountEmail: new Text("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="8aeeefe4e4e3f9ece5cae7e6e2ffeea4ede5a4ffed" rel="noreferrer noopener nofollow">[email protected]</a>"),
             currentAccountPicture: new CircleAvatar(
               radius: 90.0,
               backgroundImage: AssetImage('asset/image/uganda.jpg'),
                 backgroundColor: Colors.transparent,
             ),
           ),
           new ListTile(
             leading: Icon(Icons.home),
             title: new Text("Home"),
           ),
           new ListTile(
             leading: Icon(Icons.assignment),
             title: new Text("Terms and Conditions"),

           ),
           new ListTile(
             leading: Icon(Icons.info),
             title: new Text("About App"),

           ),

           new ListTile(
             leading: Icon(Icons.phone),
             title: new Text("Contact Us"),
           ),

           new ListTile(
             leading: Icon(Icons.share),
             title: new Text("Share"),
           ),

           new ListTile(
             leading: Icon(Icons.exit_to_app),
             title: new Text("Exit"),
           ),
         ],
       ),
     ),

     body:StaggeredGridView.count(
         crossAxisCount: 2,
         crossAxisSpacing: 12.0,
         mainAxisSpacing: 12.0,

       padding: EdgeInsets.symmetric(horizontal: 10.0,vertical: 8.0),
       children: <Widget>[

         InkWell(
           onTap:(){
             Navigator.push(context,
               MaterialPageRoute(builder:(context)=>resetPage()),
             );
           },
           child: myItems(Icons.graphic_eq,"Recent Updates"),
         ),
         InkWell (
           onTap:(){
             Navigator.push(context,
               MaterialPageRoute(builder:(context)=>HomePage()),
             );
           },
           child: myItems(Icons.library_books,"MMD Exams"),
         ),
         GestureDetector(
           onTap:(){
             Navigator.push(context,
               MaterialPageRoute(builder:(context)=>resetPage()),
             );
           },
           child: myItems(Icons.border_color,"Blogs"),
         ),

         myItems(Icons.assignment,"APPLICATION STATUS"),
         myItems(Icons.event_note,"REGISTRATION STATUS"),
         myItems(Icons.location_on,"PARCEL LOCATOR"),
         myItems(Icons.crop_square,"AREASIZE CONVERTER"),
         myItems(Icons.help,"HELP"),


       ],
       staggeredTiles: [
         StaggeredTile.extent(1, 170.0),
         StaggeredTile.extent(1, 170.0),
         StaggeredTile.extent(1, 170.0),
         StaggeredTile.extent(1, 170.0),
         StaggeredTile.extent(1, 170.0),
         StaggeredTile.extent(1, 170.0),
       ],
      )
    );
  }
}

此处,ontap 无法在 StaggeredgridviewTile 上运行。我的代码有什么问题?

GestureDetector(
   onTap:(){
     Navigator.push(context,
       MaterialPageRoute(builder:(context)=>resetPage()),
     );
   },
   child: myItems(Icons.border_color,"Blogs"),
 ),

gridview 不支持 onTap()。有什么问题吗?

最佳答案

使用 InkWell 代替手势

InkWell(
           onTap:(){
             Navigator.push(context,
               MaterialPageRoute(builder:(context)=>resetPage()),
             );
           },
           child: myItems(Icons.border_color,"Blogs"),
         ),

关于flutter - 交错 GridView Flutter onTap 不适用于我的代码中的图 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62423847/

相关文章:

java - android.view.InflateException 错误膨胀类 com.etsy.android.grid.StaggeredGridView

android - Etsy 的 StaggeredGridview 是否可以在 API 9 中工作?

flutter - flutter : flutter 1.22更新后,我在Lineargradient属性中遇到错误

flutter - 如何获得视频的实际纵横比?

flutter - 我想在启动画面中添加背景音频。所以尝试了下面的代码。但我有一些异常(exception)。 ( flutter )

c# - 在Gridview中检查重复项并显示错误消息(如果存在)?

android - 如何在 StaggeredGridView 中使用 PullToRefresh?

firebase - 如何使用 flutter web 从 Firebase 电话身份验证中删除验证码验证?

asp.net - “ColumnIndex”不是 'System.EventArgs' 的成员

Android:如何在将项目拖动到边缘时自动垂直滚动 GridView