performance fixes

This commit is contained in:
Salvatore Giordano
2021-06-09 16:11:59 +02:00
parent e567e5f12b
commit dc6c3094e9
26 changed files with 1224 additions and 1158 deletions
@@ -8,7 +8,7 @@ import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
///
/// The widget will use the closest [StreamChatClient.wsConnectionStatusStream]
/// in case no stream is provided.
class ConnectionStatusBuilder extends StatelessWidget {
class ConnectionStatusBuilder extends StatefulWidget {
/// Creates a new ConnectionStatusBuilder
const ConnectionStatusBuilder({
Key? key,
@@ -36,20 +36,32 @@ class ConnectionStatusBuilder extends StatelessWidget {
statusBuilder;
@override
Widget build(BuildContext context) {
final client = StreamChat.of(context).client;
final stream = connectionStatusStream ?? client.wsConnectionStatusStream;
return BetterStreamBuilder<ConnectionStatus>(
initialData: initialStatus ?? client.wsConnectionStatus,
stream: stream,
loadingBuilder: loadingBuilder,
errorBuilder: (context, error) {
if (errorBuilder != null) {
return errorBuilder!(context, error);
}
return const Offstage();
},
builder: statusBuilder,
);
_ConnectionStatusBuilderState createState() =>
_ConnectionStatusBuilderState();
}
class _ConnectionStatusBuilderState extends State<ConnectionStatusBuilder> {
late StreamChatClient client;
late Stream<ConnectionStatus> stream;
@override
Widget build(BuildContext context) => BetterStreamBuilder<ConnectionStatus>(
initialData: widget.initialStatus ?? client.wsConnectionStatus,
stream: stream,
loadingBuilder: widget.loadingBuilder,
errorBuilder: (context, error) {
if (widget.errorBuilder != null) {
return widget.errorBuilder!(context, error);
}
return const Offstage();
},
builder: widget.statusBuilder,
);
@override
void didChangeDependencies() {
client = StreamChat.of(context).client;
stream = widget.connectionStatusStream ?? client.wsConnectionStatusStream;
super.didChangeDependencies();
}
}