diff --git a/packages/cupertino_ui/CHANGELOG.md b/packages/cupertino_ui/CHANGELOG.md index 23017e9f58e6..b0a5004b6e6d 100644 --- a/packages/cupertino_ui/CHANGELOG.md +++ b/packages/cupertino_ui/CHANGELOG.md @@ -1,6 +1,7 @@ ## NEXT * Updates minimum supported SDK version to Flutter 3.38/Dart 3.10. +* Fixes cross imports of `material_ui` in the `cupertino_ui` API examples. ## 0.0.1 diff --git a/packages/cupertino_ui/example/lib/list_tile/cupertino_list_tile.0.dart b/packages/cupertino_ui/example/lib/list_tile/cupertino_list_tile.0.dart index eb0750eebb52..7cbd61d5c355 100644 --- a/packages/cupertino_ui/example/lib/list_tile/cupertino_list_tile.0.dart +++ b/packages/cupertino_ui/example/lib/list_tile/cupertino_list_tile.0.dart @@ -4,7 +4,6 @@ // #region body import 'package:cupertino_ui/cupertino_ui.dart'; -import 'package:material_ui/material_ui.dart'; /// Flutter code sample for [CupertinoListTile]. @@ -37,25 +36,25 @@ class CupertinoListTileExample extends StatelessWidget { ), CupertinoListTile( title: Text('One-line with trailing widget'), - trailing: Icon(Icons.more_vert), + trailing: Icon(CupertinoIcons.ellipsis_vertical), ), CupertinoListTile( leading: FlutterLogo(), title: Text('One-line with both widgets'), - trailing: Icon(Icons.more_vert), + trailing: Icon(CupertinoIcons.ellipsis_vertical), ), CupertinoListTile( leading: FlutterLogo(size: 56.0), title: Text('Two-line CupertinoListTile'), subtitle: Text('Here is a subtitle'), - trailing: Icon(Icons.more_vert), - additionalInfo: Icon(Icons.info), + trailing: Icon(CupertinoIcons.ellipsis_vertical), + additionalInfo: Icon(CupertinoIcons.info), ), CupertinoListTile( key: Key('CupertinoListTile with background color'), leading: FlutterLogo(size: 56.0), title: Text('CupertinoListTile with background color'), - backgroundColor: Colors.lightBlue, + backgroundColor: Color(0xFF0000FF), ), ], ), diff --git a/packages/cupertino_ui/example/lib/magnifier/text_magnifier.0.dart b/packages/cupertino_ui/example/lib/magnifier/text_magnifier.0.dart index d79d27f161fa..c4aacbb52e31 100644 --- a/packages/cupertino_ui/example/lib/magnifier/text_magnifier.0.dart +++ b/packages/cupertino_ui/example/lib/magnifier/text_magnifier.0.dart @@ -4,11 +4,11 @@ // #region body import 'package:flutter/foundation.dart'; -import 'package:material_ui/material_ui.dart'; +import 'package:cupertino_ui/cupertino_ui.dart'; void main() => runApp(const TextMagnifierExampleApp(text: 'Hello world!')); -class TextMagnifierExampleApp extends StatelessWidget { +class TextMagnifierExampleApp extends StatefulWidget { const TextMagnifierExampleApp({ super.key, this.textDirection = TextDirection.ltr, @@ -18,29 +18,43 @@ class TextMagnifierExampleApp extends StatelessWidget { final TextDirection textDirection; final String text; + @override + State createState() => + _TextMagnifierExampleAppState(); +} + +class _TextMagnifierExampleAppState extends State { + late final controller = TextEditingController(text: widget.text); + @override Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - body: Padding( + return CupertinoApp( + home: CupertinoPageScaffold( + child: Padding( padding: const .symmetric(horizontal: 48.0), child: Center( - child: TextField( - textDirection: textDirection, + child: CupertinoTextField( + textDirection: widget.textDirection, // Create a custom magnifier configuration that - // this `TextField` will use to build a magnifier with. + // this `CupertinoTextField` will use to build a magnifier with. magnifierConfiguration: TextMagnifierConfiguration( magnifierBuilder: (_, _, ValueNotifier magnifierInfo) => CustomMagnifier(magnifierInfo: magnifierInfo), ), - controller: TextEditingController(text: text), + controller: controller, ), ), ), ), ); } + + @override + void dispose() { + controller.dispose(); + super.dispose(); + } } class CustomMagnifier extends StatelessWidget { @@ -96,7 +110,7 @@ class CustomMagnifier extends StatelessWidget { // Decorate it however we'd like! decoration: const MagnifierDecoration( shape: StarBorder( - side: BorderSide(color: Colors.green, width: 2), + side: BorderSide(color: Color(0xFF00FF00), width: 2), ), ), size: magnifierSize, diff --git a/packages/cupertino_ui/example/pubspec.yaml b/packages/cupertino_ui/example/pubspec.yaml index b7180111a604..cf5568bf64ef 100644 --- a/packages/cupertino_ui/example/pubspec.yaml +++ b/packages/cupertino_ui/example/pubspec.yaml @@ -17,6 +17,7 @@ dependencies: test: ^1.31.0 vector_math: ^2.2.0 web: ^1.1.1 + cupertino_icons: ^1.0.9 cupertino_ui: path: .. material_ui: diff --git a/packages/cupertino_ui/example/test/context_menu/cupertino_context_menu.0_test.dart b/packages/cupertino_ui/example/test/context_menu/cupertino_context_menu.0_test.dart index b9cabb374d1a..c848e51b87f4 100644 --- a/packages/cupertino_ui/example/test/context_menu/cupertino_context_menu.0_test.dart +++ b/packages/cupertino_ui/example/test/context_menu/cupertino_context_menu.0_test.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:material_ui/material_ui.dart'; +import 'package:cupertino_ui/cupertino_ui.dart'; import 'package:cupertino_ui_examples/context_menu/cupertino_context_menu.0.dart' as example; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/cupertino_ui/example/test/context_menu/cupertino_context_menu.1_test.dart b/packages/cupertino_ui/example/test/context_menu/cupertino_context_menu.1_test.dart index 2f7ca50494e0..c2443d0f938a 100644 --- a/packages/cupertino_ui/example/test/context_menu/cupertino_context_menu.1_test.dart +++ b/packages/cupertino_ui/example/test/context_menu/cupertino_context_menu.1_test.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:material_ui/material_ui.dart'; +import 'package:cupertino_ui/cupertino_ui.dart'; import 'package:cupertino_ui_examples/context_menu/cupertino_context_menu.1.dart' as example; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/cupertino_ui/example/test/list_tile/cupertino_list_tile.0_test.dart b/packages/cupertino_ui/example/test/list_tile/cupertino_list_tile.0_test.dart index 61a00c54a6de..915476b74f03 100644 --- a/packages/cupertino_ui/example/test/list_tile/cupertino_list_tile.0_test.dart +++ b/packages/cupertino_ui/example/test/list_tile/cupertino_list_tile.0_test.dart @@ -3,7 +3,6 @@ // found in the LICENSE file. import 'package:cupertino_ui/cupertino_ui.dart'; -import 'package:material_ui/material_ui.dart'; import 'package:cupertino_ui_examples/list_tile/cupertino_list_tile.0.dart' as example; import 'package:flutter_test/flutter_test.dart'; @@ -26,8 +25,8 @@ void main() { expect(find.text('Two-line CupertinoListTile'), findsOne); expect(find.text('Here is a subtitle'), findsOne); expect(find.text('CupertinoListTile with background color'), findsOne); - expect(find.byIcon(Icons.more_vert), findsNWidgets(3)); - expect(find.byIcon(Icons.info), findsOne); + expect(find.byIcon(CupertinoIcons.ellipsis_vertical), findsNWidgets(3)); + expect(find.byIcon(CupertinoIcons.info), findsOne); final Finder tileWithBackgroundFinder = find.byKey( const Key('CupertinoListTile with background color'), @@ -36,7 +35,7 @@ void main() { tester .firstWidget(tileWithBackgroundFinder) .backgroundColor, - Colors.lightBlue, + const Color(0xFF0000FF), ); }); } diff --git a/packages/cupertino_ui/example/test/magnifier/text_magnifier.0_test.dart b/packages/cupertino_ui/example/test/magnifier/text_magnifier.0_test.dart index 8d9ee9455936..d7aafc35fc33 100644 --- a/packages/cupertino_ui/example/test/magnifier/text_magnifier.0_test.dart +++ b/packages/cupertino_ui/example/test/magnifier/text_magnifier.0_test.dart @@ -3,24 +3,15 @@ // found in the LICENSE file. import 'package:flutter/rendering.dart'; -import 'package:material_ui/material_ui.dart'; +import 'package:cupertino_ui/cupertino_ui.dart'; import 'package:cupertino_ui_examples/magnifier/text_magnifier.0.dart' as example; import 'package:flutter_test/flutter_test.dart'; -List _globalize( - Iterable points, - RenderBox box, -) { - return points.map((TextSelectionPoint point) { - return TextSelectionPoint(box.localToGlobal(point.point), point.direction); - }).toList(); -} - RenderEditable _findRenderEditable>( WidgetTester tester, ) { - return (tester.state(find.byType(TextField)) + return (tester.state(find.byType(CupertinoTextField)) as TextSelectionGestureDetectorBuilderDelegate) .editableTextKey .currentState! @@ -47,40 +38,16 @@ Offset _textOffsetToPosition>( } void main() { - const Duration durationBetweenActions = Duration(milliseconds: 20); const String defaultText = 'I am a magnifier, fear me!'; Future showMagnifier(WidgetTester tester, int textOffset) async { assert(textOffset >= 0); final Offset tapOffset = _textOffsetToPosition(tester, textOffset); - // Double tap 'Magnifier' word to show the selection handles. + // Long press to show the magnifier. final TestGesture testGesture = await tester.startGesture(tapOffset); - await tester.pump(durationBetweenActions); - await testGesture.up(); - await tester.pump(durationBetweenActions); - await testGesture.down(tapOffset); - await tester.pump(durationBetweenActions); - await testGesture.up(); - await tester.pumpAndSettle(); - - final TextEditingController controller = tester - .firstWidget(find.byType(TextField)) - .controller!; - - final TextSelection selection = controller.selection; - final RenderEditable renderEditable = _findRenderEditable(tester); - final List endpoints = _globalize( - renderEditable.getEndpointsForSelection(selection), - renderEditable, - ); - - final Offset handlePos = endpoints.last.point + const Offset(10.0, 10.0); - - final TestGesture gesture = await tester.startGesture(handlePos); - - await gesture.moveTo(_textOffsetToPosition(tester, defaultText.length - 2)); - await tester.pump(); + addTearDown(testGesture.removePointer); + await tester.pump(const Duration(milliseconds: 600)); } testWidgets( @@ -89,8 +56,10 @@ void main() { await tester.pumpWidget( const example.TextMagnifierExampleApp(text: defaultText), ); + final int textOffset = defaultText.indexOf('e'); + + await showMagnifier(tester, textOffset); - await showMagnifier(tester, defaultText.indexOf('e')); expect(find.byType(example.CustomMagnifier), findsOneWidget); await expectLater( @@ -113,7 +82,9 @@ void main() { const example.TextMagnifierExampleApp(textDirection: .rtl, text: text), ); - await showMagnifier(tester, text.indexOf(textToTapOn)); + final int textOffset = text.indexOf(textToTapOn); + + await showMagnifier(tester, textOffset); expect(find.byType(example.CustomMagnifier), findsOneWidget); });