Как представить пустой вид в флаттере?

Как представить пустое представление во флаттере, поскольку Widget.build не может возвратить нуль, чтобы указать, что нет ничего для рендеринга.

Ответы

Ответ 1

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(

    );
  }
}

Вы также можете просто вернуть пустой Container и избегать использования Scaffold полностью. Но это приведет к черному экрану, если это единственный основной виджет в вашем приложении, вы можете установить свойство color Container если вы хотите предотвратить черный фон.

Пример:

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.white // This is optional
    );
  }
}

Ответ 2

Для любого, как я, который задавался вопросом, что такое "правильный способ" показать пустой виджет - официальная база материалов Material использует это:

Widget build(BuildContext context) {
  return SizedBox.shrink();
}

SizedBox.shrink() - это виджет, который отличается от Container или Material без фона и каких-либо украшений. Он масштабирует себя до минимально возможной области, если на него не влияют родительские ограничения.

Ответ 3

Рекомендуемый виджет, который ничего не показывает, должен использовать SizedBox.

SizedBox(
  width: 200.0,
  height: 300.0,
  child: const Card(child: Text('Hello World!')),
)

Ответ 4

Когда функция сборки возвращает ноль, сообщение об ошибке от флаттера выглядит так:

Функции сборки никогда не должны возвращать ноль. Чтобы вернуть пустое пространство, из-за которого виджет здания заполняет доступную комнату, верните "new Container()". Чтобы вернуть пустое пространство, занимающее как можно меньше места, верните "новый контейнер (ширина: 0,0, высота: 0,0)".