Я создаю меню, в котором заголовок меняется в зависимости от того, зарегистрирован пользователь или нет. Я написал условие, что если такой пользователь есть, то показывать 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.
// ...
},
),
],
),
);
}
}
Вы не можете явно написать список 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.
// ...
},
),
],
),
)