【问题标题】:How can I use my constructor variables in another widget?如何在另一个小部件中使用我的构造函数变量?
【发布时间】:2021-03-22 13:53:11
【问题描述】:

我有一个搜索栏,用户可以在其中搜索一些用户。当他们点击用户时,他们会被导航到聊天屏幕。我想显示用户的用户名。但这是我的问题:我导航用户“聊天屏幕”的小部件包括其他小部件,例如应用栏的一个小部件和正文的另一个小部件。我只是在聊天屏幕中调用这个小部件。 所以这是我的问题,如何在 appbar 小部件内使用 chatscrren 的构造函数中的变量?有这样的可能吗?

这是我的小部件,我在其中为聊天屏幕提供了一些数据:


  Widget searchListUserTile({String url, username,fullname, email}) {
    final user = Provider.of<Userforid>(context);
    return GestureDetector(
      onTap: (){
        Navigator.push(context,MaterialPageRoute(builder: (context)=>ChatScreendetailpage(username,fullname)));
      },

这是我的 chatscrren 小部件,我称之为应用栏小部件。


class ChatScreendetailpage extends StatelessWidget {
  final String chatWithUsername,username;
  ChatScreendetailpage(this.chatWithUsername, this.username);
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: CustomAppBar(),
      body: Container(
        child: Column(
          children: <Widget>[
            Expanded(child: Messages()),
            NewMessage(),
          ],
        ),
      ),
    );
  }
}

这是我的应用栏小部件:


class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {

  //String username;
  @override
  Widget build(BuildContext context) {
    /// Build you AppBar widget here

    return Scaffold(
      appBar: AppBar(
        elevation: 0,
        automaticallyImplyLeading: false,
        backgroundColor: Colors.white,
        flexibleSpace: SafeArea(
          child: Container(
            padding: EdgeInsets.only(right: 16),
            child: Row(
              children: <Widget>[
                IconButton(
                  onPressed: () {
                    Navigator.pop(context);
                  },
                  icon: Icon(
                    Icons.arrow_back,
                    color: Colors.black,
                  ),
                ),
                SizedBox(
                  width: 2,
                ),
                CircleAvatar(
                  backgroundImage: NetworkImage(
                      'https://randomuser.me/api/portraits/men/5.jpg'),
                  maxRadius: 20,
                ),
                SizedBox(
                  width: 12,
                ),
                Expanded(
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      Text(
                       Here should stay the name....................
                        style: TextStyle(
                            fontSize: 16, fontWeight: FontWeight.w600),
                      ),
                      SizedBox(
                        height: 6,
                      ),
                    ],
                  ),
                ),
                Icon(
                  Icons.settings,
                  color: Colors.black54,
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
  @override
  Size get preferredSize => Size.fromHeight(56);
}

【问题讨论】:

  • 它非常简单。您可以在 ChatScreen 中传递变量,例如: appBar: CustomAppBar('Chatwithusername', 'Username') 并添加 CustomAppBar(this.chatWithUsername, this.username);在您的 CustomAppbar 中。
  • 是的,谢谢。祝你好朋友!
  • 嘿伙计,请给我的答案投票并标记为正确答案。谢谢

标签: firebase flutter google-cloud-firestore


【解决方案1】:

请按照以下方式:

它非常简单。您可以在 ChatScreen 中传递变量,例如:

appBar: CustomAppBar('Chatwithusername', 'Username') 并在您的CustomAppbar. 中添加CustomAppBar(this.chatWithUsername, this.username);

【讨论】:

    猜你喜欢
    • 2013-09-11
    • 1970-01-01
    • 2019-04-18
    • 2018-09-28
    • 2010-09-22
    • 2022-01-07
    • 2019-12-06
    相关资源
    最近更新 更多