1
1
import 'package:flutter/material.dart' ;
2
2
import 'package:provider/provider.dart' ;
3
3
import 'package:twitter/models/post.dart' ;
4
+ import 'package:twitter/models/user.dart' ;
5
+ import 'package:twitter/services/user.dart' ;
4
6
5
7
class ListPosts extends StatefulWidget {
6
8
ListPosts ({Key key}) : super (key: key);
@@ -10,6 +12,7 @@ class ListPosts extends StatefulWidget {
10
12
}
11
13
12
14
class _ListPostsState extends State <ListPosts > {
15
+ UserService _userService = UserService ();
13
16
@override
14
17
Widget build (BuildContext context) {
15
18
final posts = Provider .of <List <PostModel >>(context) ?? [];
@@ -18,10 +21,47 @@ class _ListPostsState extends State<ListPosts> {
18
21
itemCount: posts.length,
19
22
itemBuilder: (context, index) {
20
23
final post = posts[index];
21
- return ListTile (
22
- title: Text (post.creator),
23
- subtitle: Text (post.text),
24
- );
24
+ return StreamBuilder (
25
+ stream: _userService.getUserInfo (post.creator),
26
+ builder: (BuildContext context, AsyncSnapshot <UserModel > snapshot) {
27
+ if (! snapshot.hasData) {
28
+ return Center (child: CircularProgressIndicator ());
29
+ }
30
+ return ListTile (
31
+ title: Padding (
32
+ padding: EdgeInsets .fromLTRB (0 , 15 , 0 , 15 ),
33
+ child: Row (
34
+ children: [
35
+ snapshot.data.profileImageUrl != ''
36
+ ? CircleAvatar (
37
+ radius: 20 ,
38
+ backgroundImage:
39
+ NetworkImage (snapshot.data.profileImageUrl))
40
+ : Icon (Icons .person, size: 40 ),
41
+ SizedBox (width: 10 ),
42
+ Text (snapshot.data.name)
43
+ ],
44
+ ),
45
+ ),
46
+ subtitle: Column (
47
+ crossAxisAlignment: CrossAxisAlignment .start,
48
+ children: [
49
+ Padding (
50
+ padding: EdgeInsets .fromLTRB (0 , 15 , 0 , 15 ),
51
+ child: Column (
52
+ crossAxisAlignment: CrossAxisAlignment .start,
53
+ children: [
54
+ Text (post.text),
55
+ SizedBox (height: 20 ),
56
+ Text (post.timestamp.toDate ().toString ())
57
+ ],
58
+ ),
59
+ ),
60
+ Divider (),
61
+ ],
62
+ ),
63
+ );
64
+ });
25
65
},
26
66
);
27
67
}
0 commit comments