无法将元素类型 'Set<UserAccountsDrawerHeader>' 分配给列表类型 'Widget'

The element type 'Set<UserAccountsDrawerHeader>' can't be assigned to the list type 'Widget'

我创建了一个菜单,其中 header 根据用户是否注册而变化。我写了一个条件,如果有这样的用户,则显示一个 UserAccountsDrawerHeader,如果没有 - DrawerHeader。但是我有一个错误 - 元素类型 'Set' 无法分配给列表类型 'Widget' 并且元素类型 'Set' 无法分配给列表类型 'Widget'.如何正确书写。求助

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.
              // ...
            },
          ),   
        ],
      ),
    );
  }
}

如果 <Widget> 列表,你不能显式写 if condition,除非你使用 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.
          // ...
        },
      ),
    ],
  ),
)