Правильный способ изменения содержимого лесов в зависимости от ориентации - PullRequest
1 голос
/ 12 мая 2019

У меня есть экран с виджетом GoogleMap и пара текстовых виджетов. То, что я пытаюсь сделать, это позволить карте использовать весь экран в альбомной ориентации без AppBar, в то же время ограничиваясь размером контейнера в портретной ориентации.

Теперь у меня просто есть 2 виджета скаффолдов, которые перерисовываются при каждом изменении ориентации, и после пары поворотов все устройство зависает, и мне нужно перезагрузить его.

Widget build(BuildContext context) {
final mediaQueryData = MediaQuery.of(context);
if (mediaQueryData.orientation == Orientation.landscape) {
  return Scaffold(
    body:GoogleMap(
            ...
          ),
  );
}
else{
  return Scaffold(
    appBar: AppBar(
      title: Text('Title'),
    ),
    body: ListView(
      scrollDirection: Axis.vertical,
      physics: NeverScrollableScrollPhysics(),
      children: <Widget>[
        Text('Text'),
        Text('Text'),
        Container(
          height: MediaQuery.of(context).size.height/3,
          child: GoogleMap(
            ...
          ),
        ),
      ],
    ),
  );
}

Так что я был бы очень признателен, если бы кто-нибудь помог мне найти более эффективный способ сделать что-то подобное.

Также, если нет, я также хотел бы знать, возможно ли иметь рабочие жесты (прокрутка, панорамирование и т. Д.) В виджете GoogleMap, вложенном в прокручиваемый ListView.

1 Ответ

0 голосов
/ 13 мая 2019

Если кто-то заинтересовался, кто-то предложил этот метод, но комментарий был удален:
Widget build(BuildContext context) { final isLandScape = MediaQuery.of(context).orientation == Orientation.landscape; return Scaffold( appBar: isLandScape ? null : AppBar( title: Text('Title'), ),
Я использовал тот же метод и для виджета Visibility, который включает в себя другие виджеты помимо map:

 visible: isLandScape ? false : true,

И то же самое для Контейнера с картой:

Container(
          height: isLandScape ? MediaQuery.of(context).size.height : MediaQuery.of(context).size.height/3,
          child: GoogleMap(
            ///
          ),
        ),

Кажется, сейчас работает стабильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...