【发布时间】:2020-09-24 22:09:43
【问题描述】:
1) 这是查看团队/查看花名册屏幕。 https://imgur.com/a/k63lQrt
class ViewTeamScreen extends StatelessWidget {
static const routeName = '/view-team';
const ViewTeamScreen({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return StreamProvider<List<User>>.value(
value: DBService().getAllUsers,
child: Scaffold(
body: TeamList()
),
);
}
}
2) 这是在 ViewTeamScreen 上显示所有用户数据并返回我创建的 TeamTile 小部件的团队列表代码。
class TeamList extends StatefulWidget {
@override
_TeamListState createState() => _TeamListState();
}
class _TeamListState extends State<TeamList> {
@override
Widget build(BuildContext context) {
final users = Provider.of<List<User>>(context) ?? [];
//print(users);
return ListView.builder(
itemCount: users.length,
itemBuilder: (context, index) {
return TeamTile(
user: users[index],
);
},
);
3) 这是 TeamTile,一旦团队成员注册应用,它就会返回 ListViewBuilder。
class TeamTile extends StatelessWidget {
final User user;
TeamTile({this.user});
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.only(top: 8.0),
child: Card(
margin: EdgeInsets.fromLTRB(20, 6, 20, 0),
child: ListTile(
leading: CircleAvatar(
radius: 30.0,
backgroundColor: Colors.brown,
),
title: Text(
'${user.firstName}'
" "
'${user.lastName}', //how do i make the first letter of name always CAPS?
style: TextStyle(fontSize: 23, letterSpacing: 1.0),
),
trailing: Text(user.email),
subtitle: Text('+44 0000 000 000'),
onTap: () async {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TeamDetailScreen(),
),
);
},
),
4) 这是团队详情屏幕,一旦用户点击 ViewTeamScreen 中的 ListTile,就会出现此页面。 https://imgur.com/a/7tSUO1c
class TeamDetailScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context);
return Scaffold(
appBar: AppBar(
title: Text('Employee Contact Info'),
),
body: StreamBuilder<User>(
stream: DBService(uid: user.uid).usersData,
builder: (context, snapshot) {
if (snapshot.hasData) {
User userData = snapshot.data;
return Column(children: <Widget>[
Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
'Name: ${userData.firstName}'
" "
'${userData.lastName}\n'
'Email: ${userData.email}',
style: TextStyle(fontSize: (20)),
),
)),
]);
} else {
return Loading();
【问题讨论】:
-
请您进一步澄清这个问题,我仍然对您要完成的工作或问题是什么感到有些困惑。
-
@Unbreachable 嗨,是的,我面临的问题是,一旦我单击这张图片中的 ListTile imgur.com/a/k63lQrt ,我希望能够在屏幕上显示用户详细信息,但我只能访问它登录用户名,电子邮件等。我不知道我还能扩展多少对不起。
-
谢谢,能把剩下的代码贴出来吗? “名册页面”,您需要将每个索引从“名册页面”传递到“详细信息屏幕”
-
@Unbreachable 当然,您好,很抱歉我刚刚更新了代码并包含了所有相关文件,所以也许您可以了解应用程序的结构。谢谢您的任何帮助将不胜感激! - 我已经坚持了好几个小时了
-
点击列表磁贴后尝试将用户数据添加到流中..
标签: firebase flutter dart google-cloud-firestore firebase-authentication