【发布时间】: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