Skip to content

Commit f18b843

Browse files
committed
[DEV] Update direct message page
1 parent 38e41ca commit f18b843

File tree

11 files changed

+167
-16
lines changed

11 files changed

+167
-16
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@
1313
|![](./demo/explore_page_dark.png)|![](./demo/explore_page_light.png)|
1414
|![](./demo/story_page.png)|![](./demo/account_page_dark.png)|
1515
|![](./demo/comment_page_dark.jpg)|![](./demo/comment_page_light.jpg)|
16+
|![](./demo/direct_page_dark.jpg)|![](./demo/direct_page_light.jpg)|
1617

1718

demo/direct_page_dark.jpg

82 KB
Loading

demo/direct_page_light.jpg

82.5 KB
Loading

lib/application.dart

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
import 'package:flutter/cupertino.dart';
22
import 'package:flutter/material.dart';
3-
import 'package:instagramflutter/data/bloc/auth_bloc.dart';
4-
import 'package:provider/provider.dart';
53
import 'package:flutter/services.dart';
64
import 'package:google_fonts/google_fonts.dart';
7-
import 'package:instagramflutter/features/explore/explore_page.dart';
8-
import 'dart:developer' as developer;
9-
10-
import 'package:instagramflutter/features/main_page.dart';
11-
import 'package:instagramflutter/features/story/story_page.dart';
5+
import 'package:instagramflutter/data/bloc/auth_bloc.dart';
6+
import 'package:instagramflutter/data/bloc/chat_bloc.dart';
7+
import 'package:provider/provider.dart';
128

139
import 'features/authorization_state_page.dart';
14-
import 'features/splash_page.dart';
10+
11+
import 'dart:developer' as developer;
1512

