Merge pull request #1553 from GetStream/feat/flutter-3.10
This commit is contained in:
@@ -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
@@ -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,
|
||||||
);
|
);
|
||||||
|
|||||||
+3
-3
@@ -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
|
||||||
|
|||||||
+2
-3
@@ -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(
|
||||||
|
|||||||
+2
-3
@@ -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(
|
||||||
|
|||||||
+2
-3
@@ -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(
|
||||||
|
|||||||
+2
-3
@@ -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(
|
||||||
|
|||||||
+30
-45
@@ -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();
|
||||||
|
|||||||
+2
-3
@@ -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(
|
||||||
|
|||||||
+8
-12
@@ -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();
|
||||||
|
|||||||
+2
-3
@@ -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(
|
||||||
|
|||||||
+4
-6
@@ -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(
|
||||||
|
|||||||
+2
-3
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user