bottomNavigationBar делать то, что я хочу только во время горячей перезагрузки - PullRequest
0 голосов
/ 26 июня 2018

Мне бы хотелось иметь статическую нижнюю панель для моего приложения. Эта полоса должна содержать час устройства в середине и температуру, считанную другим устройством справа.

here is an example of what I want

Моя проблема только в позиционировании / определении размера.

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

preview when I start on a device

Но когда я перезагружаю его, он становится именно тем, что я хочу, вот так:

while hot-reloading Проблема в том, что последнее приложение не загружено в горячем режиме.

Я мог бы определить проблему, Я использую MediaQuery.of (context) .size и конструктор для получения контекста, чтобы соответствовать всем устройствам, учитывающим размер. Это решение должно быть грязным, но я больше ничего не нахожу ..

Вот мой код, надеюсь, ситуация ясна ...

return new MediaQuery(
    data: MediaQueryData.fromWindow(ui.window),
    child: Builder(
        builder: (context) {
          return  new Builder(
              builder: (
                  context) {
                return
                new MaterialApp(
                    home: new DefaultTabController(
                      length: 6,
                      child: Scaffold(
                        bottomNavigationBar:



                          new Container(
                            color: Colors.white,
                            width: MediaQuery.of(context).size.width,
                            height: MediaQuery.of(context).size.height*0.1,
                            alignment: Alignment.centerRight,
                            child: new Container(
                                      color: Colors.blue,
                                      width: MediaQuery.of(context).size.width* 2/3,
                                      alignment: Alignment.centerRight,
                                      child: new Row(
                                                children: <Widget>[
                                                  new Expanded(child: new Container(
                                                    color : Colors.yellow,
                                                    child: new Text('22 : 22' ),
                                                    alignment: Alignment.center,
                                                  )),
                                                  new Expanded(child:new Container(
                                                    color: Colors.pink,
                                                    child: new Text(' 37.8 °C'),
                                                    margin: new EdgeInsets.all(MediaQuery.of(context).size.width*0.02),
                                                    alignment: Alignment.centerRight,
                                                  ))
                                                ],
                                              ),
                                    ),


                          ),

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Я в конечном итоге добавил свой предыдущий код в StatelessWidget и вызвал его в поле bottomNavigationBar поля Scaffold: он выполняет свою работу.

И я вызываю MediaQuery.of (context) внутри StatelessWidget созданного

Спасибо.

0 голосов
/ 26 июня 2018

Вы можете использовать Stack и расположить один абсолютный виджет над другим:

new Stack(
    children: <Widget> [
        new Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget> [
                new Text(time),
            ],
        ),
        new Row(
            mainAxisAlignment: MainAxisAlignment.end,
            children: <Widget> [
                new Text(temperature)
            ],
        ),
    ],
),

, где time & temperature - переменные, которые были установлены в состоянии ( Stateful Widgets) . Затем просто включите его в bottomNavigationBar.

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