Мое приложение имеет определенный экран, который может иметь одну или три кнопки FloatingActionButton, в зависимости от состояния. Возвращаясь от этого экрана к моему домашнему экрану, должна отображаться кнопка FloatingActionButton. Вернувшись назад, я имею в виду использование кнопки «Назад» на телефоне или нажатие кнопки, которая вызывает Navigator.pop (context) (которая является одной из трех кнопок).
Если этот экран находится в состоянии с однимБудет использоваться FloatingActionButton и кнопка «Назад» телефона, домашний экран будет загружен правильно и отображается FloatingActionButton. Однако если экран находится в другом состоянии и будет использоваться кнопка «Назад» или Navigator.pop (контекст), домашний экран будет построен без FloatingActionButton.
//function of the second-screen
void exit() {
controllerWhite.dispose();
controllerBlack.dispose();
SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
SystemChrome.setPreferredOrientations([
DeviceOrientation.landscapeRight,
DeviceOrientation.landscapeLeft,
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
Navigator.pop(context);
}
//home-screen
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Consumer<AppState>(builder: (context, appState, child) {
return Scaffold(
appBar: AppBar(
actions: <Widget>[
IconButton(
icon: Icon(
Icons.settings,
color: appState.getColorTheme()['black'],
),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SettingsScreen(
)),
);
},
)
],
backgroundColor: appState.getColorTheme()['background'],
title: Text(widget.title,
style: TextStyle(
fontSize: 20, color: appState.getColorTheme()['accent'])),
),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: ScrollableGamesGrid(
),
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
//FloatingActionButton which is either build or not build
floatingActionButton: FloatingActionButton.extended(
onPressed: () {
showModalBottomSheet(
context: context,
builder: (_) {
return NewGame(
);
});
},
label: Text('Add custom game'),
icon: Icon(Icons.add),
backgroundColor: appState.getColorTheme()['accent'],
),
);
});
}
}
Это не включаетВесь код второго экрана, если вы считаете, что это необходимо для ответа на вопрос, дайте мне знать.