Как нарисовать представление списка за строкой состояния без заполнения?

#flutter #dart

#flutter #dart

Вопрос:

Вот чего я хочу добиться:

Содержимое каркаса находится за строкой состояния

Это то, что у меня есть сейчас:

   @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
      body: ListView(
        children: [
          Image.asset(
            'assets/images/videosbg.png',
            fit: BoxFit.cover,
            height: 300,
            width: double.infinity,
          ),
          ...
        ],
      ),
    );
  }
  

Содержимое каркаса находится под строкой состояния

Я не хочу удалять строку состояния или изменять ее цвет, поэтому systemChrome у меня не работал.

Как разместить тело каркаса за строкой состояния, а не ниже? Нужно ли мне как-то удалить верхнюю часть строки состояния?

Комментарии:

1. Я попытался установить цвет на прозрачный в main (), как предполагают некоторые ответы ниже, но ничего не изменилось. Верхнее заполнение все еще там. Может быть, моя структура виджета неверна или я должен что-то изменить в Scaffold?

Ответ №1:

ListView имеет свойство заполнения, установите для него значение EdgeInsets.zero

   @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
      body: ListView(
        padding: EdgeInsets.zero,
        children: [
          Image.asset(
            'assets/images/videosbg.png',
            fit: BoxFit.cover,
            height: 300,
            width: double.infinity,
          ),
          ...
        ],
      ),
    );
  }
  

К вашему СВЕДЕНИЮ https://github.com/flutter/flutter/issues/14842

Ответ №2:

Я попытался поместить systemChrome с прозрачным цветом в функцию main () перед запуском MaterialApp

 SystemChrome.setSystemUIOverlayStyle(
  SystemUiOverlayStyle(statusBarColor: Colors.transparent),
);
  

и я смог воспроизвести то, что вы ищете
введите описание изображения здесь

Комментарии:

1. Я попытался установить цвет на прозрачный в main(), но ничего не изменилось. Верхнее заполнение все еще там. Может быть, моя структура виджета неверна или я должен что-то изменить в Scaffold?

Ответ №3:

Для Android ДА

SystemChrome используется для настройки прозрачности панели. Этот класс предоставляет setSystemUIOverlayStyle метод, и вы можете использовать его следующим образом:

 import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main(){
  WidgetsFlutterBinding.ensureInitialized();
  SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
    statusBarColor: Colors.transparent,
  ));
  runApp(MyApp());
}
  

Комментарии:

1. @Darkhan: Не могли бы вы сообщить мне, сработало ли это решение для вас или нет

2. Я попытался установить цвет на прозрачный в main(), но ничего не изменилось. Кажется, проблема не в цвете, а в заполнении. Может быть, моя структура виджета неверна или я должен что-то изменить в Scaffold?

3. Каркас предназначен для вашего экрана, он вам не поможет.