是否可以强制某些小部件只是某个特定小部件的子部件,例如,我有ChildWidget(),我希望这个小部件只是Stack的子部件,否则如果这个小部件的直接父部件不是Stack,那么就会抛出编译时错误,比如当小部件的必需参数没有初始化/传递时?
所需最终结果的示例:
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.
),
],
);
}
}提前感谢!
发布于 2021-10-04 07:17:47
以下是所请求功能的实现。但是,如果有人知道如何复制编译时错误,请分享您的解决方案,如果有人知道如何重现编译时错误,请分享您的解决方案,将不胜感激。
虽然visitAncestorElements方法的代价是O(N),但我们返回的返回值是false,这意味着我们只检查了第一个元素,时间复杂度降低到O(1)。
context.visitAncestorElements((element) {
assert(element.widget.runtimeType.toString().toLowerCase() != directAnsector.toLowerCase(),"Ansector Error");
return false;
});https://stackoverflow.com/questions/69361353
复制相似问题