【问题标题】:Run the ontap() gesture on the card in flutter在卡片上运行 ontap() 手势
【发布时间】:2021-04-30 00:36:07
【问题描述】:

我一直在尝试从 Flutter 的材料包中运行 onTap() 函数,但它似乎给我抛出了这个错误:

“处理手势时抛出以下断言: 使用不包含 Navigator 的上下文请求的 Navigator 操作。"

我需要运行这个函数来访问应用程序中新屏幕的调用函数。

代码如下:

class _HomePageState extends State<dashboardpage> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
          body: Stack(
            children: <Widget>[
              Container(
                height:130*.99,
                decoration: BoxDecoration(
                    image: DecorationImage(
                      alignment: Alignment.center,
                      image: AssetImage('assets/bismillah.png'),fit: BoxFit.fitHeight,
                    )
                ),
              ),
              SafeArea(
                  child: Padding(
                    padding: EdgeInsets.only(top: 0),
                    child: Column(
                      children:<Widget> [
                        Container(
                          height: 100.0,
                          child: Row(
                            children:<Widget> [
                              Center(
                                child: SizedBox(
                                  width: 90.0,
                                ),
                              ),
                              Column(
                                  mainAxisAlignment: MainAxisAlignment.start,
                                  crossAxisAlignment: CrossAxisAlignment.end
                              )
                            ],
                          ),
                        ),
                        Expanded(
                            child:GridView.count(
                              mainAxisSpacing: 10,
                              crossAxisSpacing: 10,
                              primary: false,
                              crossAxisCount: 2,
                              children: <Widget>[
                                Padding(
                                  padding: const EdgeInsets.only(top: 60),
                                    child: InkWell(
                                      child: Card(
                                        child: Container(
                                          child: Column(
                                              mainAxisAlignment: MainAxisAlignment.center,
                                              children: <Widget>[
                                                Image.asset('assets/images/kafiroun/kafirun.jpg',height: 80),
                                                Text('सूरा अल काफिरून',style: TextStyle(fontWeight: FontWeight.bold,color: Colors.black87))
                                              ]
                                          ),
                                        ),
                                    shape:RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)
                                    ),
                                    elevation: 5.0,
                                  ),
                                      onTap:(){
                                        Navigator.push(context, MaterialPageRoute(builder: (context)=> kafiroun()));
                                      },

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

这是代码示例,代码卡在 onTap() 行。 请帮帮我!

【问题讨论】:

  • 您的Navigator 中的context 找不到MaterialApp。将您的Scaffold 放入不同的StatelessWidget,示例:class HomePage extends StatelessWidget{ ...your Scaffold here... }。然后,将MaterialApphome 属性设置为home: HomePage()

标签: android flutter android-studio flutter-dependencies


【解决方案1】:

使用手势检测器

 GestureDetector(onTap:(){
                                            Navigator.push(context, MaterialPageRoute(builder: (context)=> kafiroun()));
                                          },


child: Padding(
                                      padding: const EdgeInsets.only(top: 60),
                                        child: InkWell(
                                          child: Card(
                                            child: Container(
                                              child: Column(
                                                  mainAxisAlignment: MainAxisAlignment.center,
                                                  children: <Widget>[
                                                    Image.asset('assets/images/kafiroun/kafirun.jpg',height: 80),
                                                    Text('सूरा अल काफिरून',style: TextStyle(fontWeight: FontWeight.bold,color: Colors.black87))
                                                  ]
                                              ),
                                            ),
                                        shape:RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)
                                        ),
                                        elevation: 5.0,
                                      ),
                                          
    
                                        )
                                    ),
)

【讨论】:

  • 手势也出现同样的错误
猜你喜欢
  • 2019-02-07
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多