我正试图将一个值传递给Navigator堆栈中的Widget。样本代码:
class FirstPage extends StatefulWidget{
//...
receivedValue = await Navigator.push<String>(context, CupertinoPageRoute(
(ctx) => SecondPage(),
));
}
class SecondPage extends StatefulWidget{
//...
receivedValue = await Navigator.pushReplacement<String,String>(context, CupertinoPageRoute(
(ctx) => ThirdPage(),
));
}
class ThirdPage extends StatefulWidget{
//...
Navigator.pop<String>(context, outputString);
}
但是,除非我在堆栈中保留SecondPage,否则该值不会传递到第一个屏幕。在读取文档时,pushReplacement
中有一个result
属性,它会传递回导航器堆栈中的上一个屏幕。如果弹出更换屏幕。
但是,我想要传递的值取决于ThirdScreen
中的用户输入。有办法做到吗?
不需要pushReplacement
,只需推送第三页,在弹出第三页后再弹出第二页即可!
class FirstPage extends StatefulWidget{
//...
receivedValue = await Navigator.push<String>(context, CupertinoPageRoute(
(ctx) => SecondPage(),
));
}
class SecondPage extends StatefulWidget{
//...
receivedValue = await Navigator.push<String,String>(context, CupertinoPageRoute(
(ctx) => ThirdPage(),
));
Navigator.pop(context, receivedValue);
}
class ThirdPage extends StatefulWidget{
//...
Navigator.pop<String>(context, outputString);
}