Тип элемента «Set<UserAccountsDrawerHeader>» не может быть назначен типу списка «Виджет».

Я создаю меню, в котором заголовок меняется в зависимости от того, зарегистрирован пользователь или нет. Я написал условие, что если такой пользователь есть, то показывать UserAccountsDrawerHeader, если нет — DrawerHeader. Но у меня ошибка: тип элемента «Набор» не может быть назначен типу списка «Виджет», а тип элемента «Набор» не может быть назначен типу списка «Виджет». Как правильно писать. Пожалуйста помоги

class _AppDrawerState extends State<AppDrawer> {
  final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
  var current_user;
  Future<void> _handleDrawer()async{
    _scaffoldKey.currentState.openEndDrawer();
  }

  @override
  Widget build(BuildContext context) {
    return Drawer(
      child: ListView(
        padding: EdgeInsets.zero,
        children: <Widget>[
          if (current_user) {
            return UserAccountsDrawerHeader(
              accountName: new Text("Cleudice Santos"),
              accountEmail: new Text("cleudice.ms@gmail.com"),
              onDetailsPressed: () {},
            ),
          } else {
            return DrawerHeader(
            child: Text('Drawer Header'),
            decoration: BoxDecoration(
            color: Colors.blue,
            ),
            ),
          };
          ListTile(
            leading: Icon(Icons.search),
            title: Text('search1'),
            onTap: () {
            },
          ),
          ListTile(
            leading: Icon(Icons.local_shipping),
            title: Text('search1'),
            onTap: () {
              // Update the state of the app.
              // ...
            },
          ),   
        ],
      ),
    );
  }
}
Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
426
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не можете явно написать список if condition if <Widget>, если вы не используете ListBuilder. Вы можете изменить свой код следующим образом

Drawer(
  child: ListView(
    padding: EdgeInsets.zero,
    children: <Widget>[
      current_user ? UserAccountsDrawerHeader(
        accountName: new Text("Cleudice Santos"),
        accountEmail: new Text("cleudice.ms@gmail.com"),
        onDetailsPressed: () {},
      ) : DrawerHeader(
        child: Text('Drawer Header'),
        decoration: BoxDecoration(
          color: Colors.blue,
        ),
      ),
      ListTile(
        leading: Icon(Icons.search),
        title: Text('search1'),
        onTap: () {
        },
      ),
      ListTile(
        leading: Icon(Icons.local_shipping),
        title: Text('search1'),
        onTap: () {
          // Update the state of the app.
          // ...
        },
      ),
    ],
  ),
)

Другие вопросы по теме