Ориентация устройства флаттера - PullRequest
0 голосов
/ 17 декабря 2018

Интересно, почему Flutter чудесно поворачивается из книжного в альбомный режим, если работает на устройстве iOS, но не вращается вообще на моем устройстве Android ??

В качестве примера кода вы найдете пример "hello world"ниже.Опять же, также для этого простого примера кода, Flutter вращается для устройства iOS из коробки, но он не вращается для Android.Почему ??

То же самое верно для более сложных приложений, добавляющих ListViews или других (то есть iOS вращается хорошо, а Android нет).

Я нашел что-то под названием OrientationBuilder ( link1 ) или MediaQuery.orientation ( link2 ).Но это, кажется, только предлагает возможность различать ориентации устройства, и тогда вы должны действовать соответствующим образом в коде.Это кажется возможным решением, но мне интересно, почему я должен вкладывать дополнительные средства в устройства Android, а не в iOS?

Мне нужна возможность «АВТОМАТИЧЕСКОГО» вращения для Android под Flutter (так же, как для iOS).делает это из коробки).Как мне этого добиться?

Вот два скриншота моего примера "Привет, мир".(iOS вращается из коробки / Android нет):

enter image description hereenter image description here

А вот и Dart-код:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter = _counter + 2;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.display1,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

Ответы [ 3 ]

0 голосов
/ 17 декабря 2018

Вы запускаете флаттер в эмуляторе?Я считаю, что поворот происходит автоматически, когда я устанавливаю его в устройство.Возможно, вам нужно запустить его в настройках эмулятора Android.

0 голосов
/ 17 декабря 2018

Благодаря ответам Яграджа Сингха , а также user1462442 я наконец-то нашел способ вращать эмулятор Android.

Недостаточно просто повернутьэмулятор Android (например, при нажатии клавиши CMD <- или в меню настроек) - Нет!Кроме того, вы должны выбрать маленькую иконку в строке меню телефона Android-эмулятора (см. Красный кружок на изображении) ...

Не знаю, почему AVD делает это так ...

enter image description here

0 голосов
/ 17 декабря 2018

В панели уведомлений или системных настройках вашего телефона (Android) измените ориентацию устройства на автоматическую.другой метод - использование системной библиотеки lib of flutter, вы можете изменить или установить предпочтительную ориентацию, может быть, это может помочь, flutter docs

...