Merge pull request #1553 from GetStream/feat/flutter-3.10

This commit is contained in:
Sahil Kumar
2023-05-16 19:24:07 +05:30
committed by GitHub
30 changed files with 142 additions and 144 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
name: Dart Code Metrics name: Dart Code Metrics
env: env:
flutter_version: "3.7.0" flutter_version: "3.10.0"
folders: "lib, test" folders: "lib, test"
on: on:
@@ -2,7 +2,7 @@ name: stream_flutter_workflow
env: env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'
flutter_version: "3.7.0" flutter_version: "3.10.0"
on: on:
pull_request: pull_request:
+2 -2
View File
@@ -26,9 +26,9 @@ scripts:
- Note: you can also rely on your IDEs Dart Analysis / Issues window. - Note: you can also rely on your IDEs Dart Analysis / Issues window.
format: format:
run: flutter format --set-exit-if-changed . run: dart format --set-exit-if-changed .
description: | description: |
Run `flutter format --set-exit-if-changed .` in all packages. Run `dart format --set-exit-if-changed .` in all packages.
metrics: metrics:
run: | run: |
@@ -128,12 +128,12 @@ class ChannelPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) => Navigator( Widget build(BuildContext context) => Navigator(
onGenerateRoute: (settings) => MaterialPageRoute( onGenerateRoute: (settings) => MaterialPageRoute(
builder: (context) => Scaffold( builder: (context) => const Scaffold(
appBar: const StreamChannelHeader( appBar: StreamChannelHeader(
showBackButton: false, showBackButton: false,
), ),
body: Column( body: Column(
children: const <Widget>[ children: <Widget>[
Expanded( Expanded(
child: StreamMessageListView(), child: StreamMessageListView(),
), ),
@@ -91,10 +91,10 @@ class ChannelPage extends StatelessWidget {
@override @override
// ignore: prefer_expression_function_bodies // ignore: prefer_expression_function_bodies
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return const Scaffold(
appBar: const StreamChannelHeader(), appBar: StreamChannelHeader(),
body: Column( body: Column(
children: const <Widget>[ children: <Widget>[
Expanded( Expanded(
child: StreamMessageListView(), child: StreamMessageListView(),
), ),
@@ -126,10 +126,10 @@ class ChannelPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return const Scaffold(
appBar: const StreamChannelHeader(), appBar: StreamChannelHeader(),
body: Column( body: Column(
children: const <Widget>[ children: <Widget>[
Expanded( Expanded(
child: StreamMessageListView(), child: StreamMessageListView(),
), ),
@@ -168,10 +168,10 @@ class ChannelPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return const Scaffold(
appBar: const StreamChannelHeader(), appBar: StreamChannelHeader(),
body: Column( body: Column(
children: const <Widget>[ children: <Widget>[
Expanded( Expanded(
child: StreamMessageListView(), child: StreamMessageListView(),
), ),
@@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
/// {@endtemplate} /// {@endtemplate}
typedef ReactionIconBuilder = Widget Function( typedef ReactionIconBuilder = Widget Function(
BuildContext context, BuildContext context,
// ignore: avoid_positional_boolean_parameters
bool isHighlighted, bool isHighlighted,
double iconSize, double iconSize,
); );
@@ -202,9 +202,9 @@ class MediaThumbnailProvider extends ImageProvider<MediaThumbnailProvider> {
} }
@override @override
ImageStreamCompleter loadBuffer( ImageStreamCompleter loadImage(
MediaThumbnailProvider key, MediaThumbnailProvider key,
DecoderBufferCallback decode, ImageDecoderCallback decode,
) { ) {
return MultiFrameImageStreamCompleter( return MultiFrameImageStreamCompleter(
codec: _loadAsync(key, decode), codec: _loadAsync(key, decode),
@@ -221,7 +221,7 @@ class MediaThumbnailProvider extends ImageProvider<MediaThumbnailProvider> {
Future<ui.Codec> _loadAsync( Future<ui.Codec> _loadAsync(
MediaThumbnailProvider key, MediaThumbnailProvider key,
DecoderBufferCallback decode, ImageDecoderCallback decode,
) async { ) async {
assert(key == this, '$key is not $this'); assert(key == this, '$key is not $this');
final bytes = await media.thumbnailDataWithSize( final bytes = await media.thumbnailDataWithSize(
@@ -348,6 +348,7 @@ typedef KeyEventPredicate = bool Function(FocusNode, KeyEvent);
/// {@template userItemBuilder} /// {@template userItemBuilder}
/// Builder used to create a custom [ListUserItem] from a [User] /// Builder used to create a custom [ListUserItem] from a [User]
/// {@endtemplate} /// {@endtemplate}
// ignore: avoid_positional_boolean_parameters
typedef UserItemBuilder = Widget Function(BuildContext, User, bool); typedef UserItemBuilder = Widget Function(BuildContext, User, bool);
/// The action to perform when the "scroll to bottom" button is pressed /// The action to perform when the "scroll to bottom" button is pressed
@@ -22,9 +22,8 @@ void main() {
EdgeInsets? padding, EdgeInsets? padding,
int initialScrollIndex = 0, int initialScrollIndex = 0,
}) async { }) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -24,9 +24,8 @@ void main() {
double anchor = 0, double anchor = 0,
int itemCount = defaultItemCount, int itemCount = defaultItemCount,
}) async { }) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -23,9 +23,8 @@ void main() {
double anchor = 0, double anchor = 0,
int itemCount = defaultItemCount, int itemCount = defaultItemCount,
}) async { }) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -21,9 +21,8 @@ void main() {
EdgeInsets? padding, EdgeInsets? padding,
int initialIndex = 0, int initialIndex = 0,
}) async { }) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -37,9 +37,8 @@ void main() {
double? minCacheExtent, double? minCacheExtent,
bool variableHeight = false, bool variableHeight = false,
}) async { }) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -105,9 +104,8 @@ void main() {
testWidgets('List positioned with 0 at top - use default values', testWidgets('List positioned with 0 at top - use default values',
(WidgetTester tester) async { (WidgetTester tester) async {
final itemPositionsListener = ItemPositionsListener.create(); final itemPositionsListener = ItemPositionsListener.create();
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -1543,9 +1541,8 @@ void main() {
final itemPositionsListener = ItemPositionsListener.create(); final itemPositionsListener = ItemPositionsListener.create();
final itemScrollController = ItemScrollController(); final itemScrollController = ItemScrollController();
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -1600,9 +1597,8 @@ void main() {
final itemPositionsListener = ItemPositionsListener.create(); final itemPositionsListener = ItemPositionsListener.create();
final itemScrollController = ItemScrollController(); final itemScrollController = ItemScrollController();
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -1661,9 +1657,8 @@ void main() {
final itemPositionsListener = ItemPositionsListener.create(); final itemPositionsListener = ItemPositionsListener.create();
final itemScrollController = ItemScrollController(); final itemScrollController = ItemScrollController();
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -1732,9 +1727,8 @@ void main() {
testWidgets('Jump to 100 then set itemCount to 0', testWidgets('Jump to 100 then set itemCount to 0',
(WidgetTester tester) async { (WidgetTester tester) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
final itemScrollController = ItemScrollController(); final itemScrollController = ItemScrollController();
final itemPositionsListener = ItemPositionsListener.create(); final itemPositionsListener = ItemPositionsListener.create();
@@ -1781,9 +1775,8 @@ void main() {
testWidgets('List positioned with 100 at top then set itemCount to 100', testWidgets('List positioned with 100 at top then set itemCount to 100',
(WidgetTester tester) async { (WidgetTester tester) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
final itemCount = ValueNotifier<int>(defaultItemCount); final itemCount = ValueNotifier<int>(defaultItemCount);
@@ -1823,9 +1816,8 @@ void main() {
testWidgets('List positioned with 499 at bottom then set itemCount to 100', testWidgets('List positioned with 499 at bottom then set itemCount to 100',
(WidgetTester tester) async { (WidgetTester tester) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
final itemCount = ValueNotifier<int>(defaultItemCount); final itemCount = ValueNotifier<int>(defaultItemCount);
@@ -1943,9 +1935,8 @@ void main() {
}); });
testWidgets('Rebuild with scroll controller', (WidgetTester tester) async { testWidgets('Rebuild with scroll controller', (WidgetTester tester) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
final key = ValueNotifier<Key>(const ValueKey('key')); final key = ValueNotifier<Key>(const ValueKey('key'));
final itemScrollController = ItemScrollController(); final itemScrollController = ItemScrollController();
@@ -1986,9 +1977,8 @@ void main() {
testWidgets('Double rebuild with scroll controller', testWidgets('Double rebuild with scroll controller',
(WidgetTester tester) async { (WidgetTester tester) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
final outerKey = ValueNotifier<Key>(const ValueKey('outerKey')); final outerKey = ValueNotifier<Key>(const ValueKey('outerKey'));
final innerKey = GlobalKey(); final innerKey = GlobalKey();
final listKey = ValueNotifier<Key>(const ValueKey(null)); final listKey = ValueNotifier<Key>(const ValueKey(null));
@@ -2036,9 +2026,8 @@ void main() {
}); });
testWidgets('Key change with scroll controller', (WidgetTester tester) async { testWidgets('Key change with scroll controller', (WidgetTester tester) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
final key = ValueNotifier<Key>(const ValueKey('key')); final key = ValueNotifier<Key>(const ValueKey('key'));
final itemScrollController = ItemScrollController(); final itemScrollController = ItemScrollController();
@@ -2070,9 +2059,8 @@ void main() {
}); });
testWidgets('Scroll after rebuild', (WidgetTester tester) async { testWidgets('Scroll after rebuild', (WidgetTester tester) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
final key = ValueNotifier<Key>(const ValueKey('key')); final key = ValueNotifier<Key>(const ValueKey('key'));
final itemScrollController = ItemScrollController(); final itemScrollController = ItemScrollController();
@@ -2113,9 +2101,8 @@ void main() {
testWidgets('Scroll after rebuild when resusing state', testWidgets('Scroll after rebuild when resusing state',
(WidgetTester tester) async { (WidgetTester tester) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
final containerKey = ValueNotifier<Key>(const ValueKey('key')); final containerKey = ValueNotifier<Key>(const ValueKey('key'));
final scrollKey = GlobalKey(); final scrollKey = GlobalKey();
final itemScrollController = ItemScrollController(); final itemScrollController = ItemScrollController();
@@ -2158,9 +2145,8 @@ void main() {
testWidgets('Scroll after changing scroll controller', testWidgets('Scroll after changing scroll controller',
(WidgetTester tester) async { (WidgetTester tester) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
final itemScrollController0 = ItemScrollController(); final itemScrollController0 = ItemScrollController();
final itemScrollController1 = ItemScrollController(); final itemScrollController1 = ItemScrollController();
@@ -2205,9 +2191,8 @@ void main() {
testWidgets('Scroll after swapping scroll controllers', testWidgets('Scroll after swapping scroll controllers',
(WidgetTester tester) async { (WidgetTester tester) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
final itemScrollController0 = ItemScrollController(); final itemScrollController0 = ItemScrollController();
final itemScrollController1 = ItemScrollController(); final itemScrollController1 = ItemScrollController();
@@ -25,9 +25,8 @@ void main() {
double anchor = 0, double anchor = 0,
int itemCount = defaultItemCount, int itemCount = defaultItemCount,
}) async { }) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -33,9 +33,8 @@ void main() {
bool addRepaintBoundaries = true, bool addRepaintBoundaries = true,
bool addAutomaticKeepAlives = true, bool addAutomaticKeepAlives = true,
}) async { }) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -100,9 +99,8 @@ void main() {
testWidgets('List positioned with 0 at top - use default values', testWidgets('List positioned with 0 at top - use default values',
(WidgetTester tester) async { (WidgetTester tester) async {
final itemPositionsListener = ItemPositionsListener.create(); final itemPositionsListener = ItemPositionsListener.create();
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -484,9 +482,8 @@ void main() {
testWidgets('Empty list then update to single item list', testWidgets('Empty list then update to single item list',
(WidgetTester tester) async { (WidgetTester tester) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
final itemScrollController = ItemScrollController(); final itemScrollController = ItemScrollController();
final itemPositionsListener = ItemPositionsListener.create(); final itemPositionsListener = ItemPositionsListener.create();
@@ -526,9 +523,8 @@ void main() {
testWidgets('ItemPositions: Empty list then update to 10 items list', testWidgets('ItemPositions: Empty list then update to 10 items list',
(WidgetTester tester) async { (WidgetTester tester) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
final itemScrollController = ItemScrollController(); final itemScrollController = ItemScrollController();
final itemPositionsListener = ItemPositionsListener.create(); final itemPositionsListener = ItemPositionsListener.create();
@@ -24,9 +24,8 @@ void main() {
EdgeInsets? padding, EdgeInsets? padding,
int initialScrollIndex = 0, int initialScrollIndex = 0,
}) async { }) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -25,9 +25,8 @@ void main() {
int itemCount = defaultItemCount, int itemCount = defaultItemCount,
bool reverse = false, bool reverse = false,
}) async { }) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -421,9 +420,8 @@ void main() {
testWidgets('test nested positioned list', (WidgetTester tester) async { testWidgets('test nested positioned list', (WidgetTester tester) async {
const itemCount = 50; const itemCount = 50;
const key = Key('short_list'); const key = Key('short_list');
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -21,9 +21,8 @@ void main() {
EdgeInsets? padding, EdgeInsets? padding,
int initialIndex = 0, int initialIndex = 0,
}) async { }) async {
tester.binding.window.devicePixelRatioTestValue = 1.0; tester.view.devicePixelRatio = 1.0;
tester.binding.window.physicalSizeTestValue = tester.view.physicalSize = const Size(screenWidth, screenHeight);
const Size(screenWidth, screenHeight);
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@@ -39,20 +39,27 @@ void main() {
}); });
setUp(() { setUp(() {
methodChannel.setMockMethodCallHandler((MethodCall methodCall) async { TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
if (methodCall.method == 'listen') { .setMockMethodCallHandler(
try { methodChannel,
await ServicesBinding.instance.defaultBinaryMessenger (MethodCall methodCall) async {
.handlePlatformMessage( if (methodCall.method == 'listen') {
methodChannel.name, try {
methodChannel.codec.encodeSuccessEnvelope('wifi'), await TestDefaultBinaryMessengerBinding
(_) {}, .instance.defaultBinaryMessenger
); .handlePlatformMessage(
} catch (e) { methodChannel.name,
print(e); methodChannel.codec.encodeSuccessEnvelope('wifi'),
(_) {},
);
} catch (e) {
print(e);
}
} }
}
}); return null;
},
);
}); });
testWidgets( testWidgets(
@@ -118,7 +125,8 @@ void main() {
); );
tearDown(() { tearDown(() {
methodChannel.setMockMethodCallHandler(null); TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(methodChannel, null);
}); });
/*testGoldens( /*testGoldens(
@@ -11,10 +11,13 @@ void main() {
const methodChannel = const methodChannel =
MethodChannel('dev.fluttercommunity.plus/connectivity_status'); MethodChannel('dev.fluttercommunity.plus/connectivity_status');
setUp(() { setUp(() {
methodChannel.setMockMethodCallHandler((MethodCall methodCall) async { TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(methodChannel,
(MethodCall methodCall) async {
if (methodCall.method == 'listen') { if (methodCall.method == 'listen') {
try { try {
await ServicesBinding.instance.defaultBinaryMessenger await TestDefaultBinaryMessengerBinding
.instance.defaultBinaryMessenger
.handlePlatformMessage( .handlePlatformMessage(
methodChannel.name, methodChannel.name,
methodChannel.codec.encodeSuccessEnvelope('wifi'), methodChannel.codec.encodeSuccessEnvelope('wifi'),
@@ -24,6 +27,7 @@ void main() {
print(e); print(e);
} }
} }
return null;
}); });
}); });
@@ -87,7 +91,8 @@ void main() {
); );
tearDown(() { tearDown(() {
methodChannel.setMockMethodCallHandler(null); TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(methodChannel, null);
}); });
}); });
} }
@@ -11,10 +11,13 @@ void main() {
const methodChannel = const methodChannel =
MethodChannel('dev.fluttercommunity.plus/connectivity_status'); MethodChannel('dev.fluttercommunity.plus/connectivity_status');
setUp(() { setUp(() {
methodChannel.setMockMethodCallHandler((MethodCall methodCall) async { TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(methodChannel,
(MethodCall methodCall) async {
if (methodCall.method == 'listen') { if (methodCall.method == 'listen') {
try { try {
await ServicesBinding.instance.defaultBinaryMessenger await TestDefaultBinaryMessengerBinding
.instance.defaultBinaryMessenger
.handlePlatformMessage( .handlePlatformMessage(
methodChannel.name, methodChannel.name,
methodChannel.codec.encodeSuccessEnvelope('wifi'), methodChannel.codec.encodeSuccessEnvelope('wifi'),
@@ -24,6 +27,7 @@ void main() {
print(e); print(e);
} }
} }
return null;
}); });
}); });
@@ -93,7 +97,8 @@ void main() {
); );
tearDown(() { tearDown(() {
methodChannel.setMockMethodCallHandler(null); TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(methodChannel, null);
}); });
}); });
} }
@@ -40,10 +40,12 @@ void main() {
}); });
setUp(() { setUp(() {
methodChannel.setMockMethodCallHandler((MethodCall methodCall) async { TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(methodChannel, (MethodCall methodCall) async {
if (methodCall.method == 'listen') { if (methodCall.method == 'listen') {
try { try {
await ServicesBinding.instance.defaultBinaryMessenger await TestDefaultBinaryMessengerBinding
.instance.defaultBinaryMessenger
.handlePlatformMessage( .handlePlatformMessage(
methodChannel.name, methodChannel.name,
methodChannel.codec.encodeSuccessEnvelope('wifi'), methodChannel.codec.encodeSuccessEnvelope('wifi'),
@@ -53,6 +55,7 @@ void main() {
print(e); print(e);
} }
} }
return null;
}); });
}); });
@@ -106,6 +109,7 @@ void main() {
}); });
tearDown(() { tearDown(() {
methodChannel.setMockMethodCallHandler(null); TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(methodChannel, null);
}); });
} }
@@ -40,10 +40,12 @@ void main() {
}); });
setUp(() { setUp(() {
methodChannel.setMockMethodCallHandler((MethodCall methodCall) async { TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(methodChannel, (MethodCall methodCall) async {
if (methodCall.method == 'listen') { if (methodCall.method == 'listen') {
try { try {
await ServicesBinding.instance.defaultBinaryMessenger await TestDefaultBinaryMessengerBinding
.instance.defaultBinaryMessenger
.handlePlatformMessage( .handlePlatformMessage(
methodChannel.name, methodChannel.name,
methodChannel.codec.encodeSuccessEnvelope('wifi'), methodChannel.codec.encodeSuccessEnvelope('wifi'),
@@ -53,6 +55,7 @@ void main() {
print(e); print(e);
} }
} }
return null;
}); });
}); });
@@ -110,6 +113,7 @@ void main() {
}); });
tearDown(() { tearDown(() {
methodChannel.setMockMethodCallHandler(null); TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(methodChannel, null);
}); });
} }
@@ -577,10 +577,10 @@ class ChannelPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return const Scaffold(
appBar: const StreamChannelHeader(), appBar: StreamChannelHeader(),
body: Column( body: Column(
children: const <Widget>[ children: <Widget>[
Expanded( Expanded(
child: StreamMessageListView(), child: StreamMessageListView(),
), ),
@@ -106,10 +106,10 @@ class ChannelPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return const Scaffold(
appBar: const StreamChannelHeader(), appBar: StreamChannelHeader(),
body: Column( body: Column(
children: const <Widget>[ children: <Widget>[
Expanded( Expanded(
child: StreamMessageListView(), child: StreamMessageListView(),
), ),
@@ -133,10 +133,10 @@ class ChannelPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return const Scaffold(
appBar: const StreamChannelHeader(), appBar: StreamChannelHeader(),
body: Column( body: Column(
children: const <Widget>[ children: <Widget>[
Expanded( Expanded(
child: StreamMessageListView(), child: StreamMessageListView(),
), ),
@@ -81,13 +81,13 @@ class ChannelQueryDao extends DatabaseAccessor<DriftChatDatabase>
final cachedChannelCids = await getCachedChannelCids(filter); final cachedChannelCids = await getCachedChannelCids(filter);
final query = select(channels)..where((c) => c.cid.isIn(cachedChannelCids)); final query = select(channels)..where((c) => c.cid.isIn(cachedChannelCids));
final cachedChannels = await (query.join([ final cachedChannels = await query.join([
leftOuterJoin(users, channels.createdById.equalsExp(users.id)), leftOuterJoin(users, channels.createdById.equalsExp(users.id)),
]).map((row) { ]).map((row) {
final createdByEntity = row.readTableOrNull(users); final createdByEntity = row.readTableOrNull(users);
final channelEntity = row.readTable(channels); final channelEntity = row.readTable(channels);
return channelEntity.toChannelModel(createdBy: createdByEntity?.toUser()); return channelEntity.toChannelModel(createdBy: createdByEntity?.toUser());
})).get(); }).get();
var chainedComparator = (ChannelModel a, ChannelModel b) { var chainedComparator = (ChannelModel a, ChannelModel b) {
final dateA = a.lastMessageAt ?? a.createdAt; final dateA = a.lastMessageAt ?? a.createdAt;
@@ -1,10 +1,8 @@
import 'package:drift/drift.dart'; import 'package:drift/drift.dart';
import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat/stream_chat.dart';
import 'package:stream_chat_persistence/src/db/drift_chat_database.dart'; import 'package:stream_chat_persistence/src/db/drift_chat_database.dart';
import 'package:stream_chat_persistence/src/entity/members.dart'; import 'package:stream_chat_persistence/src/entity/members.dart';
import 'package:stream_chat_persistence/src/entity/users.dart'; import 'package:stream_chat_persistence/src/entity/users.dart';
import 'package:stream_chat_persistence/src/mapper/mapper.dart'; import 'package:stream_chat_persistence/src/mapper/mapper.dart';
part 'member_dao.g.dart'; part 'member_dao.g.dart';
@@ -39,9 +37,9 @@ class MemberDao extends DatabaseAccessor<DriftChatDatabase>
) { ) {
final entities = channelWithMembers.entries final entities = channelWithMembers.entries
.map((entry) => .map((entry) =>
(entry.value?.map( entry.value?.map(
(member) => member.toEntity(cid: entry.key), (member) => member.toEntity(cid: entry.key),
)) ?? ) ??
[]) [])
.expand((it) => it) .expand((it) => it)
.toList(growable: false); .toList(growable: false);