class _HomeScreenState extends State<HomeScreen> {
...
onTap: () async {
await Navigator.push(
context,
MaterialPageRoute(builder: (context) => new EditScreen()),
);
setState(() {}); // ★
},
...
}
class _EditScreenState extends State<EditScreen> {
...
onPressed: () async {
Navigator.of(context).pushReplacement(
new MaterialPageRoute(builder: (context) => new EditCompleteScreen()),
);
},
...
}
class _EditCompleteScreenState extends State<EditCompleteScreen> {
...
onPressed: () {
Navigator.of(context).pop();
},
...
}
Фон: В этом приложении есть три сцены.Нажмите на карту на домашнем экране, нажмите на экран редактирования.На экране редактирования нажатие кнопки «Назад» откроет экран редактирования, нажатие другой кнопки приведет к замене экрана редактирования на экран завершения редактирования.На экране завершения редактирования нажатие кнопки подтверждения откроет экран завершения редактирования и вернется к начальному экрану.
Требуемое поведение: Проблема в том, что я хочу setState
(отмечен значком ★) для выполнения 1) после нажатия кнопки «Назад» на экране редактирования и 2) после нажатия кнопки подтверждения на экране завершения редактирования.
Текущее поведение: С помощьютекущий код, 1 правильный.Но для 2 setState
выполняется после pushReplacement
в EditScreenState вместо pop
в EditCompleteScreenState.
Есть ли какой-нибудь способ достичь желаемого поведения?