Как использовать анимацию героев для AppBar на устройствах iOS с такими надрезами, как iPhone X и iPhone XS? - PullRequest
0 голосов
/ 25 февраля 2019

Привет, я пытаюсь заставить AppBar оставаться в топе во время перехода.Я понимаю, что я могу сделать это с помощью героя.Однако iOS-устройства с надрезом (iPhone X, XR, XS и т. Д.) Демонстрируют странное поведение.Отлично работает на Android и других устройствах iOS.Во время анимации героя содержимое панели приложений перемещается вверх, а затем вниз.Я ожидаю, что это будет исправлено, так как начальная и последняя позиции одинаковы.Я заполнил проблему в github , однако сейчас я ищу обходной путь.

Вот минимальный пример, иллюстрирующий проблему:

void main() async {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  MyApp({
    Key key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: MyHomeScreen(),
    );
  }
}

Widget _heroAppBar({BuildContext context,String titleText}){
    return PreferredSize(
      preferredSize: Size.fromHeight(kToolbarHeight),
      child: Hero(
          tag: 'app_bar',
          child: Builder(builder: (BuildContext context) {
            return AppBar(title:Text(titleText));
          }
        ),
      ),
    );
  }


class MyHomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar:_heroAppBar(context:context,titleText:"Home"),
      body:Center(
        child: IconButton(
          iconSize: 100,
          icon:Icon(Icons.play_arrow),
          onPressed: (){
            Navigator.push(context, MaterialPageRoute(builder: (context){
              return MyNextScreen();
            }));
          }
        ),
      )
    );
  }
}

class MyNextScreen extends StatelessWidget {
  Widget build(BuildContext context) {
    return  Scaffold(
        appBar:_heroAppBar(context:context,titleText:"Second"),
        body:Center(child:Text("Second Screen")),
        );
  }
}

Я также приложил gif, иллюстрирующий проблему.

iPhone X / iPhone 7:

Спасибо

...