【问题标题】:Flutter :I've a problem of context with my dynamics menuFlutter:我的动态菜单有上下文问题
【发布时间】:2019-01-14 13:32:09
【问题描述】:

我的动态菜单在构建上下文时遇到了问题。

其实我是想动态创建一个菜单但是不知道怎么在_MenuItem的类中使用上下文。

还有其他方法吗?

我的代码:

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      ...
      body: MenuButtons(kMenuCard),
    );
  }
}

class MenuButtons extends StatelessWidget {

  final List<MenuCard> _menuButtons;

  MenuButtons(this._menuButtons);

  @override
  Widget build(BuildContext context) {
    return GridView.count(
        crossAxisCount: 2,
        children: _buildMenu()
    );
  }

  List<_MenuItem> _buildMenu() {
    return _menuButtons.map((button) => _MenuItem(button)).toList();
  }
}

在这部分我的 IDE 提示我:“缺少构建上下文”并且我不知道如何以不同的方式实现 buildContext

class _MenuItem extends GridTile {

  _MenuItem(MenuCard button)
      : super(
    child:GestureDetector(
      onTap: (){Navigator.push(context, "${button.route}")},
      child: Card(
        color: Colors.teal,
        child: Center(
          child: Text("${button.title}"),
        ),
      ),
    ),
  );
}

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    您需要将BuildContext 传递给您的_MenuItem 类:

    更新代码:

    @override
      Widget build(BuildContext context) {
        return GridView.count(
            crossAxisCount: 2,
            children: _buildMenu(context) // Pass Context
        );
      }
    
    List<_MenuItem> _buildMenu(BuildContext context) { 
        return _menuButtons.map((button) => _MenuItem(button,context)).toList();
      }
    }
    
    class _MenuItem extends GridTile {
    
      _MenuItem(MenuCard button,BuildContext context)
          : super(
        child:GestureDetector(
          onTap: (){Navigator.push(context, "${button.route}")},
          child: Card(
            color: Colors.teal,
            child: Center(
              child: Text("${button.title}"),
            ),
          ),
        ),
      );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多