错误:[dart]无法将参数类型“ Context”分配给参数类型“ BuildContext”。 [argument_type_not_assignable]

时间:2018-11-21 06:43:25

标签: flutter google-cloud-firestore

我该如何解决?我不确定是否是由更新引起的。 enter image description here

10 个答案:

答案 0 :(得分:8)

下午好。与导入“ package:path / path.dart”有些冲突。在我的情况下,我在其中添加了一个别名(将“ package:path / path.dart”导入为Path)并且有效。

答案 1 :(得分:6)

对我来说,这是因为js库( import 'dart:js';)。我将其删除,错误消失了。

答案 2 :(得分:3)

使用this.context代替context

答案 3 :(得分:1)

检查select e.id, e.name FROM employees e JOIN classes_taken c ON e.id = c.employee WHERE count(c.class) > 2 GROUP BY c.class; 是否导入到页面顶部?如果有,请删除它,它将起作用。

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

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

答案 6 :(得分:0)

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

的函数

答案 7 :(得分:0)

对于其他看到此问题的人,我遇到了相同的问题,但对我来说,是我导入了 import 'package:path/path.dart';

即使我并不是真的需要它,所以它无法识别上下文。

答案 8 :(得分:0)

就我而言, 我有一个函数 _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% 取得良好效果。

答案 9 :(得分:0)

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

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