【问题标题】:How to check class parent from BuildContext?如何从 BuildContext 检查类父级?
【发布时间】:2020-12-06 00:32:42
【问题描述】:

我正在实现一个商务应用,现在的重点是三个组件:CartPageCatalogPageProductListItemProductListItem 组件在两个页面上重复使用,购物车和目录。所以在ProductListItem Widget 里面我必须知道你的父类是什么类才能返回特定的组件。到目前为止,我的意思是使用BuildContext 对象从父级获取一些信息。如果不是这样,我的意思是使用静态字符串来检查父级,在创建ProductListItem 组件时将其传递给构造函数。

class ProductListItem extends StatefulWidget {

  final Product product;

  ProductListItem(this.product);

  @override
  _ProductListItemState createState() => _ProductListItemState(product);
}

class _ProductListItemState extends State<ProductListItem> {
  final Product product;
  int amount = 1;

  _ProductListItemState(this.product);

  @override
  Widget build(BuildContext context) {
  // if (parent is Cart) return 1;
  // else if (parent is Catalog) return 2;
  }
}

我也接受其他更改的建议。

【问题讨论】:

    标签: flutter dart flutter-widget


    【解决方案1】:

    也许您想获取 Navigator 的历史记录以检查父级。 目前 Navigator 不支持获取 Navigator 的历史记录。但 Flutter 团队将在 Navigator 2.0 上更新此功能,它们已完成并合并到 master。等待下一个版本。

    How to get _history from NavigatorState

    Navigator 2.0

    在您的情况下,暂时将标志传递给家长的详细信息页面。

    【讨论】:

      【解决方案2】:

      BuildContext 对象被传递给 WidgetBuilder 函数(例如 StatelessWidget.build),并且可从 State.context 成员中获得。一些静态函数(例如 showDialog、Theme.of 等)也采用构建上下文,以便它们可以代表调用小部件执行操作,或专门为给定上下文获取数据。

      每个小部件都有自己的 BuildContext,它成为 StatelessWidget.build 或 State.build 函数返回的小部件的父级。 (同样,RenderObjectWidgets 的任何子级的父级。)

      【讨论】:

        猜你喜欢
        • 2020-09-17
        • 1970-01-01
        • 2018-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多