expose error builder in message list core
This commit is contained in:
@@ -5,6 +5,12 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:stream_chat/stream_chat.dart';
|
import 'package:stream_chat/stream_chat.dart';
|
||||||
import 'stream_channel.dart';
|
import 'stream_channel.dart';
|
||||||
|
|
||||||
|
/// A signature for a callback which exposes an error and returns a function.
|
||||||
|
/// This Callback can be used in cases where an API failure occurs and the widget
|
||||||
|
/// is unable to render data.
|
||||||
|
typedef StreamErrorBuilder = Widget Function(
|
||||||
|
BuildContext context, Object error);
|
||||||
|
|
||||||
/// 
|
/// 
|
||||||
/// 
|
/// 
|
||||||
///
|
///
|
||||||
@@ -61,6 +67,7 @@ class MessageListCore extends StatefulWidget {
|
|||||||
@required this.loadingBuilder,
|
@required this.loadingBuilder,
|
||||||
@required this.emptyBuilder,
|
@required this.emptyBuilder,
|
||||||
@required this.messageListBuilder,
|
@required this.messageListBuilder,
|
||||||
|
@required this.errorWidgetBuilder,
|
||||||
this.messageListController,
|
this.messageListController,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@@ -77,6 +84,11 @@ class MessageListCore extends StatefulWidget {
|
|||||||
/// Function used to build an empty widget
|
/// Function used to build an empty widget
|
||||||
final WidgetBuilder emptyBuilder;
|
final WidgetBuilder emptyBuilder;
|
||||||
|
|
||||||
|
/// Callback triggered when an error occurs while performing the given request.
|
||||||
|
/// This parameter can be used to display an error message to users in the event
|
||||||
|
/// of a connection failure.
|
||||||
|
final StreamErrorBuilder errorWidgetBuilder;
|
||||||
|
|
||||||
/// If true will show a scroll to bottom message when there are new messages and the scroll offset is not zero
|
/// If true will show a scroll to bottom message when there are new messages and the scroll offset is not zero
|
||||||
final bool showScrollToBottom;
|
final bool showScrollToBottom;
|
||||||
|
|
||||||
@@ -118,9 +130,10 @@ class _MessageListCoreState extends State<MessageListCore> {
|
|||||||
?.toList()),
|
?.toList()),
|
||||||
builder: (context, snapshot) {
|
builder: (context, snapshot) {
|
||||||
if (!snapshot.hasData) {
|
if (!snapshot.hasData) {
|
||||||
return widget.loadingBuilder(context);
|
return widget.loadingBuilder(context);
|
||||||
}
|
} else if (snapshot.hasError) {
|
||||||
|
return widget.errorWidgetBuilder(context, snapshot.error);
|
||||||
|
} else {
|
||||||
final messageList = snapshot.data?.reversed?.toList() ?? [];
|
final messageList = snapshot.data?.reversed?.toList() ?? [];
|
||||||
if (messageList.isEmpty) {
|
if (messageList.isEmpty) {
|
||||||
if (_upToDate) {
|
if (_upToDate) {
|
||||||
@@ -129,9 +142,10 @@ class _MessageListCoreState extends State<MessageListCore> {
|
|||||||
} else {
|
} else {
|
||||||
messages = messageList;
|
messages = messageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
return widget.messageListBuilder(context, messages);
|
return widget.messageListBuilder(context, messages);
|
||||||
});
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> paginateData(
|
Future<void> paginateData(
|
||||||
|
|||||||
Reference in New Issue
Block a user