【问题标题】:The argument type 'Context' can't be assigned to the parameter type 'BuildContext'.dartargument_type_not_assignable)参数类型“上下文”不能分配给参数类型“BuildContext”。dartargument_type_not_assignable)
【发布时间】:2020-12-03 23:52:27
【问题描述】:

情况:

我在简单类中有一个函数(非有状态或无状态),但该函数在有状态小部件的第一个屏幕中调用,在函数内部我使用Navigator.push 转到有状态小部件的第二个屏幕.

代码:

功能代码

containerAdder(initialI) {
    List<Widget> listViewContainer = List();

    for (var j = 0; j < mainListAllPlantDetailsList1.length; j++) {
      if (tabsText[initialI] == mainListAllPlantDetailsList1[j].ca) {
        listViewContainer.add(
          FlatButton(
            onPressed: () {
              Navigator.push(
                context, **(MENTIONED ERROR GIVES OVERHERE )**
                MaterialPageRoute(builder: (context) => ParticularPlant2()),
              );
            },
            child: Container(
                height: 320,
                width: 200,
                child: Stack(
                  children: [
                    Positioned(
                      bottom: 10,
                      child: Container(
                        padding: EdgeInsets.fromLTRB(25, 50, 20, 20),
                        height: 150,
                        width: 180,
                        decoration: BoxDecoration(
                          color: Colors.lightGreen,
                          borderRadius: BorderRadiusDirectional.only(
                            bottomEnd: Radius.circular(70),
                            topEnd: Radius.circular(70),
                            topStart: Radius.circular(70),
                          ),
                        ),
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            Text(mainListAllPlantDetailsList1[j].ca),
                            Text(mainListAllPlantDetailsList1[j].pN),
                            Text(mainListAllPlantDetailsList1[j].pr.toString()),
                          ],
                        ),
                      ),
                    )
                  ],
                )),
          ),
        );
      } else {
        continue;
      }
    }
    return listViewContainer;
  }

另外两个屏幕上还有另外两个有状态的小部件,而在第一个屏幕上我调用了这个函数。

问题:

帮助我了解为什么会出现上述错误以及如何解决?

【问题讨论】:

  • 你是怎么调用函数的??
  • objectnameofclass.functionname();在另一个统计小部件屏幕中
  • 为什么不在函数中传递上下文作为参数?你试过了吗?
  • 是的,没用
  • 阿曼,我已经发布了答案,请查看它...

标签: function flutter build


【解决方案1】:

让我们将上下文传递给您的函数以使其工作:

containerAdder(initialI, BuildContext context) { 
    // Your all of the codes
}

现在,像这样调用 containerAdder:

objectName.containerAdder(intialI, context);

【讨论】:

  • 成功了,谢谢,为什么会出现这种错误?
  • 因为你说的是​​普通类...它对上下文一无所知。你可以说纯粹的 dart。当我们将有状态小部件的上下文作为参数传递时,它现在将context 作为类BuildContext 的对象。它可以按预期前进...
猜你喜欢
  • 2020-07-08
  • 2020-04-01
  • 1970-01-01
  • 2020-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
相关资源
最近更新 更多