From 5b6d748cb4c443904930b4491c77c843fd752627 Mon Sep 17 00:00:00 2001 From: Kate Lovett Date: Thu, 31 Aug 2023 17:56:06 -0500 Subject: [PATCH] Fix sample code crash, add test (#133812) Fixes https://github.com/flutter/flutter/issues/133402 On web `1 << 32` crashes, 31 is the maximum. --- dev/bots/check_code_samples.dart | 1 - .../transitions/listenable_builder.3.dart | 2 +- .../listenable_builder.3_test.dart | 34 +++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 examples/api/test/widgets/transitions/listenable_builder.3_test.dart diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart index 78de4d43de..029e6322a1 100644 --- a/dev/bots/check_code_samples.dart +++ b/dev/bots/check_code_samples.dart @@ -405,7 +405,6 @@ final Set _knownMissingTests = { 'examples/api/test/widgets/animated_switcher/animated_switcher.0_test.dart', 'examples/api/test/widgets/transitions/relative_positioned_transition.0_test.dart', 'examples/api/test/widgets/transitions/positioned_transition.0_test.dart', - 'examples/api/test/widgets/transitions/listenable_builder.3_test.dart', 'examples/api/test/widgets/transitions/sliver_fade_transition.0_test.dart', 'examples/api/test/widgets/transitions/align_transition.0_test.dart', 'examples/api/test/widgets/transitions/fade_transition.0_test.dart', diff --git a/examples/api/lib/widgets/transitions/listenable_builder.3.dart b/examples/api/lib/widgets/transitions/listenable_builder.3.dart index 9d65da22a6..8bc7ae1ed4 100644 --- a/examples/api/lib/widgets/transitions/listenable_builder.3.dart +++ b/examples/api/lib/widgets/transitions/listenable_builder.3.dart @@ -39,7 +39,7 @@ class _ListenableBuilderExampleState extends State { appBar: AppBar(title: const Text('ListenableBuilder Example')), body: ListBody(listNotifier: _listNotifier), floatingActionButton: FloatingActionButton( - onPressed: () => _listNotifier.add(_random.nextInt(1 << 32)), // 1 << 32 is the maximum supported value + onPressed: () => _listNotifier.add(_random.nextInt(1 << 31)), // 1 << 31 is the maximum supported value child: const Icon(Icons.add), ), ), diff --git a/examples/api/test/widgets/transitions/listenable_builder.3_test.dart b/examples/api/test/widgets/transitions/listenable_builder.3_test.dart new file mode 100644 index 0000000000..a618a4999b --- /dev/null +++ b/examples/api/test/widgets/transitions/listenable_builder.3_test.dart @@ -0,0 +1,34 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/material.dart'; +import 'package:flutter_api_samples/widgets/transitions/listenable_builder.3.dart' as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('Tapping FAB adds to values', (WidgetTester tester) async { + await tester.pumpWidget(const example.ListenableBuilderExample()); + + final Finder listContent = find.byWidgetPredicate((Widget widget) => widget is example.ListBody); + + expect(find.text('Current values:'), findsOneWidget); + expect(find.byIcon(Icons.add), findsOneWidget); + expect( + (tester.widget(listContent) as example.ListBody).listNotifier.values.isEmpty, + isTrue, + ); + + await tester.tap(find.byType(FloatingActionButton).first); + await tester.pumpAndSettle(); + expect( + (tester.widget(listContent) as example.ListBody).listNotifier.values.isEmpty, + isFalse, + ); + expect( + (tester.widget(listContent) as example.ListBody).listNotifier.values, + [1464685455], + ); + expect(find.text('1464685455'), findsOneWidget); + }); +}