简体   繁体   English

错误:无法将参数类型“Context”分配给参数类型“BuildContext”

[英]Error : The argument type 'Context' can't be assigned to the parameter type 'BuildContext'

There was a problem with my code, while I was trying to exit a screen of mine from my bus tracking app main page but this is showing an error.我的代码有问题,当我试图从我的公共汽车跟踪应用程序主页退出我的屏幕时,但这显示了一个错误。 I have tried importing everything given in StackOverflow.我尝试导入 StackOverflow 中给出的所有内容。

help me to get this solved please请帮我解决这个问题

import 'dart:js';
import 'package:flutter/services.dart';
import 'registration_screen.dart';
import 'login_screen.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:path/path.dart';

class WelcomePage extends StatelessWidget {

From here the function starts功能从这里开始

  Future<bool?> _onBackPressed() async {
    return showDialog(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(`enter code here`
          title: Text('Do you want to exit?'),
          actions: <Widget>[
            TextButton(
              child: Text('No'),
              onPressed: () {
                Navigator.of(context).pop(false);
              },
            ),
            TextButton(
              child: Text('Yes'),
              onPressed: () {
                Navigator.of(context).pop(true);
                SystemNavigator.pop();
              },
            ),
          ],
        );
      }
    );
  }

Scaffold start here also the WillPopScope starts here which returns the _onBackPressed();脚手架从这里开始,WillPopScope 从这里开始,它返回 _onBackPressed();

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
    onWillPop: () async {
      bool? result = await _onBackPressed();
      if (result == null) {
        result = false;
      }
      return result;
    },
    child: Scaffold(
    // return Scaffold(
      body: SafeArea(
        child: Padding(
          padding: const EdgeInsets.symmetric(horizontal: 20),
          child: Column(
            children: [
              Flexible(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    SizedBox(
                      height: 20,
                    ),
                    Lottie.asset('assets/images/bus.json'),
                    SizedBox(
                      height: 20,
                    ),
                    Text(
                      "Welcome to \n Bus Tracking",
                      style: GoogleFonts.poppins(
                          fontSize: 34, fontWeight: FontWeight.w700),
                      textAlign: TextAlign.center,
                    ),
                  ],
                ),
              ),
              Padding(
                padding: EdgeInsets.symmetric(vertical: 38),
                child: Container(
                  height: 65,
                  decoration: BoxDecoration(
                    boxShadow: [
                      BoxShadow(
                          color: Colors.grey.withOpacity(0.3),
                          spreadRadius: 2,
                          blurRadius: 3,
                          offset: Offset(0, 5))
                    ],
                    color: Colors.deepPurple,
                    borderRadius: BorderRadius.circular(12),
                  ),
                  child: Row(
                    children: [
                      Expanded(
                        child: GestureDetector(
                          onTap: () {
                            Navigator.push(
                                context,
                                CupertinoPageRoute(
                                    builder: (context) =>
                                        RegistrationScreen()));
                          },
                          child: Container(
                            decoration: BoxDecoration(
                                color: Colors.white,
                                borderRadius: BorderRadius.circular(12),
                                border: Border.all(
                                  color: Colors.deepPurple,
                                  width: 0.9,
                                )
                                //textColor: Colors.black87,
                                ),
                            child: const Center(
                              child: Text(
                                'Register',
                                style: TextStyle(
                                  color: Colors.deepPurple,
                                  fontWeight: FontWeight.bold,
                                  fontSize: 15,
                                ),
                              ),
                            ),
                          ),
                        ),
                      ),
                      Expanded(
                        child: GestureDetector(
                          //bgColor: Colors.transparent,
                          //buttonName: 'Sign In',
                          onTap: () {
                            Navigator.push(
                                context,
                                CupertinoPageRoute(
                                  builder: (context) => LoginScreen(),
                                ));
                          },
                          child: Container(
                            decoration: BoxDecoration(
                                color: Colors.deepPurple,
                                borderRadius: BorderRadius.circular(12),
                                border: Border.all(
                                  color: Colors.deepPurple,
                                  width: 0.9,
                                )
                                //textColor: Colors.black87,
                                ),
                            child: const Center(
                              child: Text(
                                'Login',
                                style: TextStyle(
                                  color: Colors.white,
                                  fontWeight: FontWeight.bold,
                                  fontSize: 15,
                                ),
                              ),
                            ),
                          ),
                        ),
                      ),
                    ],
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    ));
  }
}

Change the function _onBackPressed as将函数 _onBackPressed 更改为

Future<bool?> _onBackPressed(BuildContext  ctx) async {
    return showDialog(
      context: ctx,
      builder: (BuildContext context) {
        return AlertDialog(`enter code here`
          title: Text('Do you want to exit?'),
          actions: <Widget>[
            TextButton(
              child: Text('No'),
              onPressed: () {
                Navigator.of(context).pop(false);
              },
            ),
            TextButton(
              child: Text('Yes'),
              onPressed: () {
                Navigator.of(context).pop(true);
                SystemNavigator.pop();
              },
            ),
          ],
        );
      }
    );
  }

Now in the build function use :现在在构建函数中使用:

bool? result = await _onBackPressed(context);

context is getting clashed may de due to import 'package:path/path.dart';由于import 'package:path/path.dart'; if you don't need it remove it.如果您不需要它,请将其删除。

在这个问题中,我一直在使用stateless widget ,但我需要使用有stateful widget ,因此解决方案是创建一个新文件作为有stateful widget ,并将其中的所有代码变哑,错误就解决了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 错误:无法将参数类型“Context”分配给参数类型“BuildContext” - error: The argument type 'Context' can't be assigned to the parameter type 'BuildContext' Argument 类型 &#39;Context&#39; 不能分配给参数类型 &#39;BuildContext&#39; - Flutter - The Argument type 'Context' can't be assigned to the parameter type 'BuildContext' - Flutter 无法将参数类型“Context”分配给参数类型“BuildContext” - The argument type 'Context' can't be assigned to the parameter type 'BuildContext' 错误:[dart] 无法将参数类型“Context”分配给参数类型“BuildContext”。 [argument_type_not_assignable] - error: [dart] The argument type 'Context' can't be assigned to the parameter type 'BuildContext'. [argument_type_not_assignable] 我在 context 上有错误。参数类型“Context”不能分配给参数类型“BuildContext” - I have error on context..The argument type 'Context' can't be assigned to the parameter type 'BuildContext' 错误:无法将参数类型“JsObject”分配给参数类型“BuildContext” - Error: The argument type 'JsObject' can't be assigned to the parameter type 'BuildContext' 参数类型“BuildContext?” 不能分配给参数类型“BuildContext” - The argument type 'BuildContext?' can't be assigned to the parameter type 'BuildContext' 参数类型“上下文”不能分配给参数类型“BuildContext”。dartargument_type_not_assignable) - The argument type 'Context' can't be assigned to the parameter type 'BuildContext'.dartargument_type_not_assignable) Flutter Navigator“无法将参数类型&#39;Context&#39;分配给参数类型&#39;BuildContext&#39;” - Flutter Navigator “argument type 'Context' can't be assigned to the parameter type 'BuildContext'” 参数类型“Context”不能分配给参数类型“BuildContext”。 For 循环和按钮 - The argument type 'Context' can't be assigned to the parameter type 'BuildContext'. For Loop and Button
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM