Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 未处理的异常:NoSuchMethodError:getter';focusScopeNode';被调用为空_Flutter_Dart - Fatal编程技术网

Flutter 未处理的异常:NoSuchMethodError:getter';focusScopeNode';被调用为空

Flutter 未处理的异常:NoSuchMethodError:getter';focusScopeNode';被调用为空,flutter,dart,Flutter,Dart,我对颤振还不熟悉,一直面临“聚焦镜节点”的问题。我也尝试过这个网站上的其他解决方案,但无法检测到问题。我无法理解上下文和构建者的概念。任何形式的帮助都将不胜感激 未处理的异常:NoSuchMethodError:获取程序“focusScopeNode” 在null上调用了。E/颤振(18828):接收器:零E/颤振 (18828):尝试调用:focusScopeNode 类主页扩展了无状态小部件{ @凌驾 小部件构建(构建上下文){ 返回新材料PP( 路线:{ “/login”:(上下文)=>l

我对颤振还不熟悉,一直面临“聚焦镜节点”的问题。我也尝试过这个网站上的其他解决方案,但无法检测到问题。我无法理解上下文和构建者的概念。任何形式的帮助都将不胜感激

未处理的异常:NoSuchMethodError:获取程序“focusScopeNode” 在null上调用了。E/颤振(18828):接收器:零E/颤振 (18828):尝试调用:focusScopeNode

类主页扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回新材料PP(
路线:{
“/login”:(上下文)=>login(),
},
标题:“NavigationDrawer演示”,
主题:新主题数据(
主样本:颜色。红色,
),
主页:新主页(),
);
}
}
阶级仪式{
字符串标题;
Iconda图标;
DroperItem(this.title,this.icon);
}
FirebaseUser用户;
类主页扩展了StatefulWidget{
主页({
这个.auth,
这是我的名字,
});
最终授权执行授权;
最终作废回拨至已签出;
最终付款日期=[
新的DroperItem(“主页”,Icons.Home),
新抽屉图标(“注销”,图标。退出到应用程序),
];
@凌驾
状态createState(){
返回新的HomePageState();
}
}
类HomePageState扩展了状态{
void\u logOutUser()异步{
试一试{
等待widget.auth.signOut();
widget.onSignedOut();
}捕获(e){
打印(如toString());
}
}
int _selectedDrawerIndex=0;
_getDrawerItemWidget(内部位置){
开关(pos){
案例0:
返回新的MyTabbedPage();
案例7:
_logOutUser();
返回新的StartApp();
违约:
返回新文本(“错误”);
}
}
_onSelectItem(整数索引){
设置状态(()=>_selectedDrawerIndex=索引);
Navigator.of(context.pop();
}
@凌驾
小部件构建(构建上下文){
var Droproptions=[];
对于(var i=0;i(i),
)
);
}
}
}

我认为问题可能在于调用_onSelectedItem()方法的地方。尝试将该方法放在生成上下文中,如下所示:

@override
  Widget build(BuildContext context) {

_onSelectItem(int index) {
    setState(() => _selectedDrawerIndex = index);
    Navigator.of(context).pop();
  }

    var drawerOptions = <Widget>[];
    for (var i = 0; i < widget.drawerItems.length; i++) {
      var d = widget.drawerItems[i];
      drawerOptions.add(
          new ListTile(
            leading: new Icon(d.icon),
            title: new Text(d.title),
            selected: i == _selectedDrawerIndex,
            onTap: () => _onSelectItem(i),
          )
      );
    }
  }
@覆盖
小部件构建(构建上下文){
_onSelectItem(整数索引){
设置状态(()=>_selectedDrawerIndex=索引);
Navigator.of(context.pop();
}
var Droproptions=[];
对于(var i=0;i(i),
)
);
}
}
当您调用Navigator.pop(context)时,它可能不知道“context”是什么。因此,通过将方法放在构建(上下文)中,它应该可以解决这个问题

@override
  Widget build(BuildContext context) {

_onSelectItem(int index) {
    setState(() => _selectedDrawerIndex = index);
    Navigator.of(context).pop();
  }

    var drawerOptions = <Widget>[];
    for (var i = 0; i < widget.drawerItems.length; i++) {
      var d = widget.drawerItems[i];
      drawerOptions.add(
          new ListTile(
            leading: new Icon(d.icon),
            title: new Text(d.title),
            selected: i == _selectedDrawerIndex,
            onTap: () => _onSelectItem(i),
          )
      );
    }
  }