как избежать получения пробелов из-за удаления панели приложений и строки состояния в Android с помощью флаттера?

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

Но код работает нормально на экране iPhone,

Примечание: я удалил панель приложений из каркаса и удалил панель уведомлений в моем main.dart

return Scaffold(
      // appBar: AppBar(title: Text('Screen Height')),
        body: Column(
          children: <Widget>[
            Expanded(
              child: Container(color: Colors.white),
            ),
            Expanded(
              child: Container(color: Colors.red),
            )
          ],
        ));

введите описание изображения здесь


person Bala    schedule 25.04.2020    source источник


Ответы (3)


чтобы получить полноэкранное приложение, в вашем main методе:

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SystemChrome.setEnabledSystemUIOverlays([]);
  runApp(MyApp());
}
person Haidar Mehsen    schedule 25.04.2020
comment
Я добавил SystemChrome.setEnabledSystemUIOverlays ([]); уже в main.dart, для этого я получаю только полный экран, но проблема в белой области внизу. - person Bala; 25.04.2020

Чтобы добавить к ответу @ LoVe, вы также можете добавить extendBody:true и extendBodyBehindAppBar: true в свой каркас.

person Laebrye    schedule 25.04.2020
comment
Согласно документации Flutter, эти два поля действуют только тогда, когда Scaffold имеют bottomNavigationBar и appBar соответственно, в противном случае они ничего не меняют. - person na2axl; 25.04.2020
comment
О да. Извини, что пропустил. Спасибо - person Laebrye; 25.04.2020

Я не могу воспроизвести упомянутую вами проблему. Ниже приведен простейший код, который я пробовал использовать в вашем эмуляторе Android и не вижу пробелов внизу:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: MyHomePage()
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold( // appBar: AppBar(title: Text('Screen Height')),
        body: Column(children:
        [
          Expanded
            (child: Container
            (color: Colors.white),
          ),
          Expanded(
            child: Container(color: Colors.red),
          )
        ],
        )
    );
    // );
  }
}

введите описание изображения здесь

person Darshan    schedule 25.04.2020
comment
Даршан, пожалуйста, добавьте это в свой main.dart SystemChrome.setEnabledSystemUIOverlays ([]); и перестройте приложение, вы получите белое пространство внизу. - person Bala; 25.04.2020
comment
Я не думаю, что это нужно публиковать как ответ, а скорее как комментарий - person Haidar Mehsen; 25.04.2020
comment
@LoVe вы не можете поместить весь образец кода в качестве комментария. Более того, поделившись всем кодом, OP может перепроверить, что они, возможно, пропустили, что может помочь им решить проблему. Следовательно, это было ответом. - person Darshan; 25.04.2020
comment
@Darshan Я понимаю, но я хотел сказать, что ваш ответ, ну, не ответил на его вопрос об удалении белого пространства, это именно то, что я имел в виду :) - person Haidar Mehsen; 25.04.2020
comment
@Darshan, можешь ли ты поделиться своим скриншотом? примечание: не будет строки состояния / панели уведомлений, если вы используете SystemChrome.setEnabledSystemUIOverlays ([]). - person Bala; 25.04.2020