首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何要求子widget父控件是Flutter中唯一特定的widget?

如何要求子widget父控件是Flutter中唯一特定的widget?
EN

Stack Overflow用户
提问于 2021-09-28 11:59:04
回答 1查看 57关注 0票数 1

是否可以强制某些小部件只是某个特定小部件的子部件,例如,我有ChildWidget(),我希望这个小部件只是Stack的子部件,否则如果这个小部件的直接父部件不是Stack,那么就会抛出编译时错误,比如当小部件的必需参数没有初始化/传递时?

所需最终结果的示例:

代码语言:javascript
复制
import 'package:flutter/material.dart';

class WidgetName extends StatelessWidget {
  const WidgetName({ Key? key }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        Container(
          height: 50,
          width: 50,
          child: Placeholder()
        ),
        ChildWidget(), //Everything is okay, child's direct parent is Stack
        Container(
          height: 50,
          width: 50,
          child: ChildWidget(), // Compilation-time error (red underline), because direct ansector is Container, instead of Stack.
        ),
      ],
    );
  }
}

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-04 07:17:47

以下是所请求功能的实现。但是,如果有人知道如何复制编译时错误,请分享您的解决方案,如果有人知道如何重现编译时错误,请分享您的解决方案,将不胜感激。

虽然visitAncestorElements方法的代价是O(N),但我们返回的返回值是false,这意味着我们只检查了第一个元素,时间复杂度降低到O(1)。

代码语言:javascript
复制
context.visitAncestorElements((element) {
      assert(element.widget.runtimeType.toString().toLowerCase() != directAnsector.toLowerCase(),"Ansector Error");
      return false;
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69361353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档