gpt4 book ai didi

上下文给出的 flutter 脚手架 "does not contain a Scaffold"

转载 作者:行者123 更新时间:2023-12-05 00:57:24 28 4
gpt4 key购买 nike

我在脚手架中有一个应用栏。

return Scaffold(
appBar: styling.appBar(
AppBar(
leading: styling.iconButton(() => Scaffold.of(context).openDrawer(), Icons.menu),
)
),
);

这是图标按钮:

  ClipRRect iconButton(VoidCallback onPressed, IconData icon) {
return ClipRRect(
borderRadius: BorderRadius.circular(360),
child : Material(
color: Colors.transparent,
child: IconButton(
icon: Icon(
icon,
color: secondaryColor,
),
onPressed: onPressed,
)
),
);

}

这是为了替换打开抽屉的默认汉堡图标,当我点击它时,我得到这个错误:

Scaffold.of() called with a context that does not contain a Scaffold.

最佳答案

这几乎可以肯定是因为您的 context 实际上在 Scaffold 之外。您的函数可能类似于以下内容:

Widget build(BuildContext context) {
// ... other code up here

return Scaffold(
appBar: styling.appBar(AppBar(
leading: styling.iconButton(() => Scaffold.of(context).openDrawer(), Icons.menu),
)),
);
}

这里的问题是 context 实际上确实来自一个不在脚手架内的地方。您在此处使用的 context 来自包装 build() 函数的函数参数,该函数确实存在于 Scaffold 之外(因为这个 build() 是真正生成 Scaffold 的东西。

你需要做的是这样的:

Widget build(BuildContext context) {
// ... other code up here

return Scaffold(
appBar: styling.appBar(
AppBar(
leading: Builder(
builder: (BuildContext context) {
return styling.iconButton(() => Scaffold.of(context).openDrawer(), Icons.menu);
},
),
),
),
);
}

或类似的东西。原因是现在,在 builder 函数中,您实际上有一个新的 context 对象,它实际上将存在于 Scaffold 中。

希望这很清楚。如果没有,我可以进一步解释。

关于上下文给出的 flutter 脚手架 "does not contain a Scaffold",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60194385/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com