首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以访问子部件中的scafold吗?

我可以访问子部件中的scafold吗?
EN

Stack Overflow用户
提问于 2022-03-09 10:17:44
回答 2查看 169关注 0票数 0

如果我想在我的自定义小部件内使用小吃店,我能做到吗?CustomWidget是否可以进入脚手架?既然小吃店应该在脚手架里?

代码语言:javascript
复制
return Scaffold(
  backgroundColor: HexColor("f4f4f4"),
  body: SafeArea(
      child: Column(
    children: [
      CustomAppBar(
        width: width,
        topBarHeight: topBarHeight,
        height: height,
      ),
      CustomWidget(),
      ]))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-09 10:40:36

是的,您可以在小部件中使用它,如下所示:

代码语言:javascript
复制
CustomWidget(BuildContext ctx) {
   if(condition) // it can also be a button action or something like that
     ScaffoldMessenger.of(ctx)
       .showSnackBar(
           SnackBar(content: Text(''))); //Replace Text('') with your widget
}

并将context传递给您的CustomWidget(context)

票数 1
EN

Stack Overflow用户

发布于 2022-03-09 10:42:28

您可以将ScaffoldState键传递给构造函数。

例如:

创建全局ScaffoldState密钥

代码语言:javascript
复制
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();

以下是完整的代码:

代码语言:javascript
复制
class Test extends StatefulWidget {
  const Test({Key? key}) : super(key: key);

  @override
  TestState createState() => TestState();
}

class _TestState extends State<Test> {
  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
      body: GetData(
        scaffoldKey: _scaffoldKey,
      ),
    );
  }
}

子部件:

代码语言:javascript
复制
class GetData extends StatefulWidget {
  const GetData({
    Key? key,
    required this.scaffoldKey,
  }) : super(key: key);

  final GlobalKey<ScaffoldState> scaffoldKey;
  @override
  GetDataState createState() => GetDataState();
}

class _GetDataState extends State<GetData> {
  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
        onPressed: () {
          widget.scaffoldKey.currentState
              ?.showSnackBar(const SnackBar(content: Text('content')));
        },
        child: Text('Show SnackBar'));
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71407715

复制
相关文章

相似问题

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