Flutter - FloatingActionButton не отображается после возврата на экран - PullRequest
0 голосов
/ 13 октября 2019

Мое приложение имеет определенный экран, который может иметь одну или три кнопки 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'],
        ),
      );
    });
  }
}

Это не включаетВесь код второго экрана, если вы считаете, что это необходимо для ответа на вопрос, дайте мне знать.

...