Flutter - Navigator 的“parent != 'null' is not true”错误

Kin*_*ics 5 android ios dart flutter

我写了一个检查,如果条件为真,然后导航到下一页。但是,每当该条件返回 true 并且我打算导航时,我都会收到错误消息

class BuyTickets extends StatefulWidget {

  @override
  _BuyTicketsState createState() => new _BuyTicketsState();
}

class _BuyTicketsState extends State<BuyTickets> {

  @override
  void initState(){    
    ...
    if(condition){    
      //Skip to next page
      Navigator.push( 
        context,
        MaterialPageRoute(
          builder: (BuildContext context) => SelectSeat(data: widget.data)
        )
      );
    }

    super.initState();
  }    

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
       ...
    )
  }
Run Code Online (Sandbox Code Playgroud)

错误:

在此处输入图片说明

请问我该如何解决?

che*_*ins 7

它抱怨说它找不到父对象,因为与小部件关联的渲染对象没有完全创建和安装。

在所有这些情况下,您需要将调用延迟到渲染对象安装的那一刻。一种方法是在第一帧之后执行它。

  @override
  void initState() {
    super.initState();

    if(condition){
      WidgetsBinding.instance.addPostFrameCallback((_) async {
        Navigator.push(
            context,
            MaterialPageRoute(
                builder: (BuildContext context) => SelectSeat(data: widget.data)
            )
        );
      });
    }
  }
Run Code Online (Sandbox Code Playgroud)