1613
class Application extends StatefulWidget {
1714
static const ROUTE_NAME = 'Application';
@@ -25,7 +22,7 @@ class _ApplicationState extends State<Application> {
2522
@override
2623
void initState() {
2724
super.initState();
28-
25+
developer.log('initState', name: TAG);
2926
}
3027
@override
3128
Widget build(BuildContext context) {
@@ -35,6 +32,12 @@ class _ApplicationState extends State<Application> {
3532
create: (context) {
3633
return AuthBloc();
3734
},
35+
),
36+
ChangeNotifierProvider(
37+
create: (context) {
38+
return ChatBloc();
39+
},
40+
lazy: false,
3841
)
3942
],
4043
child: MaterialApp(
@@ -47,6 +50,10 @@ class _ApplicationState extends State<Application> {
4750
accentIconTheme: IconThemeData(
4851
color: Colors.black
4952
),
53+
appBarTheme: AppBarTheme(
54+
brightness: Brightness.light,
55+
elevation: 1
56+
),
5057
primaryColorBrightness: Brightness.light,
5158
primaryColorDark: Colors.black87,
5259
primaryIconTheme: IconThemeData(
@@ -55,7 +62,7 @@ class _ApplicationState extends State<Application> {
5562
brightness: Brightness.light,
5663
cardColor: Colors.white,
5764
backgroundColor: Colors.grey[200],
58-
scaffoldBackgroundColor: Colors.grey[200],
65+
scaffoldBackgroundColor: Colors.white,
5966
colorScheme: ColorScheme.light(
6067
onPrimary: Colors.black
6168
),

lib/data/bloc/auth_bloc.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ class AuthBloc extends ChangeNotifier {
3535
user = Result.value(User(
3636
3737
'dangngocduc',
38-
'assets/sample/ic_avatar_1.jpg'
38+
'assets/sample/ic_avatar_1.jpg',
39+
'Dang Ngoc Duc'
3940
));
4041
notifyListeners();
4142
return true;

lib/data/bloc/chat_bloc.dart

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import 'dart:developer' as developer;
2+
3+
import 'package:async/async.dart';
4+
import 'package:flutter/foundation.dart';
5+
import 'package:instagramflutter/data/model/chat/conversation.dart';
6+
import 'package:instagramflutter/data/model/user.dart';
7+
8+
class ChatBloc extends ChangeNotifier {
9+
static const TAG = 'ChatBloc';
10+
11+
List<Conversation> conversation;
12+
13+
ChatBloc() {
14+
//region Fake Data
15+
conversation = [
16+
Conversation(
17+
user: User(
18+
19+
'dangngocduc',
20+
'assets/sample/ic_avatar_1.jpg',
21+
'Dang Ngoc Duc'
22+
),
23+
isActive: true,
24+
lastActive: DateTime.now()
25+
),
26+
Conversation(
27+
user: User(
28+
29+
'dangngocduc',
30+
'assets/sample/ic_avatar_1.jpg',
31+
'Mola Mola'
32+
), isActive: true,
33+
lastActive: DateTime.now()
34+
),
35+
Conversation(
36+
user: User(
37+
38+
'dangngocduc',
39+
'assets/sample/ic_avatar_1.jpg',
40+
'Hoang Anh'
41+
), isActive: true,
42+
lastActive: DateTime.now()
43+
),
44+
Conversation(
45+
user: User(
46+
47+
'dangngocduc',
48+
'assets/sample/ic_avatar_1.jpg',
49+
'Pencil Academy'
50+
), isActive: true,
51+
lastActive: DateTime.now()
52+
)
53+
];
54+
}
55+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import 'dart:developer' as developer;
2+
3+
import 'package:instagramflutter/data/model/user.dart';
4+
5+
class Conversation {
6+
static const TAG = 'Conversation';
7+
8+
User user;
9+
10+
bool isActive;
11+
12+
DateTime lastActive;
13+
14+
Conversation({
15+
this.user, this.isActive, this.lastActive
16+
});
17+
18+
}

lib/data/model/user.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ class User {
44
static const TAG = 'User';
55

66
String email;
7-
String name;
7+
String username;
88
String avatar;
9+
String fullName;
910

10-
User(this.email, this.name, this.avatar);
11+
User(this.email, this.username, this.avatar, this.fullName);
1112

1213
}

lib/features/comment/comment_page.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class _CommentPageState extends State<CommentPage> {
6363
padding: EdgeInsets.only(left: 16, right: 8),
6464
child: TextField(
6565
decoration: InputDecoration(
66-
hintText: 'Comment as ${context.watch<AuthBloc>().user.asValue.value.name}...',
66+
hintText: 'Comment as ${context.watch<AuthBloc>().user.asValue.value.username}...',
6767
border: InputBorder.none
6868
),
6969
),
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import 'package:flutter/material.dart';
2+
3+
import 'package:instagramflutter/data/model/chat/conversation.dart';
4+
5+
class DirectItemWidget extends StatelessWidget {
6+
final Conversation conversation;
7+
8+
DirectItemWidget(this.conversation);
9+
10+
@override
11+
Widget build(BuildContext context) {
12+
return Container(
13+
padding: EdgeInsets.symmetric(
14+
vertical: 12,
15+
horizontal: 16
16+
).copyWith(
17+
right: 0
18+
),
19+
child: Row(
20+
children: [
21+
CircleAvatar(
22+
backgroundImage: AssetImage(conversation.user.avatar),
23+
),
24+
Expanded(
25+
child: Padding(
26+
padding: EdgeInsets.only(left: 16),
27+
child: Column(
28+
crossAxisAlignment: CrossAxisAlignment.start,
29+
children: [
30+
Text(conversation.user.fullName,
31+
style: Theme.of(context).textTheme.subtitle1,),
32+
Text(conversation.isActive ? 'Active now' : 'Active 1h ago',
33+
style: Theme.of(context).textTheme.caption,),
34+
],
35+
),
36+
),
37+
),
38+
IconButton(
39+
icon: Icon(Icons.camera_alt_outlined),
40+
onPressed: (){},
41+
)
42+
],
43+
),
44+
);
45+
}
46+
}

0 commit comments

Comments
 (0)