Привет, я пытаюсь заставить 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:
Спасибо