-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
Labels
a: leak trackingIssues and PRs related to memory leaks detected by leak_trackerIssues and PRs related to memory leaks detected by leak_trackera: tests"flutter test", flutter_test, or one of our tests"flutter test", flutter_test, or one of our testsf: material designflutter/packages/flutter/material repository.flutter/packages/flutter/material repository.found in release: 3.13Found to occur in 3.13Found to occur in 3.13found in release: 3.16Found to occur in 3.16Found to occur in 3.16frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onr: fixedIssue is closed as already fixed in a newer versionIssue is closed as already fixed in a newer versionteam-frameworkOwned by Framework teamOwned by Framework team
Description
Is there an existing issue for this?
- I have searched the existing issues
- I have read the guide to filing a bug
Steps to reproduce
DateRangePickerDialog has several memory leaks.
Test to reveal the leak:
testWidgetsWithLeakTracking('DateRangePickerDialog leaks', (WidgetTester tester) async {
const DatePickerThemeData datePickerTheme = DatePickerThemeData(
backgroundColor: Color(0xfffffff0),
elevation: 6,
shadowColor: Color(0xfffffff1),
surfaceTintColor: Color(0xfffffff2),
shape: RoundedRectangleBorder(),
headerBackgroundColor: Color(0xfffffff3),
headerForegroundColor: Color(0xfffffff4),
headerHeadlineStyle: TextStyle(fontSize: 10),
headerHelpStyle: TextStyle(fontSize: 11),
weekdayStyle: TextStyle(fontSize: 12),
dayStyle: TextStyle(fontSize: 13),
dayForegroundColor: MaterialStatePropertyAll<Color>(Color(0xfffffff5)),
dayBackgroundColor: MaterialStatePropertyAll<Color>(Color(0xfffffff6)),
dayOverlayColor: MaterialStatePropertyAll<Color>(Color(0xfffffff7)),
todayForegroundColor: MaterialStatePropertyAll<Color>(Color(0xfffffff8)),
todayBackgroundColor: MaterialStatePropertyAll<Color>(Color(0xfffffff9)),
todayBorder: BorderSide(width: 3),
yearStyle: TextStyle(fontSize: 13),
yearForegroundColor: MaterialStatePropertyAll<Color>(Color(0xfffffffa)),
yearBackgroundColor: MaterialStatePropertyAll<Color>(Color(0xfffffffb)),
yearOverlayColor: MaterialStatePropertyAll<Color>(Color(0xfffffffc)),
rangePickerBackgroundColor: Color(0xfffffffd),
rangePickerElevation: 7,
rangePickerShadowColor: Color(0xfffffffe),
rangePickerSurfaceTintColor: Color(0xffffffff),
rangePickerShape: RoundedRectangleBorder(),
rangePickerHeaderBackgroundColor: Color(0xffffff0f),
rangePickerHeaderForegroundColor: Color(0xffffff1f),
rangePickerHeaderHeadlineStyle: TextStyle(fontSize: 14),
rangePickerHeaderHelpStyle: TextStyle(fontSize: 15),
rangeSelectionBackgroundColor: Color(0xffffff2f),
rangeSelectionOverlayColor: MaterialStatePropertyAll<Color>(Color(0xffffff3f)),
dividerColor: Color(0xffffff4f),
inputDecorationTheme: InputDecorationTheme(
fillColor: Color(0xffffff5f),
border: UnderlineInputBorder(),
),
cancelButtonStyle: ButtonStyle(foregroundColor: MaterialStatePropertyAll<Color>(Color(0xffffff6f))),
confirmButtonStyle: ButtonStyle(foregroundColor: MaterialStatePropertyAll<Color>(Color(0xffffff7f))),
);
await tester.pumpWidget(
MaterialApp(
theme: ThemeData(
datePickerTheme: datePickerTheme,
useMaterial3: true,
),
home: Directionality(
textDirection: TextDirection.ltr,
child: Material(
child: Center(
child: DateRangePickerDialog(
firstDate: DateTime(2023),
lastDate: DateTime(2023, DateTime.january, 31),
initialDateRange: DateTimeRange(
start: DateTime(2023, DateTime.january, 17),
end: DateTime(2023, DateTime.january, 20),
),
currentDate: DateTime(2023, DateTime.january, 23),
),
),
),
),
),
);
final Material material = tester.widget<Material>(
find.descendant(
of: find.byType(Dialog),
matching: find.byType(Material)
).first
);
expect(material.color, datePickerTheme.backgroundColor); //!!
expect(tester.widget<Scaffold>(find.byType(Scaffold)).backgroundColor, datePickerTheme.rangePickerBackgroundColor);
expect(material.elevation, datePickerTheme.rangePickerElevation);
expect(material.shadowColor, datePickerTheme.rangePickerShadowColor);
expect(material.surfaceTintColor, datePickerTheme.rangePickerSurfaceTintColor);
expect(material.shape, datePickerTheme.rangePickerShape);
final AppBar appBar = tester.widget<AppBar>(find.byType(AppBar));
expect(appBar.backgroundColor, datePickerTheme.rangePickerHeaderBackgroundColor);
final Text selectRange = tester.widget<Text>(find.text('Select range'));
expect(selectRange.style?.color, datePickerTheme.rangePickerHeaderForegroundColor);
expect(selectRange.style?.fontSize, datePickerTheme.rangePickerHeaderHelpStyle?.fontSize);
final Text selectedDate = tester.widget<Text>(find.text('Jan 17'));
expect(selectedDate.style?.color, datePickerTheme.rangePickerHeaderForegroundColor);
expect(selectedDate.style?.fontSize, datePickerTheme.rangePickerHeaderHeadlineStyle?.fontSize);
// Test the day overlay color.
final RenderObject inkFeatures = tester.allRenderObjects.firstWhere((RenderObject object) => object.runtimeType.toString() == '_RenderInkFeatures');
final TestGesture gesture = await tester.createGesture(
kind: PointerDeviceKind.mouse,
);
await gesture.addPointer();
await gesture.moveTo(tester.getCenter(find.text('16')));
await tester.pumpAndSettle();
expect(inkFeatures, paints..circle(color: datePickerTheme.dayOverlayColor?.resolve(<MaterialState>{})));
// Test the range selection overlay color.
await gesture.moveTo(tester.getCenter(find.text('18')));
await tester.pumpAndSettle();
expect(inkFeatures, paints..circle(color: datePickerTheme.rangeSelectionOverlayColor?.resolve(<MaterialState>{})));
});Test output
Expected: leak free
Actual: <Instance of 'Leaks'>
Which: contains leaks:
# The text is generated by leak_tracker.
# For leak troubleshooting tips open:
# https://github.com/dart-lang/leak_tracker/blob/main/doc/TROUBLESHOOT.md
notDisposed:
total: 37
objects:
AnnotatedRegionLayer<SystemUiOverlayStyle>:
test: DateRangePickerDialog leaks
identityHashCode: 1066443165
AnnotatedRegionLayer<SystemUiOverlayStyle>:
test: DateRangePickerDialog leaks
identityHashCode: 413513302
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 200740581
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 961704223
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 589126989
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 7926661
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 926670356
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 180584837
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 1038667850
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 99588732
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 854753638
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 889218310
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 178905952
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 547957622
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 44278579
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 688997814
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 1000031313
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 238955639
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 898730302
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 473834977
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 956769390
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 227652378
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 153087817
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 976148998
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 104292027
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 94237369
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 68343564
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 36922803
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 400546746
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 3882273
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 118097315
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 161471944
MaterialStatesController:
test: DateRangePickerDialog leaks
identityHashCode: 972250262
RestorableDateTimeN:
test: DateRangePickerDialog leaks
identityHashCode: 863531789
RestorableDateTimeN:
test: DateRangePickerDialog leaks
identityHashCode: 475527521
_RestorableDatePickerEntryMode:
test: DateRangePickerDialog leaks
identityHashCode: 473806816
RestorableBool:
test: DateRangePickerDialog leaks
identityHashCode: 81121360
package:matcher expect
expect
widget_tester.dart:458
_tearDownTestingWithLeakTracking
test_widgets.dart:82
===== asynchronous gap ===========================
dart:async _CustomZone.registerBinaryCallback
configureLeakTrackingTearDown.<fn>
test_widgets.dart:59
Flutter Doctor output
Doctor output
[✓] Flutter (Channel master, 3.14.0-14.0.pre.655, on macOS 13.0.1 22A400 darwin-arm64, locale en-GB)
• Flutter version 3.14.0-14.0.pre.655 on channel master at /Users/ksokolovskyi/dev/flutter_master
• Upstream repository [email protected]:ksokolovskyi/flutter.git
• FLUTTER_GIT_URL = [email protected]:ksokolovskyi/flutter.git
• Framework revision fe0275f9d5 (3 hours ago), 2023-10-05 05:57:26 -0400
• Engine revision f8d53c5fe9
• Dart version 3.2.0 (build 3.2.0-231.0.dev)
• DevTools version 2.28.1
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
• Android SDK at /Users/ksokolovskyi/Library/Android/sdk
• Platform android-34, build-tools 33.0.1
• ANDROID_HOME = /Users/ksokolovskyi/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 14.3.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 14E300c
• CocoaPods version 1.13.0
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2022.3)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
[✓] IntelliJ IDEA Community Edition (version 2023.2)
• IntelliJ at /Applications/IntelliJ IDEA CE.app
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
[✓] VS Code (version 1.83.0)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.74.0
[✓] Connected device (2 available)
• macOS (desktop) • macos • darwin-arm64 • macOS 13.0.1 22A400 darwin-arm64
• Chrome (web) • chrome • web-javascript • Google Chrome 117.0.5938.149
[✓] Network resources
• All expected network resources are available.
• No issues found!Metadata
Metadata
Assignees
Labels
a: leak trackingIssues and PRs related to memory leaks detected by leak_trackerIssues and PRs related to memory leaks detected by leak_trackera: tests"flutter test", flutter_test, or one of our tests"flutter test", flutter_test, or one of our testsf: material designflutter/packages/flutter/material repository.flutter/packages/flutter/material repository.found in release: 3.13Found to occur in 3.13Found to occur in 3.13found in release: 3.16Found to occur in 3.16Found to occur in 3.16frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onr: fixedIssue is closed as already fixed in a newer versionIssue is closed as already fixed in a newer versionteam-frameworkOwned by Framework teamOwned by Framework team