Skip to content

Commit dd400b9

Browse files
committed
Description updated and small fix
1 parent 965a329 commit dd400b9

File tree

3 files changed

+83
-64
lines changed

3 files changed

+83
-64
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## [1.0.1]
2+
3+
- Description updated and small fix
4+
15
## [1.0.0]
26

37
- Minor fixes and first release

lib/src/message_listview.dart

Lines changed: 77 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
part of dash_chat;
22

3-
class MessageListView extends StatelessWidget {
3+
class MessageListView extends StatefulWidget {
44
final List<ChatMessage> messages;
55
final ChatUser user;
66
final bool showuserAvatar;
@@ -31,8 +31,6 @@ class MessageListView extends StatelessWidget {
3131
final Function onLoadEarlier;
3232
final Function(bool) defaultLoadCallback;
3333

34-
double previousPixelPostion = 0.0;
35-
3634
MessageListView({
3735
this.showLoadEarlierWidget,
3836
this.shouldShowLoadEarlier,
@@ -66,17 +64,24 @@ class MessageListView extends StatelessWidget {
6664
this.showLoadMore,
6765
});
6866

67+
@override
68+
_MessageListViewState createState() => _MessageListViewState();
69+
}
70+
71+
class _MessageListViewState extends State<MessageListView> {
72+
double previousPixelPostion = 0.0;
73+
6974
bool scrollNotificationFunc(ScrollNotification scrollNotification) {
7075
if (previousPixelPostion == 0.0) {
7176
previousPixelPostion = scrollNotification.metrics.maxScrollExtent;
7277
}
7378

7479
if (scrollNotification.metrics.pixels ==
7580
scrollNotification.metrics.maxScrollExtent) {
76-
changeVisible(false);
81+
widget.changeVisible(false);
7782
} else {
7883
if (previousPixelPostion < scrollNotification.metrics.pixels) {
79-
changeVisible(true);
84+
widget.changeVisible(true);
8085
}
8186

8287
previousPixelPostion = scrollNotification.metrics.pixels;
@@ -93,36 +98,37 @@ class MessageListView extends StatelessWidget {
9398
behavior: CustomScrollBehaviour(),
9499
child: Flexible(
95100
child: Padding(
96-
padding: messageContainerPadding,
101+
padding: widget.messageContainerPadding,
97102
child: NotificationListener<ScrollNotification>(
98103
onNotification: scrollNotificationFunc,
99104
child: Stack(
100105
alignment: AlignmentDirectional.topCenter,
101106
children: [
102107
ListView.builder(
103-
controller: scrollController,
108+
controller: widget.scrollController,
104109
shrinkWrap: true,
105-
reverse: inverted,
106-
itemCount: messages.length,
110+
reverse: widget.inverted,
111+
itemCount: widget.messages.length,
107112
itemBuilder: (context, i) {
108113
final j = i + 1;
109114
bool showAvatar = false;
110115
bool showDate;
111-
if (j < messages.length) {
112-
showAvatar = messages[j].user.uid != messages[i].user.uid;
116+
if (j < widget.messages.length) {
117+
showAvatar = widget.messages[j].user.uid !=
118+
widget.messages[i].user.uid;
113119
} else {
114120
showAvatar = true;
115121
}
116122

117123
if (currentDate == null) {
118-
currentDate = messages[i].createdAt;
124+
currentDate = widget.messages[i].createdAt;
119125
showDate = true;
120126
} else if (currentDate
121-
.difference(messages[i].createdAt)
127+
.difference(widget.messages[i].createdAt)
122128
.inDays !=
123129
0) {
124130
showDate = true;
125-
currentDate = messages[i].createdAt;
131+
currentDate = widget.messages[i].createdAt;
126132
} else {
127133
showDate = false;
128134
}
@@ -131,11 +137,12 @@ class MessageListView extends StatelessWidget {
131137
child: Column(
132138
children: <Widget>[
133139
if (showDate)
134-
if (dateBuilder != null)
135-
dateBuilder(dateBuilder != null
136-
? dateFormat.format(messages[i].createdAt)
140+
if (widget.dateBuilder != null)
141+
widget.dateBuilder(widget.dateBuilder != null
142+
? widget.dateFormat
143+
.format(widget.messages[i].createdAt)
137144
: DateFormat('yyyy-MM-dd')
138-
.format(messages[i].createdAt))
145+
.format(widget.messages[i].createdAt))
139146
else
140147
Container(
141148
decoration: BoxDecoration(
@@ -149,41 +156,45 @@ class MessageListView extends StatelessWidget {
149156
),
150157
margin: EdgeInsets.symmetric(vertical: 10.0),
151158
child: Text(
152-
dateBuilder != null
153-
? dateFormat.format(messages[i].createdAt)
159+
widget.dateBuilder != null
160+
? widget.dateFormat
161+
.format(widget.messages[i].createdAt)
154162
: DateFormat('MMM dd')
155-
.format(messages[i].createdAt),
163+
.format(widget.messages[i].createdAt),
156164
style: TextStyle(
157165
color: Colors.white,
158166
fontSize: 12.0,
159167
),
160168
),
161169
),
162170
Row(
163-
mainAxisAlignment: messages[i].user.uid == user.uid
164-
? MainAxisAlignment.end
165-
: MainAxisAlignment.start,
171+
mainAxisAlignment:
172+
widget.messages[i].user.uid == widget.user.uid
173+
? MainAxisAlignment.end
174+
: MainAxisAlignment.start,
166175
crossAxisAlignment: CrossAxisAlignment.center,
167176
children: <Widget>[
168177
Padding(
169178
padding: EdgeInsets.symmetric(horizontal: 10.0),
170-
child:
171-
((showAvatarForEverMessage || showAvatar) &&
172-
messages[i].user.uid != user.uid)
173-
? AvatarContainer(
174-
user: messages[i].user,
175-
onPress: onPressAvatar,
176-
onLongPress: onLongPressAvatar,
177-
avatarBuilder: avatarBuilder,
178-
)
179-
: SizedBox(
180-
width: 40.0,
181-
),
179+
child: ((widget.showAvatarForEverMessage ||
180+
showAvatar) &&
181+
widget.messages[i].user.uid !=
182+
widget.user.uid)
183+
? AvatarContainer(
184+
user: widget.messages[i].user,
185+
onPress: widget.onPressAvatar,
186+
onLongPress: widget.onLongPressAvatar,
187+
avatarBuilder: widget.avatarBuilder,
188+
)
189+
: SizedBox(
190+
width: 40.0,
191+
),
182192
),
183193
GestureDetector(
184194
onLongPress: () {
185-
if (onLongPressMessage != null) {
186-
onLongPressMessage(messages[i]);
195+
if (widget.onLongPressMessage != null) {
196+
widget
197+
.onLongPressMessage(widget.messages[i]);
187198
} else {
188199
showBottomSheet(
189200
context: context,
@@ -199,7 +210,8 @@ class MessageListView extends StatelessWidget {
199210
onTap: () {
200211
Clipboard.setData(
201212
ClipboardData(
202-
text: messages[i]
213+
text: widget
214+
.messages[i]
203215
.text));
204216
Navigator.pop(context);
205217
},
@@ -209,34 +221,37 @@ class MessageListView extends StatelessWidget {
209221
));
210222
}
211223
},
212-
child: messageBuilder != null
213-
? messageBuilder(messages[i])
224+
child: widget.messageBuilder != null
225+
? widget.messageBuilder(widget.messages[i])
214226
: MessageContainer(
215-
isUser:
216-
messages[i].user.uid == user.uid,
217-
message: messages[i],
218-
timeFormat: timeFormat,
227+
isUser: widget.messages[i].user.uid ==
228+
widget.user.uid,
229+
message: widget.messages[i],
230+
timeFormat: widget.timeFormat,
219231
messageImageBuilder:
220-
messageImageBuilder,
221-
messageTextBuilder: messageTextBuilder,
222-
messageTimeBuilder: messageTimeBuilder,
232+
widget.messageImageBuilder,
233+
messageTextBuilder:
234+
widget.messageTextBuilder,
235+
messageTimeBuilder:
236+
widget.messageTimeBuilder,
223237
messageContainerDecoration:
224-
messageContainerDecoration,
225-
parsePatterns: parsePatterns,
238+
widget.messageContainerDecoration,
239+
parsePatterns: widget.parsePatterns,
226240
),
227241
),
228-
if (showuserAvatar)
242+
if (widget.showuserAvatar)
229243
Padding(
230244
padding:
231245
EdgeInsets.symmetric(horizontal: 10.0),
232-
child: ((showAvatarForEverMessage ||
246+
child: ((widget.showAvatarForEverMessage ||
233247
showAvatar) &&
234-
messages[i].user.uid == user.uid)
248+
widget.messages[i].user.uid ==
249+
widget.user.uid)
235250
? AvatarContainer(
236-
user: messages[i].user,
237-
onPress: onPressAvatar,
238-
onLongPress: onLongPressAvatar,
239-
avatarBuilder: avatarBuilder,
251+
user: widget.messages[i].user,
252+
onPress: widget.onPressAvatar,
253+
onLongPress: widget.onLongPressAvatar,
254+
avatarBuilder: widget.avatarBuilder,
240255
)
241256
: SizedBox(
242257
width: 40.0,
@@ -254,13 +269,13 @@ class MessageListView extends StatelessWidget {
254269
},
255270
),
256271
AnimatedPositioned(
257-
top: showLoadMore ? 8.0 : -50.0,
272+
top: widget.showLoadMore ? 8.0 : -50.0,
258273
duration: Duration(milliseconds: 200),
259-
child: showLoadEarlierWidget != null
260-
? showLoadEarlierWidget()
274+
child: widget.showLoadEarlierWidget != null
275+
? widget.showLoadEarlierWidget()
261276
: LoadEarlierWidget(
262-
onLoadEarlier: onLoadEarlier,
263-
defaultLoadCallback: defaultLoadCallback,
277+
onLoadEarlier: widget.onLoadEarlier,
278+
defaultLoadCallback: widget.defaultLoadCallback,
264279
),
265280
),
266281
],

pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: dash_chat
2-
description: The most complete Chat UI for flutter.
3-
version: 1.0.0
2+
description: The most complete Chat UI for flutter inspired by react-native-gifted-chat.
3+
version: 1.0.1
44
author: "fayeed <fayeed@live.com>"
55
homepage: https://github.com/fayeed/dash_chat
66

0 commit comments

Comments
 (0)