代码之家  ›  专栏  ›  技术社区  ›  mikezang

如何解决“IconData”不是“Widget”类型的子类型?

  •  0
  • mikezang  · 技术社区  · 5 年前

    我有一个 SettingsTile

    SettingsSection(
      title: 'System',
      tiles: [
        SettingsTile(
          title: 'Reset',
          leading: Icon(Icons.clear_all_sharp),
          trailing: Icon(Icons.keyboard_arrow_right),
          onTap: () {
            Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) => LoginPage()));
          },
        ),
    

    但如果我改成如下代码:

    SettingsSection(
      title: 'System',
      tiles: [
        _optionPush('Reset', Icons.clear_all_rounded, Icon(Icons.keyboard_arrow_right), LoginPage, context),
    
    Widget _optionPush(title, leading, trailing, func, context) {
      return SettingsTile(
        title: title,
        leading: leading,
        trailing: trailing,
        onTap: () {
          Navigator.of(context).push(
            MaterialPageRoute(
              builder: (BuildContext context) => func(),
            ),
          );
        },
      );
    }
    

    type 'IconData' is not a subtype of type 'Widget' ,下一步该怎么办?

    2 回复  |  直到 5 年前
        1
  •  1
  •   Mr Random    5 年前

    你忘了用 Icon()

    SettingsSection(
      title: 'System',
      tiles: [
        _optionPush('Reset', Icons.clear_all_rounded, Icon(Icons.keyboard_arrow_right), LoginPage, context),
    
    Widget _optionPush(title, leading, trailing, func, context) {
      return SettingsTile(
        title: title,
        leading: Icon(leading),
        trailing: Icon(trailing),
        onTap: () {
          Navigator.of(context).push(
            MaterialPageRoute(
              builder: (BuildContext context) => func(),
            ),
          );
        },
      );
    }
    
        2
  •  0
  •   bluenile    5 年前

    您忘记将Icon()小部件包装到图标数据。请看下面。

    SettingsSection(
      title: 'System',
      tiles: [
        _optionPush('Reset', Icon(Icons.clear_all_rounded, Icon(Icons.keyboard_arrow_right), LoginPage, context),