错误:[dart] 参数类型“Context”不能分配给参数类型“BuildContext”。 [argument_type_not_assignable]

Posted

技术标签:

【中文标题】错误:[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] 【发布时间】:2019-04-23 16:43:23 【问题描述】:

我该如何解决这个问题?我不确定这是否是由 Flutter 更新引起的。

【问题讨论】:

请不要将代码发布为图像,而是以文本形式发布。这允许其他人搜索它。 首先将上下文传递给函数。 - getGroup(snapshot,context) 然后定义函数 - getGroup(async.....,BuildContext context) 【参考方案1】:

在您的代码中:首先将上下文传递给函数。 - getGroup(snapshot,context) 然后定义类似的函数 - getGroup(async.....,BuildContext context)...

【讨论】:

【参考方案2】:

import 'package:path/path.dart' 存在一些冲突。就我而言,我在其中添加了一个别名 import 'package:path/path.dart' as Path 并且它起作用了。

【讨论】:

好收获!这么随机的东西和程序不会因为它而运行! 谢谢!导入别名后,您只需将使用它的任何函数更新为 Aliasname.function 即可。即 basename() 变为 Path.basename()。 那其实是正确答案,应该已经标记为“正确答案” 为什么 Flutter 不会在这里显示更好的错误......这是一个简单的“嘿,我们不确定你指的是哪个上下文”错误,应该在这里显示【参考方案3】:

对我来说,是我导入了import 'package:path/path.dart';

虽然我并不真正需要它,所以它无法识别context

【讨论】:

【参考方案4】:

对我来说,这是由于 js 库( import 'dart:js';)。我删除了它,错误消失了。

【讨论】:

我遇到了同样的问题。 这里也一样!我很困惑。【参考方案5】:

使用this.context 代替context

【讨论】:

这对我有用,非常感谢。为什么会这样?您能否详细说明为什么这是解决方案【参考方案6】:

检查您的页面顶部是否导入了import 'dart:js';?如果是,请将其删除,它会起作用。

【讨论】:

【参考方案7】:

只需删除import 'dart:js(在顶部)。

如果您仍然面临同样的问题,请使用BuidContext context 而不是context

【讨论】:

【参考方案8】:

如果import: 'package:path/path.dart' as Path'; 不起作用,请使用this.context,它会起作用。

【讨论】:

【参考方案9】:

就我而言, 我有一个函数 _myRestaurants,我必须添加 context 作为参数来消除错误。

    _myRestaurants(context) 
  List<Widget> restaurantList = [];
  restaurants.forEach((Restaurant restaurant) 
    restaurantList.add(
      GestureDetector(
        onTap: () => Navigator.push(
          context, // <-- this was the issue
          MaterialPageRoute(
            builder: (_) => RestaurantScreen(restaurant: restaurant),
          ),
        ),

通过在 BuildContext context 或 Just context 功能帮助我解决了问题并且我的代码正在运行 100% 取得好成绩。

【讨论】:

【参考方案10】:

对我来说,是我导入了import 'package:path/path.dart'

导入 'package:path/path.dart' 存在一些冲突。因此,在像这样在其中添加别名后:import 'package:path/path.dart' as Path,对我来说效果很好。

【讨论】:

【参考方案11】:

只需删除import 'dart:js(在顶部)。改用 BuidContext 上下文

【讨论】:

您能否解释一下为什么会有帮助?

以上是关于错误:[dart] 参数类型“Context”不能分配给参数类型“BuildContext”。 [argument_type_not_assignable]的主要内容,如果未能解决你的问题,请参考以下文章

错误:参数类型“对象?”不能分配给参数类型“字符串”

参数类型 'num?'不能分配给参数类型 'num'.dart(argument_type_not_assignable)

错误:参数类型“字符串?”不能分配给参数类型“字符串”

错误:无法将参数类型“String”分配给参数类型“Uri”。 'Uri'来自'dart:core' [重复]

该参数的值不能为“null”,因为它在 Dart 中的类型

参数类型 'Book' 不能分配给参数类型 'Map<String, dynamic>'.dart(argument_type_not_assignable)