Проблема отладки Flutter при изменении ориентации в эмуляторе

Я делаю адаптивный дизайн пользовательского интерфейса в трепете. Затем я отлаживал его в своем эмуляторе Android. Сначала была портретная ориентация, и это было хорошо. Затем я изменил ориентацию, и это был плохой интерфейс, которого не ожидалось. Ожидается, что пользовательский интерфейс горячей перезагрузки или горячей перезагрузки изменится. Я должен перезагружать или перезагружать всегда после изменения ориентации. Настройки автозагрузки уже сделаны после сохранения. Как решить эту проблему?

2 ответа

Вам нужно сделать свой пользовательский интерфейс адаптивным. Вы можете сделать это с помощью «MediaQuery». Пример:

      return Scaffold(
  appBar: AppBar(
    title: Text("Responsive Container"),
  ),
  body: Center(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.center,
      crossAxisAlignment: CrossAxisAlignment.center,
      children: [
        Container(
          height: MediaQuery.of(context).size.height/ 4,
          width: MediaQuery.of(context).size.width/3,
          color: Colors.red,
          child: Center(child: Text("Hello There !")),
        ),
      ],
    ),
  ),
);

Юу сказал, что вы создаете адаптивный пользовательский интерфейс, что означает, что вы используете ширину и высоту экрана, чтобы сделать его отзывчивым. Когда ориентация изменяется, очевидно, что ширина увеличивается, а высота уменьшается, поэтому, возможно, вам нужно добавить проверку изменения ориентации. Есть много способов сделать это, вот самый простой.

      return Scaffold(
        key: scaffoldKey,
        body: OrientationBuilder(
          builder: (BuildContext context, Orientation orientation) {
            orientation == Orientation.portrait ? 
                      doSomeThingifportrait : doSomethingifLandscape;
          },
        ),
);
Другие вопросы по тегам