diff --git a/third_party/packages/cupertino_icons/CHANGELOG.md b/third_party/packages/cupertino_icons/CHANGELOG.md index 0042b739318..c1a5aaa9681 100644 --- a/third_party/packages/cupertino_icons/CHANGELOG.md +++ b/third_party/packages/cupertino_icons/CHANGELOG.md @@ -1,6 +1,6 @@ ## NEXT -* Updates minimum supported SDK version to Flutter 3.27/Dart 3.6. +* Updates minimum supported SDK version to Flutter 3.29/Dart 3.7. ## 1.0.8 diff --git a/third_party/packages/cupertino_icons/pubspec.yaml b/third_party/packages/cupertino_icons/pubspec.yaml index dbdbe148de9..f14612d3673 100644 --- a/third_party/packages/cupertino_icons/pubspec.yaml +++ b/third_party/packages/cupertino_icons/pubspec.yaml @@ -6,7 +6,7 @@ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+ version: 1.0.8 environment: - sdk: ^3.6.0 + sdk: ^3.7.0 dev_dependencies: collection: ^1.18.0 diff --git a/third_party/packages/cupertino_icons/test/cupertino_icons_golden_test.dart b/third_party/packages/cupertino_icons/test/cupertino_icons_golden_test.dart index 8ddf57cb5c5..00a0e304262 100644 --- a/third_party/packages/cupertino_icons/test/cupertino_icons_golden_test.dart +++ b/third_party/packages/cupertino_icons/test/cupertino_icons_golden_test.dart @@ -25,7 +25,8 @@ void main() async { if (kIsWeb || !Platform.isLinux) { return; } - final bool isMainChannel = !Platform.environment.containsKey('CHANNEL') || + final bool isMainChannel = + !Platform.environment.containsKey('CHANNEL') || Platform.environment['CHANNEL'] == 'main' || Platform.environment['CHANNEL'] == 'master'; // Only test against main to avoid rendering differences between flutter channels. @@ -33,15 +34,17 @@ void main() async { return; } // Load font. - final String effectiveFontFamily = const TextStyle( - fontFamily: CupertinoIcons.iconFont, - package: CupertinoIcons.iconFontPackage) - .fontFamily!; + final String effectiveFontFamily = + const TextStyle( + fontFamily: CupertinoIcons.iconFont, + package: CupertinoIcons.iconFontPackage, + ).fontFamily!; final FontLoader fontLoader = FontLoader(effectiveFontFamily); final String filePath = path.canonicalize('assets/CupertinoIcons.ttf'); final File file = File(filePath); - fontLoader - .addFont(file.readAsBytes().then((Uint8List v) => v.buffer.asByteData())); + fontLoader.addFont( + file.readAsBytes().then((Uint8List v) => v.buffer.asByteData()), + ); await fontLoader.load(); assert(icons.isNotEmpty); @@ -49,7 +52,9 @@ void main() async { final int groupEndCodePoint = (icons[index].codePoint ~/ iconsPerImage + 1) * iconsPerImage; final int next = icons.indexWhere( - (IconData icon) => icon.codePoint >= groupEndCodePoint, index); + (IconData icon) => icon.codePoint >= groupEndCodePoint, + index, + ); final int nextIndex = next < 0 ? icons.length : next; registerTestForIconGroup(icons.slice(index, nextIndex)); index = nextIndex; @@ -71,15 +76,19 @@ void registerTestForIconGroup(List iconGroup) { testWidgets('font golden test: $range', (WidgetTester tester) async { addTearDown(tester.view.reset); - const Size canvasSize = - Size(iconSize * iconsPerRow, iconSize * iconsPerCol); + const Size canvasSize = Size( + iconSize * iconsPerRow, + iconSize * iconsPerCol, + ); tester.view.physicalSize = canvasSize * tester.view.devicePixelRatio; const Widget fillerBox = SizedBox.square(dimension: iconSize); final List children = List.filled(iconsPerImage, fillerBox); for (final IconData icon in iconGroup) { - children[icon.codePoint - groupStartCodePoint] = - Icon(icon, size: iconSize); + children[icon.codePoint - groupStartCodePoint] = Icon( + icon, + size: iconSize, + ); } final Widget widget = Directionality( @@ -94,6 +103,8 @@ void registerTestForIconGroup(List iconGroup) { ); await tester.pumpWidget(widget); await expectLater( - find.byType(Wrap), matchesGoldenFile('goldens/glyph_$range.png')); + find.byType(Wrap), + matchesGoldenFile('goldens/glyph_$range.png'), + ); }); } diff --git a/third_party/packages/cupertino_icons/test/cupertino_icons_test.dart b/third_party/packages/cupertino_icons/test/cupertino_icons_test.dart index bb61b92c509..fc215bc18c9 100644 --- a/third_party/packages/cupertino_icons/test/cupertino_icons_test.dart +++ b/third_party/packages/cupertino_icons/test/cupertino_icons_test.dart @@ -10,26 +10,17 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { - testWidgets( - 'Cupertino Icon Test', - (WidgetTester tester) async { - // #docregion CupertinoIcon - const Icon icon = Icon( - CupertinoIcons.heart_fill, - color: Colors.pink, - size: 24.0, - ); - // #enddocregion CupertinoIcon + testWidgets('Cupertino Icon Test', (WidgetTester tester) async { + // #docregion CupertinoIcon + const Icon icon = Icon( + CupertinoIcons.heart_fill, + color: Colors.pink, + size: 24.0, + ); + // #enddocregion CupertinoIcon - await tester.pumpWidget( - const MaterialApp( - home: Scaffold( - body: icon, - ), - ), - ); + await tester.pumpWidget(const MaterialApp(home: Scaffold(body: icon))); - expect(find.byType(Icon), findsOne); - }, - ); + expect(find.byType(Icon), findsOne); + }); } diff --git a/third_party/packages/cupertino_icons/test/icons_list.dart b/third_party/packages/cupertino_icons/test/icons_list.dart index fb4753bb10d..a9ebe511344 100644 --- a/third_party/packages/cupertino_icons/test/icons_list.dart +++ b/third_party/packages/cupertino_icons/test/icons_list.dart @@ -14,1327 +14,1329 @@ int _compare(IconData a, IconData b) => a.codePoint.compareTo(b.codePoint); /// this list. /// /// This list cannot be mutated by tests. -final List icons = List.unmodifiable([ - CupertinoIcons.left_chevron, - CupertinoIcons.right_chevron, - CupertinoIcons.share, - CupertinoIcons.share_solid, - CupertinoIcons.book, - CupertinoIcons.book_solid, - CupertinoIcons.bookmark, - CupertinoIcons.bookmark_solid, - CupertinoIcons.info, - CupertinoIcons.reply, - CupertinoIcons.conversation_bubble, - CupertinoIcons.profile_circled, - CupertinoIcons.plus_circled, - CupertinoIcons.minus_circled, - CupertinoIcons.flag, - CupertinoIcons.search, - CupertinoIcons.check_mark, - CupertinoIcons.check_mark_circled, - CupertinoIcons.check_mark_circled_solid, - CupertinoIcons.circle, - CupertinoIcons.circle_filled, - CupertinoIcons.back, - CupertinoIcons.forward, - CupertinoIcons.home, - CupertinoIcons.shopping_cart, - CupertinoIcons.ellipsis, - CupertinoIcons.phone, - CupertinoIcons.phone_solid, - CupertinoIcons.down_arrow, - CupertinoIcons.up_arrow, - CupertinoIcons.battery_charging, - CupertinoIcons.battery_empty, - CupertinoIcons.battery_full, - CupertinoIcons.battery_75_percent, - CupertinoIcons.battery_25_percent, - CupertinoIcons.bluetooth, - CupertinoIcons.restart, - CupertinoIcons.reply_all, - CupertinoIcons.reply_thick_solid, - CupertinoIcons.share_up, - CupertinoIcons.shuffle, - CupertinoIcons.shuffle_medium, - CupertinoIcons.shuffle_thick, - CupertinoIcons.photo_camera, - CupertinoIcons.photo_camera_solid, - CupertinoIcons.video_camera, - CupertinoIcons.video_camera_solid, - CupertinoIcons.switch_camera, - CupertinoIcons.switch_camera_solid, - CupertinoIcons.collections, - CupertinoIcons.collections_solid, - CupertinoIcons.folder, - CupertinoIcons.folder_solid, - CupertinoIcons.folder_open, - CupertinoIcons.delete, - CupertinoIcons.delete_solid, - CupertinoIcons.delete_simple, - CupertinoIcons.pen, - CupertinoIcons.pencil, - CupertinoIcons.create, - CupertinoIcons.create_solid, - CupertinoIcons.refresh, - CupertinoIcons.refresh_circled, - CupertinoIcons.refresh_circled_solid, - CupertinoIcons.refresh_thin, - CupertinoIcons.refresh_thick, - CupertinoIcons.refresh_bold, - CupertinoIcons.clear_thick, - CupertinoIcons.clear_thick_circled, - CupertinoIcons.clear, - CupertinoIcons.clear_circled, - CupertinoIcons.clear_circled_solid, - CupertinoIcons.add, - CupertinoIcons.add_circled, - CupertinoIcons.add_circled_solid, - CupertinoIcons.gear, - CupertinoIcons.gear_solid, - CupertinoIcons.gear_big, - CupertinoIcons.settings, - CupertinoIcons.settings_solid, - CupertinoIcons.music_note, - CupertinoIcons.double_music_note, - CupertinoIcons.play_arrow, - CupertinoIcons.play_arrow_solid, - CupertinoIcons.pause, - CupertinoIcons.pause_solid, - CupertinoIcons.loop, - CupertinoIcons.loop_thick, - CupertinoIcons.volume_down, - CupertinoIcons.volume_mute, - CupertinoIcons.volume_off, - CupertinoIcons.volume_up, - CupertinoIcons.fullscreen, - CupertinoIcons.fullscreen_exit, - CupertinoIcons.mic_off, - CupertinoIcons.mic, - CupertinoIcons.mic_solid, - CupertinoIcons.clock, - CupertinoIcons.clock_solid, - CupertinoIcons.time, - CupertinoIcons.time_solid, - CupertinoIcons.padlock, - CupertinoIcons.padlock_solid, - CupertinoIcons.eye, - CupertinoIcons.eye_solid, - CupertinoIcons.person, - CupertinoIcons.person_solid, - CupertinoIcons.person_add, - CupertinoIcons.person_add_solid, - CupertinoIcons.group, - CupertinoIcons.group_solid, - CupertinoIcons.mail, - CupertinoIcons.mail_solid, - CupertinoIcons.location, - CupertinoIcons.location_solid, - CupertinoIcons.tag, - CupertinoIcons.tag_solid, - CupertinoIcons.tags, - CupertinoIcons.tags_solid, - CupertinoIcons.bus, - CupertinoIcons.car, - CupertinoIcons.car_detailed, - CupertinoIcons.train_style_one, - CupertinoIcons.train_style_two, - CupertinoIcons.paw, - CupertinoIcons.paw_solid, - CupertinoIcons.game_controller, - CupertinoIcons.game_controller_solid, - CupertinoIcons.lab_flask, - CupertinoIcons.lab_flask_solid, - CupertinoIcons.heart, - CupertinoIcons.heart_solid, - CupertinoIcons.bell, - CupertinoIcons.bell_solid, - CupertinoIcons.news, - CupertinoIcons.news_solid, - CupertinoIcons.brightness, - CupertinoIcons.brightness_solid, - CupertinoIcons.airplane, - CupertinoIcons.alarm, - CupertinoIcons.alarm_fill, - CupertinoIcons.alt, - CupertinoIcons.ant, - CupertinoIcons.ant_circle, - CupertinoIcons.ant_circle_fill, - CupertinoIcons.ant_fill, - CupertinoIcons.antenna_radiowaves_left_right, - CupertinoIcons.app, - CupertinoIcons.app_badge, - CupertinoIcons.app_badge_fill, - CupertinoIcons.app_fill, - CupertinoIcons.archivebox, - CupertinoIcons.archivebox_fill, - CupertinoIcons.arrow_2_circlepath, - CupertinoIcons.arrow_2_circlepath_circle, - CupertinoIcons.arrow_2_circlepath_circle_fill, - CupertinoIcons.arrow_2_squarepath, - CupertinoIcons.arrow_3_trianglepath, - CupertinoIcons.arrow_branch, - CupertinoIcons.arrow_clockwise, - CupertinoIcons.arrow_clockwise_circle, - CupertinoIcons.arrow_clockwise_circle_fill, - CupertinoIcons.arrow_counterclockwise, - CupertinoIcons.arrow_counterclockwise_circle, - CupertinoIcons.arrow_counterclockwise_circle_fill, - CupertinoIcons.arrow_down, - CupertinoIcons.arrow_down_circle, - CupertinoIcons.arrow_down_circle_fill, - CupertinoIcons.arrow_down_doc, - CupertinoIcons.arrow_down_doc_fill, - CupertinoIcons.arrow_down_left, - CupertinoIcons.arrow_down_left_circle, - CupertinoIcons.arrow_down_left_circle_fill, - CupertinoIcons.arrow_down_left_square, - CupertinoIcons.arrow_down_left_square_fill, - CupertinoIcons.arrow_down_right, - CupertinoIcons.arrow_down_right_arrow_up_left, - CupertinoIcons.arrow_down_right_circle, - CupertinoIcons.arrow_down_right_circle_fill, - CupertinoIcons.arrow_down_right_square, - CupertinoIcons.arrow_down_right_square_fill, - CupertinoIcons.arrow_down_square, - CupertinoIcons.arrow_down_square_fill, - CupertinoIcons.arrow_down_to_line, - CupertinoIcons.arrow_down_to_line_alt, - CupertinoIcons.arrow_left, - CupertinoIcons.arrow_left_circle, - CupertinoIcons.arrow_left_circle_fill, - CupertinoIcons.arrow_left_right, - CupertinoIcons.arrow_left_right_circle, - CupertinoIcons.arrow_left_right_circle_fill, - CupertinoIcons.arrow_left_right_square, - CupertinoIcons.arrow_left_right_square_fill, - CupertinoIcons.arrow_left_square, - CupertinoIcons.arrow_left_square_fill, - CupertinoIcons.arrow_left_to_line, - CupertinoIcons.arrow_left_to_line_alt, - CupertinoIcons.arrow_merge, - CupertinoIcons.arrow_right, - CupertinoIcons.arrow_right_arrow_left, - CupertinoIcons.arrow_right_arrow_left_circle, - CupertinoIcons.arrow_right_arrow_left_circle_fill, - CupertinoIcons.arrow_right_arrow_left_square, - CupertinoIcons.arrow_right_arrow_left_square_fill, - CupertinoIcons.arrow_right_circle, - CupertinoIcons.arrow_right_circle_fill, - CupertinoIcons.arrow_right_square, - CupertinoIcons.arrow_right_square_fill, - CupertinoIcons.arrow_right_to_line, - CupertinoIcons.arrow_right_to_line_alt, - CupertinoIcons.arrow_swap, - CupertinoIcons.arrow_turn_down_left, - CupertinoIcons.arrow_turn_down_right, - CupertinoIcons.arrow_turn_left_down, - CupertinoIcons.arrow_turn_left_up, - CupertinoIcons.arrow_turn_right_down, - CupertinoIcons.arrow_turn_right_up, - CupertinoIcons.arrow_turn_up_left, - CupertinoIcons.arrow_turn_up_right, - CupertinoIcons.arrow_up, - CupertinoIcons.arrow_up_arrow_down, - CupertinoIcons.arrow_up_arrow_down_circle, - CupertinoIcons.arrow_up_arrow_down_circle_fill, - CupertinoIcons.arrow_up_arrow_down_square, - CupertinoIcons.arrow_up_arrow_down_square_fill, - CupertinoIcons.arrow_up_bin, - CupertinoIcons.arrow_up_bin_fill, - CupertinoIcons.arrow_up_circle, - CupertinoIcons.arrow_up_circle_fill, - CupertinoIcons.arrow_up_doc, - CupertinoIcons.arrow_up_doc_fill, - CupertinoIcons.arrow_up_down, - CupertinoIcons.arrow_up_down_circle, - CupertinoIcons.arrow_up_down_circle_fill, - CupertinoIcons.arrow_up_down_square, - CupertinoIcons.arrow_up_down_square_fill, - CupertinoIcons.arrow_up_left, - CupertinoIcons.arrow_up_left_arrow_down_right, - CupertinoIcons.arrow_up_left_circle, - CupertinoIcons.arrow_up_left_circle_fill, - CupertinoIcons.arrow_up_left_square, - CupertinoIcons.arrow_up_left_square_fill, - CupertinoIcons.arrow_up_right, - CupertinoIcons.arrow_up_right_circle, - CupertinoIcons.arrow_up_right_circle_fill, - CupertinoIcons.arrow_up_right_diamond, - CupertinoIcons.arrow_up_right_diamond_fill, - CupertinoIcons.arrow_up_right_square, - CupertinoIcons.arrow_up_right_square_fill, - CupertinoIcons.arrow_up_square, - CupertinoIcons.arrow_up_square_fill, - CupertinoIcons.arrow_up_to_line, - CupertinoIcons.arrow_up_to_line_alt, - CupertinoIcons.arrow_uturn_down, - CupertinoIcons.arrow_uturn_down_circle, - CupertinoIcons.arrow_uturn_down_circle_fill, - CupertinoIcons.arrow_uturn_down_square, - CupertinoIcons.arrow_uturn_down_square_fill, - CupertinoIcons.arrow_uturn_left, - CupertinoIcons.arrow_uturn_left_circle, - CupertinoIcons.arrow_uturn_left_circle_fill, - CupertinoIcons.arrow_uturn_left_square, - CupertinoIcons.arrow_uturn_left_square_fill, - CupertinoIcons.arrow_uturn_right, - CupertinoIcons.arrow_uturn_right_circle, - CupertinoIcons.arrow_uturn_right_circle_fill, - CupertinoIcons.arrow_uturn_right_square, - CupertinoIcons.arrow_uturn_right_square_fill, - CupertinoIcons.arrow_uturn_up, - CupertinoIcons.arrow_uturn_up_circle, - CupertinoIcons.arrow_uturn_up_circle_fill, - CupertinoIcons.arrow_uturn_up_square, - CupertinoIcons.arrow_uturn_up_square_fill, - CupertinoIcons.arrowshape_turn_up_left, - CupertinoIcons.arrowshape_turn_up_left_2, - CupertinoIcons.arrowshape_turn_up_left_2_fill, - CupertinoIcons.arrowshape_turn_up_left_circle, - CupertinoIcons.arrowshape_turn_up_left_circle_fill, - CupertinoIcons.arrowshape_turn_up_left_fill, - CupertinoIcons.arrowshape_turn_up_right, - CupertinoIcons.arrowshape_turn_up_right_circle, - CupertinoIcons.arrowshape_turn_up_right_circle_fill, - CupertinoIcons.arrowshape_turn_up_right_fill, - CupertinoIcons.arrowtriangle_down, - CupertinoIcons.arrowtriangle_down_circle, - CupertinoIcons.arrowtriangle_down_circle_fill, - CupertinoIcons.arrowtriangle_down_fill, - CupertinoIcons.arrowtriangle_down_square, - CupertinoIcons.arrowtriangle_down_square_fill, - CupertinoIcons.arrowtriangle_left, - CupertinoIcons.arrowtriangle_left_circle, - CupertinoIcons.arrowtriangle_left_circle_fill, - CupertinoIcons.arrowtriangle_left_fill, - CupertinoIcons.arrowtriangle_left_square, - CupertinoIcons.arrowtriangle_left_square_fill, - CupertinoIcons.arrowtriangle_right, - CupertinoIcons.arrowtriangle_right_circle, - CupertinoIcons.arrowtriangle_right_circle_fill, - CupertinoIcons.arrowtriangle_right_fill, - CupertinoIcons.arrowtriangle_right_square, - CupertinoIcons.arrowtriangle_right_square_fill, - CupertinoIcons.arrowtriangle_up, - CupertinoIcons.arrowtriangle_up_circle, - CupertinoIcons.arrowtriangle_up_circle_fill, - CupertinoIcons.arrowtriangle_up_fill, - CupertinoIcons.arrowtriangle_up_square, - CupertinoIcons.arrowtriangle_up_square_fill, - CupertinoIcons.asterisk_circle, - CupertinoIcons.asterisk_circle_fill, - CupertinoIcons.at, - CupertinoIcons.at_badge_minus, - CupertinoIcons.at_badge_plus, - CupertinoIcons.at_circle, - CupertinoIcons.at_circle_fill, - CupertinoIcons.backward, - CupertinoIcons.backward_end, - CupertinoIcons.backward_end_alt, - CupertinoIcons.backward_end_alt_fill, - CupertinoIcons.backward_end_fill, - CupertinoIcons.backward_fill, - CupertinoIcons.badge_plus_radiowaves_right, - CupertinoIcons.bag, - CupertinoIcons.bag_badge_minus, - CupertinoIcons.bag_badge_plus, - CupertinoIcons.bag_fill, - CupertinoIcons.bag_fill_badge_minus, - CupertinoIcons.bag_fill_badge_plus, - CupertinoIcons.bandage, - CupertinoIcons.bandage_fill, - CupertinoIcons.barcode, - CupertinoIcons.barcode_viewfinder, - CupertinoIcons.bars, - CupertinoIcons.battery_0, - CupertinoIcons.battery_100, - CupertinoIcons.battery_25, - CupertinoIcons.bed_double, - CupertinoIcons.bed_double_fill, - CupertinoIcons.bell_circle, - CupertinoIcons.bell_circle_fill, - CupertinoIcons.bell_fill, - CupertinoIcons.bell_slash, - CupertinoIcons.bell_slash_fill, - CupertinoIcons.bin_xmark, - CupertinoIcons.bin_xmark_fill, - CupertinoIcons.bitcoin, - CupertinoIcons.bitcoin_circle, - CupertinoIcons.bitcoin_circle_fill, - CupertinoIcons.bold, - CupertinoIcons.bold_italic_underline, - CupertinoIcons.bold_underline, - CupertinoIcons.bolt, - CupertinoIcons.bolt_badge_a, - CupertinoIcons.bolt_badge_a_fill, - CupertinoIcons.bolt_circle, - CupertinoIcons.bolt_circle_fill, - CupertinoIcons.bolt_fill, - CupertinoIcons.bolt_horizontal, - CupertinoIcons.bolt_horizontal_circle, - CupertinoIcons.bolt_horizontal_circle_fill, - CupertinoIcons.bolt_horizontal_fill, - CupertinoIcons.bolt_slash, - CupertinoIcons.bolt_slash_fill, - CupertinoIcons.book_circle, - CupertinoIcons.book_circle_fill, - CupertinoIcons.book_fill, - CupertinoIcons.bookmark_fill, - CupertinoIcons.briefcase, - CupertinoIcons.briefcase_fill, - CupertinoIcons.bubble_left, - CupertinoIcons.bubble_left_bubble_right, - CupertinoIcons.bubble_left_bubble_right_fill, - CupertinoIcons.bubble_left_fill, - CupertinoIcons.bubble_middle_bottom, - CupertinoIcons.bubble_middle_bottom_fill, - CupertinoIcons.bubble_middle_top, - CupertinoIcons.bubble_middle_top_fill, - CupertinoIcons.bubble_right, - CupertinoIcons.bubble_right_fill, - CupertinoIcons.building_2_fill, - CupertinoIcons.burn, - CupertinoIcons.burst, - CupertinoIcons.burst_fill, - CupertinoIcons.calendar, - CupertinoIcons.calendar_badge_minus, - CupertinoIcons.calendar_badge_plus, - CupertinoIcons.calendar_circle, - CupertinoIcons.calendar_circle_fill, - CupertinoIcons.calendar_today, - CupertinoIcons.camera, - CupertinoIcons.camera_circle, - CupertinoIcons.camera_circle_fill, - CupertinoIcons.camera_fill, - CupertinoIcons.camera_on_rectangle, - CupertinoIcons.camera_on_rectangle_fill, - CupertinoIcons.camera_rotate, - CupertinoIcons.camera_rotate_fill, - CupertinoIcons.camera_viewfinder, - CupertinoIcons.capslock, - CupertinoIcons.capslock_fill, - CupertinoIcons.capsule, - CupertinoIcons.capsule_fill, - CupertinoIcons.captions_bubble, - CupertinoIcons.captions_bubble_fill, - CupertinoIcons.car_fill, - CupertinoIcons.cart, - CupertinoIcons.cart_badge_minus, - CupertinoIcons.cart_badge_plus, - CupertinoIcons.cart_fill, - CupertinoIcons.cart_fill_badge_minus, - CupertinoIcons.cart_fill_badge_plus, - CupertinoIcons.chart_bar, - CupertinoIcons.chart_bar_alt_fill, - CupertinoIcons.chart_bar_circle, - CupertinoIcons.chart_bar_circle_fill, - CupertinoIcons.chart_bar_fill, - CupertinoIcons.chart_bar_square, - CupertinoIcons.chart_bar_square_fill, - CupertinoIcons.chart_pie, - CupertinoIcons.chart_pie_fill, - CupertinoIcons.chat_bubble, - CupertinoIcons.chat_bubble_2, - CupertinoIcons.chat_bubble_2_fill, - CupertinoIcons.chat_bubble_fill, - CupertinoIcons.chat_bubble_text, - CupertinoIcons.chat_bubble_text_fill, - CupertinoIcons.checkmark, - CupertinoIcons.checkmark_alt, - CupertinoIcons.checkmark_alt_circle, - CupertinoIcons.checkmark_alt_circle_fill, - CupertinoIcons.checkmark_circle, - CupertinoIcons.checkmark_circle_fill, - CupertinoIcons.checkmark_rectangle, - CupertinoIcons.checkmark_rectangle_fill, - CupertinoIcons.checkmark_seal, - CupertinoIcons.checkmark_seal_fill, - CupertinoIcons.checkmark_shield, - CupertinoIcons.checkmark_shield_fill, - CupertinoIcons.checkmark_square, - CupertinoIcons.checkmark_square_fill, - CupertinoIcons.chevron_back, - CupertinoIcons.chevron_compact_down, - CupertinoIcons.chevron_compact_left, - CupertinoIcons.chevron_compact_right, - CupertinoIcons.chevron_compact_up, - CupertinoIcons.chevron_down, - CupertinoIcons.chevron_down_circle, - CupertinoIcons.chevron_down_circle_fill, - CupertinoIcons.chevron_down_square, - CupertinoIcons.chevron_down_square_fill, - CupertinoIcons.chevron_forward, - CupertinoIcons.chevron_left, - CupertinoIcons.chevron_left_2, - CupertinoIcons.chevron_left_circle, - CupertinoIcons.chevron_left_circle_fill, - CupertinoIcons.chevron_left_slash_chevron_right, - CupertinoIcons.chevron_left_square, - CupertinoIcons.chevron_left_square_fill, - CupertinoIcons.chevron_right, - CupertinoIcons.chevron_right_2, - CupertinoIcons.chevron_right_circle, - CupertinoIcons.chevron_right_circle_fill, - CupertinoIcons.chevron_right_square, - CupertinoIcons.chevron_right_square_fill, - CupertinoIcons.chevron_up, - CupertinoIcons.chevron_up_chevron_down, - CupertinoIcons.chevron_up_circle, - CupertinoIcons.chevron_up_circle_fill, - CupertinoIcons.chevron_up_square, - CupertinoIcons.chevron_up_square_fill, - CupertinoIcons.circle_bottomthird_split, - CupertinoIcons.circle_fill, - CupertinoIcons.circle_grid_3x3, - CupertinoIcons.circle_grid_3x3_fill, - CupertinoIcons.circle_grid_hex, - CupertinoIcons.circle_grid_hex_fill, - CupertinoIcons.circle_lefthalf_fill, - CupertinoIcons.circle_righthalf_fill, - CupertinoIcons.clear_fill, - CupertinoIcons.clock_fill, - CupertinoIcons.cloud, - CupertinoIcons.cloud_bolt, - CupertinoIcons.cloud_bolt_fill, - CupertinoIcons.cloud_bolt_rain, - CupertinoIcons.cloud_bolt_rain_fill, - CupertinoIcons.cloud_download, - CupertinoIcons.cloud_download_fill, - CupertinoIcons.cloud_drizzle, - CupertinoIcons.cloud_drizzle_fill, - CupertinoIcons.cloud_fill, - CupertinoIcons.cloud_fog, - CupertinoIcons.cloud_fog_fill, - CupertinoIcons.cloud_hail, - CupertinoIcons.cloud_hail_fill, - CupertinoIcons.cloud_heavyrain, - CupertinoIcons.cloud_heavyrain_fill, - CupertinoIcons.cloud_moon, - CupertinoIcons.cloud_moon_bolt, - CupertinoIcons.cloud_moon_bolt_fill, - CupertinoIcons.cloud_moon_fill, - CupertinoIcons.cloud_moon_rain, - CupertinoIcons.cloud_moon_rain_fill, - CupertinoIcons.cloud_rain, - CupertinoIcons.cloud_rain_fill, - CupertinoIcons.cloud_sleet, - CupertinoIcons.cloud_sleet_fill, - CupertinoIcons.cloud_snow, - CupertinoIcons.cloud_snow_fill, - CupertinoIcons.cloud_sun, - CupertinoIcons.cloud_sun_bolt, - CupertinoIcons.cloud_sun_bolt_fill, - CupertinoIcons.cloud_sun_fill, - CupertinoIcons.cloud_sun_rain, - CupertinoIcons.cloud_sun_rain_fill, - CupertinoIcons.cloud_upload, - CupertinoIcons.cloud_upload_fill, - CupertinoIcons.color_filter, - CupertinoIcons.color_filter_fill, - CupertinoIcons.command, - CupertinoIcons.compass, - CupertinoIcons.compass_fill, - CupertinoIcons.control, - CupertinoIcons.creditcard, - CupertinoIcons.creditcard_fill, - CupertinoIcons.crop, - CupertinoIcons.crop_rotate, - CupertinoIcons.cube, - CupertinoIcons.cube_box, - CupertinoIcons.cube_box_fill, - CupertinoIcons.cube_fill, - CupertinoIcons.cursor_rays, - CupertinoIcons.decrease_indent, - CupertinoIcons.decrease_quotelevel, - CupertinoIcons.delete_left, - CupertinoIcons.delete_left_fill, - CupertinoIcons.delete_right, - CupertinoIcons.delete_right_fill, - CupertinoIcons.desktopcomputer, - CupertinoIcons.device_desktop, - CupertinoIcons.device_laptop, - CupertinoIcons.device_phone_landscape, - CupertinoIcons.device_phone_portrait, - CupertinoIcons.dial, - CupertinoIcons.dial_fill, - CupertinoIcons.divide, - CupertinoIcons.divide_circle, - CupertinoIcons.divide_circle_fill, - CupertinoIcons.divide_square, - CupertinoIcons.divide_square_fill, - CupertinoIcons.doc, - CupertinoIcons.doc_append, - CupertinoIcons.doc_chart, - CupertinoIcons.doc_chart_fill, - CupertinoIcons.doc_checkmark, - CupertinoIcons.doc_checkmark_fill, - CupertinoIcons.doc_circle, - CupertinoIcons.doc_circle_fill, - CupertinoIcons.doc_fill, - CupertinoIcons.doc_on_clipboard, - CupertinoIcons.doc_on_clipboard_fill, - CupertinoIcons.doc_on_doc, - CupertinoIcons.doc_on_doc_fill, - CupertinoIcons.doc_person, - CupertinoIcons.doc_person_fill, - CupertinoIcons.doc_plaintext, - CupertinoIcons.doc_richtext, - CupertinoIcons.doc_text, - CupertinoIcons.doc_text_fill, - CupertinoIcons.doc_text_search, - CupertinoIcons.doc_text_viewfinder, - CupertinoIcons.dot_radiowaves_left_right, - CupertinoIcons.dot_radiowaves_right, - CupertinoIcons.dot_square, - CupertinoIcons.dot_square_fill, - CupertinoIcons.download_circle, - CupertinoIcons.download_circle_fill, - CupertinoIcons.drop, - CupertinoIcons.drop_fill, - CupertinoIcons.drop_triangle, - CupertinoIcons.drop_triangle_fill, - CupertinoIcons.ear, - CupertinoIcons.eject, - CupertinoIcons.eject_fill, - CupertinoIcons.ellipses_bubble, - CupertinoIcons.ellipses_bubble_fill, - CupertinoIcons.ellipsis_circle, - CupertinoIcons.ellipsis_circle_fill, - CupertinoIcons.ellipsis_vertical, - CupertinoIcons.ellipsis_vertical_circle, - CupertinoIcons.ellipsis_vertical_circle_fill, - CupertinoIcons.envelope, - CupertinoIcons.envelope_badge, - CupertinoIcons.envelope_badge_fill, - CupertinoIcons.envelope_circle, - CupertinoIcons.envelope_circle_fill, - CupertinoIcons.envelope_fill, - CupertinoIcons.envelope_open, - CupertinoIcons.envelope_open_fill, - CupertinoIcons.equal, - CupertinoIcons.equal_circle, - CupertinoIcons.equal_circle_fill, - CupertinoIcons.equal_square, - CupertinoIcons.equal_square_fill, - CupertinoIcons.escape, - CupertinoIcons.exclamationmark, - CupertinoIcons.exclamationmark_bubble, - CupertinoIcons.exclamationmark_bubble_fill, - CupertinoIcons.exclamationmark_circle, - CupertinoIcons.exclamationmark_circle_fill, - CupertinoIcons.exclamationmark_octagon, - CupertinoIcons.exclamationmark_octagon_fill, - CupertinoIcons.exclamationmark_shield, - CupertinoIcons.exclamationmark_shield_fill, - CupertinoIcons.exclamationmark_square, - CupertinoIcons.exclamationmark_square_fill, - CupertinoIcons.exclamationmark_triangle, - CupertinoIcons.exclamationmark_triangle_fill, - CupertinoIcons.eye_fill, - CupertinoIcons.eye_slash, - CupertinoIcons.eye_slash_fill, - CupertinoIcons.eyedropper, - CupertinoIcons.eyedropper_full, - CupertinoIcons.eyedropper_halffull, - CupertinoIcons.eyeglasses, - CupertinoIcons.f_cursive, - CupertinoIcons.f_cursive_circle, - CupertinoIcons.f_cursive_circle_fill, - CupertinoIcons.film, - CupertinoIcons.film_fill, - CupertinoIcons.flag_circle, - CupertinoIcons.flag_circle_fill, - CupertinoIcons.flag_fill, - CupertinoIcons.flag_slash, - CupertinoIcons.flag_slash_fill, - CupertinoIcons.flame, - CupertinoIcons.flame_fill, - CupertinoIcons.floppy_disk, - CupertinoIcons.flowchart, - CupertinoIcons.flowchart_fill, - CupertinoIcons.folder_badge_minus, - CupertinoIcons.folder_badge_person_crop, - CupertinoIcons.folder_badge_plus, - CupertinoIcons.folder_circle, - CupertinoIcons.folder_circle_fill, - CupertinoIcons.folder_fill, - CupertinoIcons.folder_fill_badge_minus, - CupertinoIcons.folder_fill_badge_person_crop, - CupertinoIcons.folder_fill_badge_plus, - CupertinoIcons.forward_end, - CupertinoIcons.forward_end_alt, - CupertinoIcons.forward_end_alt_fill, - CupertinoIcons.forward_end_fill, - CupertinoIcons.forward_fill, - CupertinoIcons.function, - CupertinoIcons.fx, - CupertinoIcons.gamecontroller, - CupertinoIcons.gamecontroller_alt_fill, - CupertinoIcons.gamecontroller_fill, - CupertinoIcons.gauge, - CupertinoIcons.gauge_badge_minus, - CupertinoIcons.gauge_badge_plus, - CupertinoIcons.gear_alt, - CupertinoIcons.gear_alt_fill, - CupertinoIcons.gift, - CupertinoIcons.gift_alt, - CupertinoIcons.gift_alt_fill, - CupertinoIcons.gift_fill, - CupertinoIcons.globe, - CupertinoIcons.gobackward, - CupertinoIcons.gobackward_10, - CupertinoIcons.gobackward_15, - CupertinoIcons.gobackward_30, - CupertinoIcons.gobackward_45, - CupertinoIcons.gobackward_60, - CupertinoIcons.gobackward_75, - CupertinoIcons.gobackward_90, - CupertinoIcons.gobackward_minus, - CupertinoIcons.goforward, - CupertinoIcons.goforward_10, - CupertinoIcons.goforward_15, - CupertinoIcons.goforward_30, - CupertinoIcons.goforward_45, - CupertinoIcons.goforward_60, - CupertinoIcons.goforward_75, - CupertinoIcons.goforward_90, - CupertinoIcons.goforward_plus, - CupertinoIcons.graph_circle, - CupertinoIcons.graph_circle_fill, - CupertinoIcons.graph_square, - CupertinoIcons.graph_square_fill, - CupertinoIcons.greaterthan, - CupertinoIcons.greaterthan_circle, - CupertinoIcons.greaterthan_circle_fill, - CupertinoIcons.greaterthan_square, - CupertinoIcons.greaterthan_square_fill, - CupertinoIcons.grid, - CupertinoIcons.grid_circle, - CupertinoIcons.grid_circle_fill, - CupertinoIcons.guitars, - CupertinoIcons.hammer, - CupertinoIcons.hammer_fill, - CupertinoIcons.hand_draw, - CupertinoIcons.hand_draw_fill, - CupertinoIcons.hand_point_left, - CupertinoIcons.hand_point_left_fill, - CupertinoIcons.hand_point_right, - CupertinoIcons.hand_point_right_fill, - CupertinoIcons.hand_raised, - CupertinoIcons.hand_raised_fill, - CupertinoIcons.hand_raised_slash, - CupertinoIcons.hand_raised_slash_fill, - CupertinoIcons.hand_thumbsdown, - CupertinoIcons.hand_thumbsdown_fill, - CupertinoIcons.hand_thumbsup, - CupertinoIcons.hand_thumbsup_fill, - CupertinoIcons.hare, - CupertinoIcons.hare_fill, - CupertinoIcons.headphones, - CupertinoIcons.heart_circle, - CupertinoIcons.heart_circle_fill, - CupertinoIcons.heart_fill, - CupertinoIcons.heart_slash, - CupertinoIcons.heart_slash_circle, - CupertinoIcons.heart_slash_circle_fill, - CupertinoIcons.heart_slash_fill, - CupertinoIcons.helm, - CupertinoIcons.hexagon, - CupertinoIcons.hexagon_fill, - CupertinoIcons.hifispeaker, - CupertinoIcons.hifispeaker_fill, - CupertinoIcons.hourglass, - CupertinoIcons.hourglass_bottomhalf_fill, - CupertinoIcons.hourglass_tophalf_fill, - CupertinoIcons.house, - CupertinoIcons.house_alt, - CupertinoIcons.house_alt_fill, - CupertinoIcons.house_fill, - CupertinoIcons.hurricane, - CupertinoIcons.increase_indent, - CupertinoIcons.increase_quotelevel, - CupertinoIcons.infinite, - CupertinoIcons.info_circle, - CupertinoIcons.info_circle_fill, - CupertinoIcons.italic, - CupertinoIcons.keyboard, - CupertinoIcons.keyboard_chevron_compact_down, - CupertinoIcons.largecircle_fill_circle, - CupertinoIcons.lasso, - CupertinoIcons.layers, - CupertinoIcons.layers_alt, - CupertinoIcons.layers_alt_fill, - CupertinoIcons.layers_fill, - CupertinoIcons.leaf_arrow_circlepath, - CupertinoIcons.lessthan, - CupertinoIcons.lessthan_circle, - CupertinoIcons.lessthan_circle_fill, - CupertinoIcons.lessthan_square, - CupertinoIcons.lessthan_square_fill, - CupertinoIcons.light_max, - CupertinoIcons.light_min, - CupertinoIcons.lightbulb, - CupertinoIcons.lightbulb_fill, - CupertinoIcons.lightbulb_slash, - CupertinoIcons.lightbulb_slash_fill, - CupertinoIcons.line_horizontal_3, - CupertinoIcons.line_horizontal_3_decrease, - CupertinoIcons.line_horizontal_3_decrease_circle, - CupertinoIcons.line_horizontal_3_decrease_circle_fill, - CupertinoIcons.link, - CupertinoIcons.link_circle, - CupertinoIcons.link_circle_fill, - CupertinoIcons.list_bullet, - CupertinoIcons.list_bullet_below_rectangle, - CupertinoIcons.list_bullet_indent, - CupertinoIcons.list_dash, - CupertinoIcons.list_number, - CupertinoIcons.list_number_rtl, - CupertinoIcons.location_circle, - CupertinoIcons.location_circle_fill, - CupertinoIcons.location_fill, - CupertinoIcons.location_north, - CupertinoIcons.location_north_fill, - CupertinoIcons.location_north_line, - CupertinoIcons.location_north_line_fill, - CupertinoIcons.location_slash, - CupertinoIcons.location_slash_fill, - CupertinoIcons.lock, - CupertinoIcons.lock_circle, - CupertinoIcons.lock_circle_fill, - CupertinoIcons.lock_fill, - CupertinoIcons.lock_open, - CupertinoIcons.lock_open_fill, - CupertinoIcons.lock_rotation, - CupertinoIcons.lock_rotation_open, - CupertinoIcons.lock_shield, - CupertinoIcons.lock_shield_fill, - CupertinoIcons.lock_slash, - CupertinoIcons.lock_slash_fill, - CupertinoIcons.macwindow, - CupertinoIcons.map, - CupertinoIcons.map_fill, - CupertinoIcons.map_pin, - CupertinoIcons.map_pin_ellipse, - CupertinoIcons.map_pin_slash, - CupertinoIcons.memories, - CupertinoIcons.memories_badge_minus, - CupertinoIcons.memories_badge_plus, - CupertinoIcons.metronome, - CupertinoIcons.mic_circle, - CupertinoIcons.mic_circle_fill, - CupertinoIcons.mic_fill, - CupertinoIcons.mic_slash, - CupertinoIcons.mic_slash_fill, - CupertinoIcons.minus, - CupertinoIcons.minus_circle, - CupertinoIcons.minus_circle_fill, - CupertinoIcons.minus_rectangle, - CupertinoIcons.minus_rectangle_fill, - CupertinoIcons.minus_slash_plus, - CupertinoIcons.minus_square, - CupertinoIcons.minus_square_fill, - CupertinoIcons.money_dollar, - CupertinoIcons.money_dollar_circle, - CupertinoIcons.money_dollar_circle_fill, - CupertinoIcons.money_euro, - CupertinoIcons.money_euro_circle, - CupertinoIcons.money_euro_circle_fill, - CupertinoIcons.money_pound, - CupertinoIcons.money_pound_circle, - CupertinoIcons.money_pound_circle_fill, - CupertinoIcons.money_rubl, - CupertinoIcons.money_rubl_circle, - CupertinoIcons.money_rubl_circle_fill, - CupertinoIcons.money_yen, - CupertinoIcons.money_yen_circle, - CupertinoIcons.money_yen_circle_fill, - CupertinoIcons.moon, - CupertinoIcons.moon_circle, - CupertinoIcons.moon_circle_fill, - CupertinoIcons.moon_fill, - CupertinoIcons.moon_stars, - CupertinoIcons.moon_stars_fill, - CupertinoIcons.moon_zzz, - CupertinoIcons.moon_zzz_fill, - CupertinoIcons.move, - CupertinoIcons.multiply, - CupertinoIcons.multiply_circle, - CupertinoIcons.multiply_circle_fill, - CupertinoIcons.multiply_square, - CupertinoIcons.multiply_square_fill, - CupertinoIcons.music_albums, - CupertinoIcons.music_albums_fill, - CupertinoIcons.music_house, - CupertinoIcons.music_house_fill, - CupertinoIcons.music_mic, - CupertinoIcons.music_note_2, - CupertinoIcons.music_note_list, - CupertinoIcons.nosign, - CupertinoIcons.number, - CupertinoIcons.number_circle, - CupertinoIcons.number_circle_fill, - CupertinoIcons.number_square, - CupertinoIcons.number_square_fill, - CupertinoIcons.option, - CupertinoIcons.paintbrush, - CupertinoIcons.paintbrush_fill, - CupertinoIcons.pano, - CupertinoIcons.pano_fill, - CupertinoIcons.paperclip, - CupertinoIcons.paperplane, - CupertinoIcons.paperplane_fill, - CupertinoIcons.paragraph, - CupertinoIcons.pause_circle, - CupertinoIcons.pause_circle_fill, - CupertinoIcons.pause_fill, - CupertinoIcons.pause_rectangle, - CupertinoIcons.pause_rectangle_fill, - CupertinoIcons.pencil_circle, - CupertinoIcons.pencil_circle_fill, - CupertinoIcons.pencil_ellipsis_rectangle, - CupertinoIcons.pencil_outline, - CupertinoIcons.pencil_slash, - CupertinoIcons.percent, - CupertinoIcons.person_2, - CupertinoIcons.person_2_alt, - CupertinoIcons.person_2_fill, - CupertinoIcons.person_2_square_stack, - CupertinoIcons.person_2_square_stack_fill, - CupertinoIcons.person_3, - CupertinoIcons.person_3_fill, - CupertinoIcons.person_alt, - CupertinoIcons.person_alt_circle, - CupertinoIcons.person_alt_circle_fill, - CupertinoIcons.person_badge_minus, - CupertinoIcons.person_badge_minus_fill, - CupertinoIcons.person_badge_plus, - CupertinoIcons.person_badge_plus_fill, - CupertinoIcons.person_circle, - CupertinoIcons.person_circle_fill, - CupertinoIcons.person_crop_circle, - CupertinoIcons.person_crop_circle_badge_checkmark, - CupertinoIcons.person_crop_circle_badge_exclam, - CupertinoIcons.person_crop_circle_badge_minus, - CupertinoIcons.person_crop_circle_badge_plus, - CupertinoIcons.person_crop_circle_badge_xmark, - CupertinoIcons.person_crop_circle_fill, - CupertinoIcons.person_crop_circle_fill_badge_checkmark, - CupertinoIcons.person_crop_circle_fill_badge_exclam, - CupertinoIcons.person_crop_circle_fill_badge_minus, - CupertinoIcons.person_crop_circle_fill_badge_plus, - CupertinoIcons.person_crop_circle_fill_badge_xmark, - CupertinoIcons.person_crop_rectangle, - CupertinoIcons.person_crop_rectangle_fill, - CupertinoIcons.person_crop_square, - CupertinoIcons.person_crop_square_fill, - CupertinoIcons.person_fill, - CupertinoIcons.personalhotspot, - CupertinoIcons.perspective, - CupertinoIcons.phone_arrow_down_left, - CupertinoIcons.phone_arrow_right, - CupertinoIcons.phone_arrow_up_right, - CupertinoIcons.phone_badge_plus, - CupertinoIcons.phone_circle, - CupertinoIcons.phone_circle_fill, - CupertinoIcons.phone_down, - CupertinoIcons.phone_down_circle, - CupertinoIcons.phone_down_circle_fill, - CupertinoIcons.phone_down_fill, - CupertinoIcons.phone_fill, - CupertinoIcons.phone_fill_arrow_down_left, - CupertinoIcons.phone_fill_arrow_right, - CupertinoIcons.phone_fill_arrow_up_right, - CupertinoIcons.phone_fill_badge_plus, - CupertinoIcons.photo, - CupertinoIcons.photo_fill, - CupertinoIcons.photo_fill_on_rectangle_fill, - CupertinoIcons.photo_on_rectangle, - CupertinoIcons.piano, - CupertinoIcons.pin, - CupertinoIcons.pin_fill, - CupertinoIcons.pin_slash, - CupertinoIcons.pin_slash_fill, - CupertinoIcons.placemark, - CupertinoIcons.placemark_fill, - CupertinoIcons.play, - CupertinoIcons.play_circle, - CupertinoIcons.play_circle_fill, - CupertinoIcons.play_fill, - CupertinoIcons.play_rectangle, - CupertinoIcons.play_rectangle_fill, - CupertinoIcons.playpause, - CupertinoIcons.playpause_fill, - CupertinoIcons.plus, - CupertinoIcons.plus_app, - CupertinoIcons.plus_app_fill, - CupertinoIcons.plus_bubble, - CupertinoIcons.plus_bubble_fill, - CupertinoIcons.plus_circle, - CupertinoIcons.plus_circle_fill, - CupertinoIcons.plus_rectangle, - CupertinoIcons.plus_rectangle_fill, - CupertinoIcons.plus_rectangle_fill_on_rectangle_fill, - CupertinoIcons.plus_rectangle_on_rectangle, - CupertinoIcons.plus_slash_minus, - CupertinoIcons.plus_square, - CupertinoIcons.plus_square_fill, - CupertinoIcons.plus_square_fill_on_square_fill, - CupertinoIcons.plus_square_on_square, - CupertinoIcons.plusminus, - CupertinoIcons.plusminus_circle, - CupertinoIcons.plusminus_circle_fill, - CupertinoIcons.power, - CupertinoIcons.printer, - CupertinoIcons.printer_fill, - CupertinoIcons.projective, - CupertinoIcons.purchased, - CupertinoIcons.purchased_circle, - CupertinoIcons.purchased_circle_fill, - CupertinoIcons.qrcode, - CupertinoIcons.qrcode_viewfinder, - CupertinoIcons.question, - CupertinoIcons.question_circle, - CupertinoIcons.question_circle_fill, - CupertinoIcons.question_diamond, - CupertinoIcons.question_diamond_fill, - CupertinoIcons.question_square, - CupertinoIcons.question_square_fill, - CupertinoIcons.quote_bubble, - CupertinoIcons.quote_bubble_fill, - CupertinoIcons.radiowaves_left, - CupertinoIcons.radiowaves_right, - CupertinoIcons.rays, - CupertinoIcons.recordingtape, - CupertinoIcons.rectangle, - CupertinoIcons.rectangle_3_offgrid, - CupertinoIcons.rectangle_3_offgrid_fill, - CupertinoIcons.rectangle_arrow_up_right_arrow_down_left, - CupertinoIcons.rectangle_arrow_up_right_arrow_down_left_slash, - CupertinoIcons.rectangle_badge_checkmark, - CupertinoIcons.rectangle_badge_xmark, - CupertinoIcons.rectangle_compress_vertical, - CupertinoIcons.rectangle_dock, - CupertinoIcons.rectangle_expand_vertical, - CupertinoIcons.rectangle_fill, - CupertinoIcons.rectangle_fill_badge_checkmark, - CupertinoIcons.rectangle_fill_badge_xmark, - CupertinoIcons.rectangle_fill_on_rectangle_angled_fill, - CupertinoIcons.rectangle_fill_on_rectangle_fill, - CupertinoIcons.rectangle_grid_1x2, - CupertinoIcons.rectangle_grid_1x2_fill, - CupertinoIcons.rectangle_grid_2x2, - CupertinoIcons.rectangle_grid_2x2_fill, - CupertinoIcons.rectangle_grid_3x2, - CupertinoIcons.rectangle_grid_3x2_fill, - CupertinoIcons.rectangle_on_rectangle, - CupertinoIcons.rectangle_on_rectangle_angled, - CupertinoIcons.rectangle_paperclip, - CupertinoIcons.rectangle_split_3x1, - CupertinoIcons.rectangle_split_3x1_fill, - CupertinoIcons.rectangle_split_3x3, - CupertinoIcons.rectangle_split_3x3_fill, - CupertinoIcons.rectangle_stack, - CupertinoIcons.rectangle_stack_badge_minus, - CupertinoIcons.rectangle_stack_badge_person_crop, - CupertinoIcons.rectangle_stack_badge_plus, - CupertinoIcons.rectangle_stack_fill, - CupertinoIcons.rectangle_stack_fill_badge_minus, - CupertinoIcons.rectangle_stack_fill_badge_person_crop, - CupertinoIcons.rectangle_stack_fill_badge_plus, - CupertinoIcons.rectangle_stack_person_crop, - CupertinoIcons.rectangle_stack_person_crop_fill, - CupertinoIcons.repeat, - CupertinoIcons.repeat_1, - CupertinoIcons.resize, - CupertinoIcons.resize_h, - CupertinoIcons.resize_v, - CupertinoIcons.return_icon, - CupertinoIcons.rhombus, - CupertinoIcons.rhombus_fill, - CupertinoIcons.rocket, - CupertinoIcons.rocket_fill, - CupertinoIcons.rosette, - CupertinoIcons.rotate_left, - CupertinoIcons.rotate_left_fill, - CupertinoIcons.rotate_right, - CupertinoIcons.rotate_right_fill, - CupertinoIcons.scissors, - CupertinoIcons.scissors_alt, - CupertinoIcons.scope, - CupertinoIcons.scribble, - CupertinoIcons.search_circle, - CupertinoIcons.search_circle_fill, - CupertinoIcons.selection_pin_in_out, - CupertinoIcons.shield, - CupertinoIcons.shield_fill, - CupertinoIcons.shield_lefthalf_fill, - CupertinoIcons.shield_slash, - CupertinoIcons.shield_slash_fill, - CupertinoIcons.shift, - CupertinoIcons.shift_fill, - CupertinoIcons.sidebar_left, - CupertinoIcons.sidebar_right, - CupertinoIcons.signature, - CupertinoIcons.skew, - CupertinoIcons.slash_circle, - CupertinoIcons.slash_circle_fill, - CupertinoIcons.slider_horizontal_3, - CupertinoIcons.slider_horizontal_below_rectangle, - CupertinoIcons.slowmo, - CupertinoIcons.smallcircle_circle, - CupertinoIcons.smallcircle_circle_fill, - CupertinoIcons.smallcircle_fill_circle, - CupertinoIcons.smallcircle_fill_circle_fill, - CupertinoIcons.smiley, - CupertinoIcons.smiley_fill, - CupertinoIcons.smoke, - CupertinoIcons.smoke_fill, - CupertinoIcons.snow, - CupertinoIcons.sort_down, - CupertinoIcons.sort_down_circle, - CupertinoIcons.sort_down_circle_fill, - CupertinoIcons.sort_up, - CupertinoIcons.sort_up_circle, - CupertinoIcons.sort_up_circle_fill, - CupertinoIcons.sparkles, - CupertinoIcons.speaker, - CupertinoIcons.speaker_1, - CupertinoIcons.speaker_1_fill, - CupertinoIcons.speaker_2, - CupertinoIcons.speaker_2_fill, - CupertinoIcons.speaker_3, - CupertinoIcons.speaker_3_fill, - CupertinoIcons.speaker_fill, - CupertinoIcons.speaker_slash, - CupertinoIcons.speaker_slash_fill, - CupertinoIcons.speaker_slash_fill_rtl, - CupertinoIcons.speaker_slash_rtl, - CupertinoIcons.speaker_zzz, - CupertinoIcons.speaker_zzz_fill, - CupertinoIcons.speaker_zzz_fill_rtl, - CupertinoIcons.speaker_zzz_rtl, - CupertinoIcons.speedometer, - CupertinoIcons.sportscourt, - CupertinoIcons.sportscourt_fill, - CupertinoIcons.square, - CupertinoIcons.square_arrow_down, - CupertinoIcons.square_arrow_down_fill, - CupertinoIcons.square_arrow_down_on_square, - CupertinoIcons.square_arrow_down_on_square_fill, - CupertinoIcons.square_arrow_left, - CupertinoIcons.square_arrow_left_fill, - CupertinoIcons.square_arrow_right, - CupertinoIcons.square_arrow_right_fill, - CupertinoIcons.square_arrow_up, - CupertinoIcons.square_arrow_up_fill, - CupertinoIcons.square_arrow_up_on_square, - CupertinoIcons.square_arrow_up_on_square_fill, - CupertinoIcons.square_favorites, - CupertinoIcons.square_favorites_alt, - CupertinoIcons.square_favorites_alt_fill, - CupertinoIcons.square_favorites_fill, - CupertinoIcons.square_fill, - CupertinoIcons.square_fill_line_vertical_square, - CupertinoIcons.square_fill_line_vertical_square_fill, - CupertinoIcons.square_fill_on_circle_fill, - CupertinoIcons.square_fill_on_square_fill, - CupertinoIcons.square_grid_2x2, - CupertinoIcons.square_grid_2x2_fill, - CupertinoIcons.square_grid_3x2, - CupertinoIcons.square_grid_3x2_fill, - CupertinoIcons.square_grid_4x3_fill, - CupertinoIcons.square_lefthalf_fill, - CupertinoIcons.square_line_vertical_square, - CupertinoIcons.square_line_vertical_square_fill, - CupertinoIcons.square_list, - CupertinoIcons.square_list_fill, - CupertinoIcons.square_on_circle, - CupertinoIcons.square_on_square, - CupertinoIcons.square_pencil, - CupertinoIcons.square_pencil_fill, - CupertinoIcons.square_righthalf_fill, - CupertinoIcons.square_split_1x2, - CupertinoIcons.square_split_1x2_fill, - CupertinoIcons.square_split_2x1, - CupertinoIcons.square_split_2x1_fill, - CupertinoIcons.square_split_2x2, - CupertinoIcons.square_split_2x2_fill, - CupertinoIcons.square_stack, - CupertinoIcons.square_stack_3d_down_dottedline, - CupertinoIcons.square_stack_3d_down_right, - CupertinoIcons.square_stack_3d_down_right_fill, - CupertinoIcons.square_stack_3d_up, - CupertinoIcons.square_stack_3d_up_fill, - CupertinoIcons.square_stack_3d_up_slash, - CupertinoIcons.square_stack_3d_up_slash_fill, - CupertinoIcons.square_stack_fill, - CupertinoIcons.squares_below_rectangle, - CupertinoIcons.star, - CupertinoIcons.star_circle, - CupertinoIcons.star_circle_fill, - CupertinoIcons.star_fill, - CupertinoIcons.star_lefthalf_fill, - CupertinoIcons.star_slash, - CupertinoIcons.star_slash_fill, - CupertinoIcons.staroflife, - CupertinoIcons.staroflife_fill, - CupertinoIcons.stop, - CupertinoIcons.stop_circle, - CupertinoIcons.stop_circle_fill, - CupertinoIcons.stop_fill, - CupertinoIcons.stopwatch, - CupertinoIcons.stopwatch_fill, - CupertinoIcons.strikethrough, - CupertinoIcons.suit_club, - CupertinoIcons.suit_club_fill, - CupertinoIcons.suit_diamond, - CupertinoIcons.suit_diamond_fill, - CupertinoIcons.suit_heart, - CupertinoIcons.suit_heart_fill, - CupertinoIcons.suit_spade, - CupertinoIcons.suit_spade_fill, - CupertinoIcons.sum, - CupertinoIcons.sun_dust, - CupertinoIcons.sun_dust_fill, - CupertinoIcons.sun_haze, - CupertinoIcons.sun_haze_fill, - CupertinoIcons.sun_max, - CupertinoIcons.sun_max_fill, - CupertinoIcons.sun_min, - CupertinoIcons.sun_min_fill, - CupertinoIcons.sunrise, - CupertinoIcons.sunrise_fill, - CupertinoIcons.sunset, - CupertinoIcons.sunset_fill, - CupertinoIcons.t_bubble, - CupertinoIcons.t_bubble_fill, - CupertinoIcons.table, - CupertinoIcons.table_badge_more, - CupertinoIcons.table_badge_more_fill, - CupertinoIcons.table_fill, - CupertinoIcons.tag_circle, - CupertinoIcons.tag_circle_fill, - CupertinoIcons.tag_fill, - CupertinoIcons.text_aligncenter, - CupertinoIcons.text_alignleft, - CupertinoIcons.text_alignright, - CupertinoIcons.text_append, - CupertinoIcons.text_badge_checkmark, - CupertinoIcons.text_badge_minus, - CupertinoIcons.text_badge_plus, - CupertinoIcons.text_badge_star, - CupertinoIcons.text_badge_xmark, - CupertinoIcons.text_bubble, - CupertinoIcons.text_bubble_fill, - CupertinoIcons.text_cursor, - CupertinoIcons.text_insert, - CupertinoIcons.text_justify, - CupertinoIcons.text_justifyleft, - CupertinoIcons.text_justifyright, - CupertinoIcons.text_quote, - CupertinoIcons.textbox, - CupertinoIcons.textformat, - CupertinoIcons.textformat_123, - CupertinoIcons.textformat_abc, - CupertinoIcons.textformat_abc_dottedunderline, - CupertinoIcons.textformat_alt, - CupertinoIcons.textformat_size, - CupertinoIcons.textformat_subscript, - CupertinoIcons.textformat_superscript, - CupertinoIcons.thermometer, - CupertinoIcons.thermometer_snowflake, - CupertinoIcons.thermometer_sun, - CupertinoIcons.ticket, - CupertinoIcons.ticket_fill, - CupertinoIcons.tickets, - CupertinoIcons.tickets_fill, - CupertinoIcons.timelapse, - CupertinoIcons.timer, - CupertinoIcons.timer_fill, - CupertinoIcons.today, - CupertinoIcons.today_fill, - CupertinoIcons.tornado, - CupertinoIcons.tortoise, - CupertinoIcons.tortoise_fill, - CupertinoIcons.tram_fill, - CupertinoIcons.trash, - CupertinoIcons.trash_circle, - CupertinoIcons.trash_circle_fill, - CupertinoIcons.trash_fill, - CupertinoIcons.trash_slash, - CupertinoIcons.trash_slash_fill, - CupertinoIcons.tray, - CupertinoIcons.tray_2, - CupertinoIcons.tray_2_fill, - CupertinoIcons.tray_arrow_down, - CupertinoIcons.tray_arrow_down_fill, - CupertinoIcons.tray_arrow_up, - CupertinoIcons.tray_arrow_up_fill, - CupertinoIcons.tray_fill, - CupertinoIcons.tray_full, - CupertinoIcons.tray_full_fill, - CupertinoIcons.tree, - CupertinoIcons.triangle, - CupertinoIcons.triangle_fill, - CupertinoIcons.triangle_lefthalf_fill, - CupertinoIcons.triangle_righthalf_fill, - CupertinoIcons.tropicalstorm, - CupertinoIcons.tuningfork, - CupertinoIcons.tv, - CupertinoIcons.tv_circle, - CupertinoIcons.tv_circle_fill, - CupertinoIcons.tv_fill, - CupertinoIcons.tv_music_note, - CupertinoIcons.tv_music_note_fill, - CupertinoIcons.uiwindow_split_2x1, - CupertinoIcons.umbrella, - CupertinoIcons.umbrella_fill, - CupertinoIcons.underline, - CupertinoIcons.upload_circle, - CupertinoIcons.upload_circle_fill, - CupertinoIcons.videocam, - CupertinoIcons.videocam_circle, - CupertinoIcons.videocam_circle_fill, - CupertinoIcons.videocam_fill, - CupertinoIcons.view_2d, - CupertinoIcons.view_3d, - CupertinoIcons.viewfinder, - CupertinoIcons.viewfinder_circle, - CupertinoIcons.viewfinder_circle_fill, - CupertinoIcons.wand_rays, - CupertinoIcons.wand_rays_inverse, - CupertinoIcons.wand_stars, - CupertinoIcons.wand_stars_inverse, - CupertinoIcons.waveform, - CupertinoIcons.waveform_circle, - CupertinoIcons.waveform_circle_fill, - CupertinoIcons.waveform_path, - CupertinoIcons.waveform_path_badge_minus, - CupertinoIcons.waveform_path_badge_plus, - CupertinoIcons.waveform_path_ecg, - CupertinoIcons.wifi, - CupertinoIcons.wifi_exclamationmark, - CupertinoIcons.wifi_slash, - CupertinoIcons.wind, - CupertinoIcons.wind_snow, - CupertinoIcons.wrench, - CupertinoIcons.wrench_fill, - CupertinoIcons.xmark, - CupertinoIcons.xmark_circle, - CupertinoIcons.xmark_circle_fill, - CupertinoIcons.xmark_octagon, - CupertinoIcons.xmark_octagon_fill, - CupertinoIcons.xmark_rectangle, - CupertinoIcons.xmark_rectangle_fill, - CupertinoIcons.xmark_seal, - CupertinoIcons.xmark_seal_fill, - CupertinoIcons.xmark_shield, - CupertinoIcons.xmark_shield_fill, - CupertinoIcons.xmark_square, - CupertinoIcons.xmark_square_fill, - CupertinoIcons.zoom_in, - CupertinoIcons.zoom_out, - CupertinoIcons.zzz -]..sort(_compare)); +final List icons = List.unmodifiable( + [ + CupertinoIcons.left_chevron, + CupertinoIcons.right_chevron, + CupertinoIcons.share, + CupertinoIcons.share_solid, + CupertinoIcons.book, + CupertinoIcons.book_solid, + CupertinoIcons.bookmark, + CupertinoIcons.bookmark_solid, + CupertinoIcons.info, + CupertinoIcons.reply, + CupertinoIcons.conversation_bubble, + CupertinoIcons.profile_circled, + CupertinoIcons.plus_circled, + CupertinoIcons.minus_circled, + CupertinoIcons.flag, + CupertinoIcons.search, + CupertinoIcons.check_mark, + CupertinoIcons.check_mark_circled, + CupertinoIcons.check_mark_circled_solid, + CupertinoIcons.circle, + CupertinoIcons.circle_filled, + CupertinoIcons.back, + CupertinoIcons.forward, + CupertinoIcons.home, + CupertinoIcons.shopping_cart, + CupertinoIcons.ellipsis, + CupertinoIcons.phone, + CupertinoIcons.phone_solid, + CupertinoIcons.down_arrow, + CupertinoIcons.up_arrow, + CupertinoIcons.battery_charging, + CupertinoIcons.battery_empty, + CupertinoIcons.battery_full, + CupertinoIcons.battery_75_percent, + CupertinoIcons.battery_25_percent, + CupertinoIcons.bluetooth, + CupertinoIcons.restart, + CupertinoIcons.reply_all, + CupertinoIcons.reply_thick_solid, + CupertinoIcons.share_up, + CupertinoIcons.shuffle, + CupertinoIcons.shuffle_medium, + CupertinoIcons.shuffle_thick, + CupertinoIcons.photo_camera, + CupertinoIcons.photo_camera_solid, + CupertinoIcons.video_camera, + CupertinoIcons.video_camera_solid, + CupertinoIcons.switch_camera, + CupertinoIcons.switch_camera_solid, + CupertinoIcons.collections, + CupertinoIcons.collections_solid, + CupertinoIcons.folder, + CupertinoIcons.folder_solid, + CupertinoIcons.folder_open, + CupertinoIcons.delete, + CupertinoIcons.delete_solid, + CupertinoIcons.delete_simple, + CupertinoIcons.pen, + CupertinoIcons.pencil, + CupertinoIcons.create, + CupertinoIcons.create_solid, + CupertinoIcons.refresh, + CupertinoIcons.refresh_circled, + CupertinoIcons.refresh_circled_solid, + CupertinoIcons.refresh_thin, + CupertinoIcons.refresh_thick, + CupertinoIcons.refresh_bold, + CupertinoIcons.clear_thick, + CupertinoIcons.clear_thick_circled, + CupertinoIcons.clear, + CupertinoIcons.clear_circled, + CupertinoIcons.clear_circled_solid, + CupertinoIcons.add, + CupertinoIcons.add_circled, + CupertinoIcons.add_circled_solid, + CupertinoIcons.gear, + CupertinoIcons.gear_solid, + CupertinoIcons.gear_big, + CupertinoIcons.settings, + CupertinoIcons.settings_solid, + CupertinoIcons.music_note, + CupertinoIcons.double_music_note, + CupertinoIcons.play_arrow, + CupertinoIcons.play_arrow_solid, + CupertinoIcons.pause, + CupertinoIcons.pause_solid, + CupertinoIcons.loop, + CupertinoIcons.loop_thick, + CupertinoIcons.volume_down, + CupertinoIcons.volume_mute, + CupertinoIcons.volume_off, + CupertinoIcons.volume_up, + CupertinoIcons.fullscreen, + CupertinoIcons.fullscreen_exit, + CupertinoIcons.mic_off, + CupertinoIcons.mic, + CupertinoIcons.mic_solid, + CupertinoIcons.clock, + CupertinoIcons.clock_solid, + CupertinoIcons.time, + CupertinoIcons.time_solid, + CupertinoIcons.padlock, + CupertinoIcons.padlock_solid, + CupertinoIcons.eye, + CupertinoIcons.eye_solid, + CupertinoIcons.person, + CupertinoIcons.person_solid, + CupertinoIcons.person_add, + CupertinoIcons.person_add_solid, + CupertinoIcons.group, + CupertinoIcons.group_solid, + CupertinoIcons.mail, + CupertinoIcons.mail_solid, + CupertinoIcons.location, + CupertinoIcons.location_solid, + CupertinoIcons.tag, + CupertinoIcons.tag_solid, + CupertinoIcons.tags, + CupertinoIcons.tags_solid, + CupertinoIcons.bus, + CupertinoIcons.car, + CupertinoIcons.car_detailed, + CupertinoIcons.train_style_one, + CupertinoIcons.train_style_two, + CupertinoIcons.paw, + CupertinoIcons.paw_solid, + CupertinoIcons.game_controller, + CupertinoIcons.game_controller_solid, + CupertinoIcons.lab_flask, + CupertinoIcons.lab_flask_solid, + CupertinoIcons.heart, + CupertinoIcons.heart_solid, + CupertinoIcons.bell, + CupertinoIcons.bell_solid, + CupertinoIcons.news, + CupertinoIcons.news_solid, + CupertinoIcons.brightness, + CupertinoIcons.brightness_solid, + CupertinoIcons.airplane, + CupertinoIcons.alarm, + CupertinoIcons.alarm_fill, + CupertinoIcons.alt, + CupertinoIcons.ant, + CupertinoIcons.ant_circle, + CupertinoIcons.ant_circle_fill, + CupertinoIcons.ant_fill, + CupertinoIcons.antenna_radiowaves_left_right, + CupertinoIcons.app, + CupertinoIcons.app_badge, + CupertinoIcons.app_badge_fill, + CupertinoIcons.app_fill, + CupertinoIcons.archivebox, + CupertinoIcons.archivebox_fill, + CupertinoIcons.arrow_2_circlepath, + CupertinoIcons.arrow_2_circlepath_circle, + CupertinoIcons.arrow_2_circlepath_circle_fill, + CupertinoIcons.arrow_2_squarepath, + CupertinoIcons.arrow_3_trianglepath, + CupertinoIcons.arrow_branch, + CupertinoIcons.arrow_clockwise, + CupertinoIcons.arrow_clockwise_circle, + CupertinoIcons.arrow_clockwise_circle_fill, + CupertinoIcons.arrow_counterclockwise, + CupertinoIcons.arrow_counterclockwise_circle, + CupertinoIcons.arrow_counterclockwise_circle_fill, + CupertinoIcons.arrow_down, + CupertinoIcons.arrow_down_circle, + CupertinoIcons.arrow_down_circle_fill, + CupertinoIcons.arrow_down_doc, + CupertinoIcons.arrow_down_doc_fill, + CupertinoIcons.arrow_down_left, + CupertinoIcons.arrow_down_left_circle, + CupertinoIcons.arrow_down_left_circle_fill, + CupertinoIcons.arrow_down_left_square, + CupertinoIcons.arrow_down_left_square_fill, + CupertinoIcons.arrow_down_right, + CupertinoIcons.arrow_down_right_arrow_up_left, + CupertinoIcons.arrow_down_right_circle, + CupertinoIcons.arrow_down_right_circle_fill, + CupertinoIcons.arrow_down_right_square, + CupertinoIcons.arrow_down_right_square_fill, + CupertinoIcons.arrow_down_square, + CupertinoIcons.arrow_down_square_fill, + CupertinoIcons.arrow_down_to_line, + CupertinoIcons.arrow_down_to_line_alt, + CupertinoIcons.arrow_left, + CupertinoIcons.arrow_left_circle, + CupertinoIcons.arrow_left_circle_fill, + CupertinoIcons.arrow_left_right, + CupertinoIcons.arrow_left_right_circle, + CupertinoIcons.arrow_left_right_circle_fill, + CupertinoIcons.arrow_left_right_square, + CupertinoIcons.arrow_left_right_square_fill, + CupertinoIcons.arrow_left_square, + CupertinoIcons.arrow_left_square_fill, + CupertinoIcons.arrow_left_to_line, + CupertinoIcons.arrow_left_to_line_alt, + CupertinoIcons.arrow_merge, + CupertinoIcons.arrow_right, + CupertinoIcons.arrow_right_arrow_left, + CupertinoIcons.arrow_right_arrow_left_circle, + CupertinoIcons.arrow_right_arrow_left_circle_fill, + CupertinoIcons.arrow_right_arrow_left_square, + CupertinoIcons.arrow_right_arrow_left_square_fill, + CupertinoIcons.arrow_right_circle, + CupertinoIcons.arrow_right_circle_fill, + CupertinoIcons.arrow_right_square, + CupertinoIcons.arrow_right_square_fill, + CupertinoIcons.arrow_right_to_line, + CupertinoIcons.arrow_right_to_line_alt, + CupertinoIcons.arrow_swap, + CupertinoIcons.arrow_turn_down_left, + CupertinoIcons.arrow_turn_down_right, + CupertinoIcons.arrow_turn_left_down, + CupertinoIcons.arrow_turn_left_up, + CupertinoIcons.arrow_turn_right_down, + CupertinoIcons.arrow_turn_right_up, + CupertinoIcons.arrow_turn_up_left, + CupertinoIcons.arrow_turn_up_right, + CupertinoIcons.arrow_up, + CupertinoIcons.arrow_up_arrow_down, + CupertinoIcons.arrow_up_arrow_down_circle, + CupertinoIcons.arrow_up_arrow_down_circle_fill, + CupertinoIcons.arrow_up_arrow_down_square, + CupertinoIcons.arrow_up_arrow_down_square_fill, + CupertinoIcons.arrow_up_bin, + CupertinoIcons.arrow_up_bin_fill, + CupertinoIcons.arrow_up_circle, + CupertinoIcons.arrow_up_circle_fill, + CupertinoIcons.arrow_up_doc, + CupertinoIcons.arrow_up_doc_fill, + CupertinoIcons.arrow_up_down, + CupertinoIcons.arrow_up_down_circle, + CupertinoIcons.arrow_up_down_circle_fill, + CupertinoIcons.arrow_up_down_square, + CupertinoIcons.arrow_up_down_square_fill, + CupertinoIcons.arrow_up_left, + CupertinoIcons.arrow_up_left_arrow_down_right, + CupertinoIcons.arrow_up_left_circle, + CupertinoIcons.arrow_up_left_circle_fill, + CupertinoIcons.arrow_up_left_square, + CupertinoIcons.arrow_up_left_square_fill, + CupertinoIcons.arrow_up_right, + CupertinoIcons.arrow_up_right_circle, + CupertinoIcons.arrow_up_right_circle_fill, + CupertinoIcons.arrow_up_right_diamond, + CupertinoIcons.arrow_up_right_diamond_fill, + CupertinoIcons.arrow_up_right_square, + CupertinoIcons.arrow_up_right_square_fill, + CupertinoIcons.arrow_up_square, + CupertinoIcons.arrow_up_square_fill, + CupertinoIcons.arrow_up_to_line, + CupertinoIcons.arrow_up_to_line_alt, + CupertinoIcons.arrow_uturn_down, + CupertinoIcons.arrow_uturn_down_circle, + CupertinoIcons.arrow_uturn_down_circle_fill, + CupertinoIcons.arrow_uturn_down_square, + CupertinoIcons.arrow_uturn_down_square_fill, + CupertinoIcons.arrow_uturn_left, + CupertinoIcons.arrow_uturn_left_circle, + CupertinoIcons.arrow_uturn_left_circle_fill, + CupertinoIcons.arrow_uturn_left_square, + CupertinoIcons.arrow_uturn_left_square_fill, + CupertinoIcons.arrow_uturn_right, + CupertinoIcons.arrow_uturn_right_circle, + CupertinoIcons.arrow_uturn_right_circle_fill, + CupertinoIcons.arrow_uturn_right_square, + CupertinoIcons.arrow_uturn_right_square_fill, + CupertinoIcons.arrow_uturn_up, + CupertinoIcons.arrow_uturn_up_circle, + CupertinoIcons.arrow_uturn_up_circle_fill, + CupertinoIcons.arrow_uturn_up_square, + CupertinoIcons.arrow_uturn_up_square_fill, + CupertinoIcons.arrowshape_turn_up_left, + CupertinoIcons.arrowshape_turn_up_left_2, + CupertinoIcons.arrowshape_turn_up_left_2_fill, + CupertinoIcons.arrowshape_turn_up_left_circle, + CupertinoIcons.arrowshape_turn_up_left_circle_fill, + CupertinoIcons.arrowshape_turn_up_left_fill, + CupertinoIcons.arrowshape_turn_up_right, + CupertinoIcons.arrowshape_turn_up_right_circle, + CupertinoIcons.arrowshape_turn_up_right_circle_fill, + CupertinoIcons.arrowshape_turn_up_right_fill, + CupertinoIcons.arrowtriangle_down, + CupertinoIcons.arrowtriangle_down_circle, + CupertinoIcons.arrowtriangle_down_circle_fill, + CupertinoIcons.arrowtriangle_down_fill, + CupertinoIcons.arrowtriangle_down_square, + CupertinoIcons.arrowtriangle_down_square_fill, + CupertinoIcons.arrowtriangle_left, + CupertinoIcons.arrowtriangle_left_circle, + CupertinoIcons.arrowtriangle_left_circle_fill, + CupertinoIcons.arrowtriangle_left_fill, + CupertinoIcons.arrowtriangle_left_square, + CupertinoIcons.arrowtriangle_left_square_fill, + CupertinoIcons.arrowtriangle_right, + CupertinoIcons.arrowtriangle_right_circle, + CupertinoIcons.arrowtriangle_right_circle_fill, + CupertinoIcons.arrowtriangle_right_fill, + CupertinoIcons.arrowtriangle_right_square, + CupertinoIcons.arrowtriangle_right_square_fill, + CupertinoIcons.arrowtriangle_up, + CupertinoIcons.arrowtriangle_up_circle, + CupertinoIcons.arrowtriangle_up_circle_fill, + CupertinoIcons.arrowtriangle_up_fill, + CupertinoIcons.arrowtriangle_up_square, + CupertinoIcons.arrowtriangle_up_square_fill, + CupertinoIcons.asterisk_circle, + CupertinoIcons.asterisk_circle_fill, + CupertinoIcons.at, + CupertinoIcons.at_badge_minus, + CupertinoIcons.at_badge_plus, + CupertinoIcons.at_circle, + CupertinoIcons.at_circle_fill, + CupertinoIcons.backward, + CupertinoIcons.backward_end, + CupertinoIcons.backward_end_alt, + CupertinoIcons.backward_end_alt_fill, + CupertinoIcons.backward_end_fill, + CupertinoIcons.backward_fill, + CupertinoIcons.badge_plus_radiowaves_right, + CupertinoIcons.bag, + CupertinoIcons.bag_badge_minus, + CupertinoIcons.bag_badge_plus, + CupertinoIcons.bag_fill, + CupertinoIcons.bag_fill_badge_minus, + CupertinoIcons.bag_fill_badge_plus, + CupertinoIcons.bandage, + CupertinoIcons.bandage_fill, + CupertinoIcons.barcode, + CupertinoIcons.barcode_viewfinder, + CupertinoIcons.bars, + CupertinoIcons.battery_0, + CupertinoIcons.battery_100, + CupertinoIcons.battery_25, + CupertinoIcons.bed_double, + CupertinoIcons.bed_double_fill, + CupertinoIcons.bell_circle, + CupertinoIcons.bell_circle_fill, + CupertinoIcons.bell_fill, + CupertinoIcons.bell_slash, + CupertinoIcons.bell_slash_fill, + CupertinoIcons.bin_xmark, + CupertinoIcons.bin_xmark_fill, + CupertinoIcons.bitcoin, + CupertinoIcons.bitcoin_circle, + CupertinoIcons.bitcoin_circle_fill, + CupertinoIcons.bold, + CupertinoIcons.bold_italic_underline, + CupertinoIcons.bold_underline, + CupertinoIcons.bolt, + CupertinoIcons.bolt_badge_a, + CupertinoIcons.bolt_badge_a_fill, + CupertinoIcons.bolt_circle, + CupertinoIcons.bolt_circle_fill, + CupertinoIcons.bolt_fill, + CupertinoIcons.bolt_horizontal, + CupertinoIcons.bolt_horizontal_circle, + CupertinoIcons.bolt_horizontal_circle_fill, + CupertinoIcons.bolt_horizontal_fill, + CupertinoIcons.bolt_slash, + CupertinoIcons.bolt_slash_fill, + CupertinoIcons.book_circle, + CupertinoIcons.book_circle_fill, + CupertinoIcons.book_fill, + CupertinoIcons.bookmark_fill, + CupertinoIcons.briefcase, + CupertinoIcons.briefcase_fill, + CupertinoIcons.bubble_left, + CupertinoIcons.bubble_left_bubble_right, + CupertinoIcons.bubble_left_bubble_right_fill, + CupertinoIcons.bubble_left_fill, + CupertinoIcons.bubble_middle_bottom, + CupertinoIcons.bubble_middle_bottom_fill, + CupertinoIcons.bubble_middle_top, + CupertinoIcons.bubble_middle_top_fill, + CupertinoIcons.bubble_right, + CupertinoIcons.bubble_right_fill, + CupertinoIcons.building_2_fill, + CupertinoIcons.burn, + CupertinoIcons.burst, + CupertinoIcons.burst_fill, + CupertinoIcons.calendar, + CupertinoIcons.calendar_badge_minus, + CupertinoIcons.calendar_badge_plus, + CupertinoIcons.calendar_circle, + CupertinoIcons.calendar_circle_fill, + CupertinoIcons.calendar_today, + CupertinoIcons.camera, + CupertinoIcons.camera_circle, + CupertinoIcons.camera_circle_fill, + CupertinoIcons.camera_fill, + CupertinoIcons.camera_on_rectangle, + CupertinoIcons.camera_on_rectangle_fill, + CupertinoIcons.camera_rotate, + CupertinoIcons.camera_rotate_fill, + CupertinoIcons.camera_viewfinder, + CupertinoIcons.capslock, + CupertinoIcons.capslock_fill, + CupertinoIcons.capsule, + CupertinoIcons.capsule_fill, + CupertinoIcons.captions_bubble, + CupertinoIcons.captions_bubble_fill, + CupertinoIcons.car_fill, + CupertinoIcons.cart, + CupertinoIcons.cart_badge_minus, + CupertinoIcons.cart_badge_plus, + CupertinoIcons.cart_fill, + CupertinoIcons.cart_fill_badge_minus, + CupertinoIcons.cart_fill_badge_plus, + CupertinoIcons.chart_bar, + CupertinoIcons.chart_bar_alt_fill, + CupertinoIcons.chart_bar_circle, + CupertinoIcons.chart_bar_circle_fill, + CupertinoIcons.chart_bar_fill, + CupertinoIcons.chart_bar_square, + CupertinoIcons.chart_bar_square_fill, + CupertinoIcons.chart_pie, + CupertinoIcons.chart_pie_fill, + CupertinoIcons.chat_bubble, + CupertinoIcons.chat_bubble_2, + CupertinoIcons.chat_bubble_2_fill, + CupertinoIcons.chat_bubble_fill, + CupertinoIcons.chat_bubble_text, + CupertinoIcons.chat_bubble_text_fill, + CupertinoIcons.checkmark, + CupertinoIcons.checkmark_alt, + CupertinoIcons.checkmark_alt_circle, + CupertinoIcons.checkmark_alt_circle_fill, + CupertinoIcons.checkmark_circle, + CupertinoIcons.checkmark_circle_fill, + CupertinoIcons.checkmark_rectangle, + CupertinoIcons.checkmark_rectangle_fill, + CupertinoIcons.checkmark_seal, + CupertinoIcons.checkmark_seal_fill, + CupertinoIcons.checkmark_shield, + CupertinoIcons.checkmark_shield_fill, + CupertinoIcons.checkmark_square, + CupertinoIcons.checkmark_square_fill, + CupertinoIcons.chevron_back, + CupertinoIcons.chevron_compact_down, + CupertinoIcons.chevron_compact_left, + CupertinoIcons.chevron_compact_right, + CupertinoIcons.chevron_compact_up, + CupertinoIcons.chevron_down, + CupertinoIcons.chevron_down_circle, + CupertinoIcons.chevron_down_circle_fill, + CupertinoIcons.chevron_down_square, + CupertinoIcons.chevron_down_square_fill, + CupertinoIcons.chevron_forward, + CupertinoIcons.chevron_left, + CupertinoIcons.chevron_left_2, + CupertinoIcons.chevron_left_circle, + CupertinoIcons.chevron_left_circle_fill, + CupertinoIcons.chevron_left_slash_chevron_right, + CupertinoIcons.chevron_left_square, + CupertinoIcons.chevron_left_square_fill, + CupertinoIcons.chevron_right, + CupertinoIcons.chevron_right_2, + CupertinoIcons.chevron_right_circle, + CupertinoIcons.chevron_right_circle_fill, + CupertinoIcons.chevron_right_square, + CupertinoIcons.chevron_right_square_fill, + CupertinoIcons.chevron_up, + CupertinoIcons.chevron_up_chevron_down, + CupertinoIcons.chevron_up_circle, + CupertinoIcons.chevron_up_circle_fill, + CupertinoIcons.chevron_up_square, + CupertinoIcons.chevron_up_square_fill, + CupertinoIcons.circle_bottomthird_split, + CupertinoIcons.circle_fill, + CupertinoIcons.circle_grid_3x3, + CupertinoIcons.circle_grid_3x3_fill, + CupertinoIcons.circle_grid_hex, + CupertinoIcons.circle_grid_hex_fill, + CupertinoIcons.circle_lefthalf_fill, + CupertinoIcons.circle_righthalf_fill, + CupertinoIcons.clear_fill, + CupertinoIcons.clock_fill, + CupertinoIcons.cloud, + CupertinoIcons.cloud_bolt, + CupertinoIcons.cloud_bolt_fill, + CupertinoIcons.cloud_bolt_rain, + CupertinoIcons.cloud_bolt_rain_fill, + CupertinoIcons.cloud_download, + CupertinoIcons.cloud_download_fill, + CupertinoIcons.cloud_drizzle, + CupertinoIcons.cloud_drizzle_fill, + CupertinoIcons.cloud_fill, + CupertinoIcons.cloud_fog, + CupertinoIcons.cloud_fog_fill, + CupertinoIcons.cloud_hail, + CupertinoIcons.cloud_hail_fill, + CupertinoIcons.cloud_heavyrain, + CupertinoIcons.cloud_heavyrain_fill, + CupertinoIcons.cloud_moon, + CupertinoIcons.cloud_moon_bolt, + CupertinoIcons.cloud_moon_bolt_fill, + CupertinoIcons.cloud_moon_fill, + CupertinoIcons.cloud_moon_rain, + CupertinoIcons.cloud_moon_rain_fill, + CupertinoIcons.cloud_rain, + CupertinoIcons.cloud_rain_fill, + CupertinoIcons.cloud_sleet, + CupertinoIcons.cloud_sleet_fill, + CupertinoIcons.cloud_snow, + CupertinoIcons.cloud_snow_fill, + CupertinoIcons.cloud_sun, + CupertinoIcons.cloud_sun_bolt, + CupertinoIcons.cloud_sun_bolt_fill, + CupertinoIcons.cloud_sun_fill, + CupertinoIcons.cloud_sun_rain, + CupertinoIcons.cloud_sun_rain_fill, + CupertinoIcons.cloud_upload, + CupertinoIcons.cloud_upload_fill, + CupertinoIcons.color_filter, + CupertinoIcons.color_filter_fill, + CupertinoIcons.command, + CupertinoIcons.compass, + CupertinoIcons.compass_fill, + CupertinoIcons.control, + CupertinoIcons.creditcard, + CupertinoIcons.creditcard_fill, + CupertinoIcons.crop, + CupertinoIcons.crop_rotate, + CupertinoIcons.cube, + CupertinoIcons.cube_box, + CupertinoIcons.cube_box_fill, + CupertinoIcons.cube_fill, + CupertinoIcons.cursor_rays, + CupertinoIcons.decrease_indent, + CupertinoIcons.decrease_quotelevel, + CupertinoIcons.delete_left, + CupertinoIcons.delete_left_fill, + CupertinoIcons.delete_right, + CupertinoIcons.delete_right_fill, + CupertinoIcons.desktopcomputer, + CupertinoIcons.device_desktop, + CupertinoIcons.device_laptop, + CupertinoIcons.device_phone_landscape, + CupertinoIcons.device_phone_portrait, + CupertinoIcons.dial, + CupertinoIcons.dial_fill, + CupertinoIcons.divide, + CupertinoIcons.divide_circle, + CupertinoIcons.divide_circle_fill, + CupertinoIcons.divide_square, + CupertinoIcons.divide_square_fill, + CupertinoIcons.doc, + CupertinoIcons.doc_append, + CupertinoIcons.doc_chart, + CupertinoIcons.doc_chart_fill, + CupertinoIcons.doc_checkmark, + CupertinoIcons.doc_checkmark_fill, + CupertinoIcons.doc_circle, + CupertinoIcons.doc_circle_fill, + CupertinoIcons.doc_fill, + CupertinoIcons.doc_on_clipboard, + CupertinoIcons.doc_on_clipboard_fill, + CupertinoIcons.doc_on_doc, + CupertinoIcons.doc_on_doc_fill, + CupertinoIcons.doc_person, + CupertinoIcons.doc_person_fill, + CupertinoIcons.doc_plaintext, + CupertinoIcons.doc_richtext, + CupertinoIcons.doc_text, + CupertinoIcons.doc_text_fill, + CupertinoIcons.doc_text_search, + CupertinoIcons.doc_text_viewfinder, + CupertinoIcons.dot_radiowaves_left_right, + CupertinoIcons.dot_radiowaves_right, + CupertinoIcons.dot_square, + CupertinoIcons.dot_square_fill, + CupertinoIcons.download_circle, + CupertinoIcons.download_circle_fill, + CupertinoIcons.drop, + CupertinoIcons.drop_fill, + CupertinoIcons.drop_triangle, + CupertinoIcons.drop_triangle_fill, + CupertinoIcons.ear, + CupertinoIcons.eject, + CupertinoIcons.eject_fill, + CupertinoIcons.ellipses_bubble, + CupertinoIcons.ellipses_bubble_fill, + CupertinoIcons.ellipsis_circle, + CupertinoIcons.ellipsis_circle_fill, + CupertinoIcons.ellipsis_vertical, + CupertinoIcons.ellipsis_vertical_circle, + CupertinoIcons.ellipsis_vertical_circle_fill, + CupertinoIcons.envelope, + CupertinoIcons.envelope_badge, + CupertinoIcons.envelope_badge_fill, + CupertinoIcons.envelope_circle, + CupertinoIcons.envelope_circle_fill, + CupertinoIcons.envelope_fill, + CupertinoIcons.envelope_open, + CupertinoIcons.envelope_open_fill, + CupertinoIcons.equal, + CupertinoIcons.equal_circle, + CupertinoIcons.equal_circle_fill, + CupertinoIcons.equal_square, + CupertinoIcons.equal_square_fill, + CupertinoIcons.escape, + CupertinoIcons.exclamationmark, + CupertinoIcons.exclamationmark_bubble, + CupertinoIcons.exclamationmark_bubble_fill, + CupertinoIcons.exclamationmark_circle, + CupertinoIcons.exclamationmark_circle_fill, + CupertinoIcons.exclamationmark_octagon, + CupertinoIcons.exclamationmark_octagon_fill, + CupertinoIcons.exclamationmark_shield, + CupertinoIcons.exclamationmark_shield_fill, + CupertinoIcons.exclamationmark_square, + CupertinoIcons.exclamationmark_square_fill, + CupertinoIcons.exclamationmark_triangle, + CupertinoIcons.exclamationmark_triangle_fill, + CupertinoIcons.eye_fill, + CupertinoIcons.eye_slash, + CupertinoIcons.eye_slash_fill, + CupertinoIcons.eyedropper, + CupertinoIcons.eyedropper_full, + CupertinoIcons.eyedropper_halffull, + CupertinoIcons.eyeglasses, + CupertinoIcons.f_cursive, + CupertinoIcons.f_cursive_circle, + CupertinoIcons.f_cursive_circle_fill, + CupertinoIcons.film, + CupertinoIcons.film_fill, + CupertinoIcons.flag_circle, + CupertinoIcons.flag_circle_fill, + CupertinoIcons.flag_fill, + CupertinoIcons.flag_slash, + CupertinoIcons.flag_slash_fill, + CupertinoIcons.flame, + CupertinoIcons.flame_fill, + CupertinoIcons.floppy_disk, + CupertinoIcons.flowchart, + CupertinoIcons.flowchart_fill, + CupertinoIcons.folder_badge_minus, + CupertinoIcons.folder_badge_person_crop, + CupertinoIcons.folder_badge_plus, + CupertinoIcons.folder_circle, + CupertinoIcons.folder_circle_fill, + CupertinoIcons.folder_fill, + CupertinoIcons.folder_fill_badge_minus, + CupertinoIcons.folder_fill_badge_person_crop, + CupertinoIcons.folder_fill_badge_plus, + CupertinoIcons.forward_end, + CupertinoIcons.forward_end_alt, + CupertinoIcons.forward_end_alt_fill, + CupertinoIcons.forward_end_fill, + CupertinoIcons.forward_fill, + CupertinoIcons.function, + CupertinoIcons.fx, + CupertinoIcons.gamecontroller, + CupertinoIcons.gamecontroller_alt_fill, + CupertinoIcons.gamecontroller_fill, + CupertinoIcons.gauge, + CupertinoIcons.gauge_badge_minus, + CupertinoIcons.gauge_badge_plus, + CupertinoIcons.gear_alt, + CupertinoIcons.gear_alt_fill, + CupertinoIcons.gift, + CupertinoIcons.gift_alt, + CupertinoIcons.gift_alt_fill, + CupertinoIcons.gift_fill, + CupertinoIcons.globe, + CupertinoIcons.gobackward, + CupertinoIcons.gobackward_10, + CupertinoIcons.gobackward_15, + CupertinoIcons.gobackward_30, + CupertinoIcons.gobackward_45, + CupertinoIcons.gobackward_60, + CupertinoIcons.gobackward_75, + CupertinoIcons.gobackward_90, + CupertinoIcons.gobackward_minus, + CupertinoIcons.goforward, + CupertinoIcons.goforward_10, + CupertinoIcons.goforward_15, + CupertinoIcons.goforward_30, + CupertinoIcons.goforward_45, + CupertinoIcons.goforward_60, + CupertinoIcons.goforward_75, + CupertinoIcons.goforward_90, + CupertinoIcons.goforward_plus, + CupertinoIcons.graph_circle, + CupertinoIcons.graph_circle_fill, + CupertinoIcons.graph_square, + CupertinoIcons.graph_square_fill, + CupertinoIcons.greaterthan, + CupertinoIcons.greaterthan_circle, + CupertinoIcons.greaterthan_circle_fill, + CupertinoIcons.greaterthan_square, + CupertinoIcons.greaterthan_square_fill, + CupertinoIcons.grid, + CupertinoIcons.grid_circle, + CupertinoIcons.grid_circle_fill, + CupertinoIcons.guitars, + CupertinoIcons.hammer, + CupertinoIcons.hammer_fill, + CupertinoIcons.hand_draw, + CupertinoIcons.hand_draw_fill, + CupertinoIcons.hand_point_left, + CupertinoIcons.hand_point_left_fill, + CupertinoIcons.hand_point_right, + CupertinoIcons.hand_point_right_fill, + CupertinoIcons.hand_raised, + CupertinoIcons.hand_raised_fill, + CupertinoIcons.hand_raised_slash, + CupertinoIcons.hand_raised_slash_fill, + CupertinoIcons.hand_thumbsdown, + CupertinoIcons.hand_thumbsdown_fill, + CupertinoIcons.hand_thumbsup, + CupertinoIcons.hand_thumbsup_fill, + CupertinoIcons.hare, + CupertinoIcons.hare_fill, + CupertinoIcons.headphones, + CupertinoIcons.heart_circle, + CupertinoIcons.heart_circle_fill, + CupertinoIcons.heart_fill, + CupertinoIcons.heart_slash, + CupertinoIcons.heart_slash_circle, + CupertinoIcons.heart_slash_circle_fill, + CupertinoIcons.heart_slash_fill, + CupertinoIcons.helm, + CupertinoIcons.hexagon, + CupertinoIcons.hexagon_fill, + CupertinoIcons.hifispeaker, + CupertinoIcons.hifispeaker_fill, + CupertinoIcons.hourglass, + CupertinoIcons.hourglass_bottomhalf_fill, + CupertinoIcons.hourglass_tophalf_fill, + CupertinoIcons.house, + CupertinoIcons.house_alt, + CupertinoIcons.house_alt_fill, + CupertinoIcons.house_fill, + CupertinoIcons.hurricane, + CupertinoIcons.increase_indent, + CupertinoIcons.increase_quotelevel, + CupertinoIcons.infinite, + CupertinoIcons.info_circle, + CupertinoIcons.info_circle_fill, + CupertinoIcons.italic, + CupertinoIcons.keyboard, + CupertinoIcons.keyboard_chevron_compact_down, + CupertinoIcons.largecircle_fill_circle, + CupertinoIcons.lasso, + CupertinoIcons.layers, + CupertinoIcons.layers_alt, + CupertinoIcons.layers_alt_fill, + CupertinoIcons.layers_fill, + CupertinoIcons.leaf_arrow_circlepath, + CupertinoIcons.lessthan, + CupertinoIcons.lessthan_circle, + CupertinoIcons.lessthan_circle_fill, + CupertinoIcons.lessthan_square, + CupertinoIcons.lessthan_square_fill, + CupertinoIcons.light_max, + CupertinoIcons.light_min, + CupertinoIcons.lightbulb, + CupertinoIcons.lightbulb_fill, + CupertinoIcons.lightbulb_slash, + CupertinoIcons.lightbulb_slash_fill, + CupertinoIcons.line_horizontal_3, + CupertinoIcons.line_horizontal_3_decrease, + CupertinoIcons.line_horizontal_3_decrease_circle, + CupertinoIcons.line_horizontal_3_decrease_circle_fill, + CupertinoIcons.link, + CupertinoIcons.link_circle, + CupertinoIcons.link_circle_fill, + CupertinoIcons.list_bullet, + CupertinoIcons.list_bullet_below_rectangle, + CupertinoIcons.list_bullet_indent, + CupertinoIcons.list_dash, + CupertinoIcons.list_number, + CupertinoIcons.list_number_rtl, + CupertinoIcons.location_circle, + CupertinoIcons.location_circle_fill, + CupertinoIcons.location_fill, + CupertinoIcons.location_north, + CupertinoIcons.location_north_fill, + CupertinoIcons.location_north_line, + CupertinoIcons.location_north_line_fill, + CupertinoIcons.location_slash, + CupertinoIcons.location_slash_fill, + CupertinoIcons.lock, + CupertinoIcons.lock_circle, + CupertinoIcons.lock_circle_fill, + CupertinoIcons.lock_fill, + CupertinoIcons.lock_open, + CupertinoIcons.lock_open_fill, + CupertinoIcons.lock_rotation, + CupertinoIcons.lock_rotation_open, + CupertinoIcons.lock_shield, + CupertinoIcons.lock_shield_fill, + CupertinoIcons.lock_slash, + CupertinoIcons.lock_slash_fill, + CupertinoIcons.macwindow, + CupertinoIcons.map, + CupertinoIcons.map_fill, + CupertinoIcons.map_pin, + CupertinoIcons.map_pin_ellipse, + CupertinoIcons.map_pin_slash, + CupertinoIcons.memories, + CupertinoIcons.memories_badge_minus, + CupertinoIcons.memories_badge_plus, + CupertinoIcons.metronome, + CupertinoIcons.mic_circle, + CupertinoIcons.mic_circle_fill, + CupertinoIcons.mic_fill, + CupertinoIcons.mic_slash, + CupertinoIcons.mic_slash_fill, + CupertinoIcons.minus, + CupertinoIcons.minus_circle, + CupertinoIcons.minus_circle_fill, + CupertinoIcons.minus_rectangle, + CupertinoIcons.minus_rectangle_fill, + CupertinoIcons.minus_slash_plus, + CupertinoIcons.minus_square, + CupertinoIcons.minus_square_fill, + CupertinoIcons.money_dollar, + CupertinoIcons.money_dollar_circle, + CupertinoIcons.money_dollar_circle_fill, + CupertinoIcons.money_euro, + CupertinoIcons.money_euro_circle, + CupertinoIcons.money_euro_circle_fill, + CupertinoIcons.money_pound, + CupertinoIcons.money_pound_circle, + CupertinoIcons.money_pound_circle_fill, + CupertinoIcons.money_rubl, + CupertinoIcons.money_rubl_circle, + CupertinoIcons.money_rubl_circle_fill, + CupertinoIcons.money_yen, + CupertinoIcons.money_yen_circle, + CupertinoIcons.money_yen_circle_fill, + CupertinoIcons.moon, + CupertinoIcons.moon_circle, + CupertinoIcons.moon_circle_fill, + CupertinoIcons.moon_fill, + CupertinoIcons.moon_stars, + CupertinoIcons.moon_stars_fill, + CupertinoIcons.moon_zzz, + CupertinoIcons.moon_zzz_fill, + CupertinoIcons.move, + CupertinoIcons.multiply, + CupertinoIcons.multiply_circle, + CupertinoIcons.multiply_circle_fill, + CupertinoIcons.multiply_square, + CupertinoIcons.multiply_square_fill, + CupertinoIcons.music_albums, + CupertinoIcons.music_albums_fill, + CupertinoIcons.music_house, + CupertinoIcons.music_house_fill, + CupertinoIcons.music_mic, + CupertinoIcons.music_note_2, + CupertinoIcons.music_note_list, + CupertinoIcons.nosign, + CupertinoIcons.number, + CupertinoIcons.number_circle, + CupertinoIcons.number_circle_fill, + CupertinoIcons.number_square, + CupertinoIcons.number_square_fill, + CupertinoIcons.option, + CupertinoIcons.paintbrush, + CupertinoIcons.paintbrush_fill, + CupertinoIcons.pano, + CupertinoIcons.pano_fill, + CupertinoIcons.paperclip, + CupertinoIcons.paperplane, + CupertinoIcons.paperplane_fill, + CupertinoIcons.paragraph, + CupertinoIcons.pause_circle, + CupertinoIcons.pause_circle_fill, + CupertinoIcons.pause_fill, + CupertinoIcons.pause_rectangle, + CupertinoIcons.pause_rectangle_fill, + CupertinoIcons.pencil_circle, + CupertinoIcons.pencil_circle_fill, + CupertinoIcons.pencil_ellipsis_rectangle, + CupertinoIcons.pencil_outline, + CupertinoIcons.pencil_slash, + CupertinoIcons.percent, + CupertinoIcons.person_2, + CupertinoIcons.person_2_alt, + CupertinoIcons.person_2_fill, + CupertinoIcons.person_2_square_stack, + CupertinoIcons.person_2_square_stack_fill, + CupertinoIcons.person_3, + CupertinoIcons.person_3_fill, + CupertinoIcons.person_alt, + CupertinoIcons.person_alt_circle, + CupertinoIcons.person_alt_circle_fill, + CupertinoIcons.person_badge_minus, + CupertinoIcons.person_badge_minus_fill, + CupertinoIcons.person_badge_plus, + CupertinoIcons.person_badge_plus_fill, + CupertinoIcons.person_circle, + CupertinoIcons.person_circle_fill, + CupertinoIcons.person_crop_circle, + CupertinoIcons.person_crop_circle_badge_checkmark, + CupertinoIcons.person_crop_circle_badge_exclam, + CupertinoIcons.person_crop_circle_badge_minus, + CupertinoIcons.person_crop_circle_badge_plus, + CupertinoIcons.person_crop_circle_badge_xmark, + CupertinoIcons.person_crop_circle_fill, + CupertinoIcons.person_crop_circle_fill_badge_checkmark, + CupertinoIcons.person_crop_circle_fill_badge_exclam, + CupertinoIcons.person_crop_circle_fill_badge_minus, + CupertinoIcons.person_crop_circle_fill_badge_plus, + CupertinoIcons.person_crop_circle_fill_badge_xmark, + CupertinoIcons.person_crop_rectangle, + CupertinoIcons.person_crop_rectangle_fill, + CupertinoIcons.person_crop_square, + CupertinoIcons.person_crop_square_fill, + CupertinoIcons.person_fill, + CupertinoIcons.personalhotspot, + CupertinoIcons.perspective, + CupertinoIcons.phone_arrow_down_left, + CupertinoIcons.phone_arrow_right, + CupertinoIcons.phone_arrow_up_right, + CupertinoIcons.phone_badge_plus, + CupertinoIcons.phone_circle, + CupertinoIcons.phone_circle_fill, + CupertinoIcons.phone_down, + CupertinoIcons.phone_down_circle, + CupertinoIcons.phone_down_circle_fill, + CupertinoIcons.phone_down_fill, + CupertinoIcons.phone_fill, + CupertinoIcons.phone_fill_arrow_down_left, + CupertinoIcons.phone_fill_arrow_right, + CupertinoIcons.phone_fill_arrow_up_right, + CupertinoIcons.phone_fill_badge_plus, + CupertinoIcons.photo, + CupertinoIcons.photo_fill, + CupertinoIcons.photo_fill_on_rectangle_fill, + CupertinoIcons.photo_on_rectangle, + CupertinoIcons.piano, + CupertinoIcons.pin, + CupertinoIcons.pin_fill, + CupertinoIcons.pin_slash, + CupertinoIcons.pin_slash_fill, + CupertinoIcons.placemark, + CupertinoIcons.placemark_fill, + CupertinoIcons.play, + CupertinoIcons.play_circle, + CupertinoIcons.play_circle_fill, + CupertinoIcons.play_fill, + CupertinoIcons.play_rectangle, + CupertinoIcons.play_rectangle_fill, + CupertinoIcons.playpause, + CupertinoIcons.playpause_fill, + CupertinoIcons.plus, + CupertinoIcons.plus_app, + CupertinoIcons.plus_app_fill, + CupertinoIcons.plus_bubble, + CupertinoIcons.plus_bubble_fill, + CupertinoIcons.plus_circle, + CupertinoIcons.plus_circle_fill, + CupertinoIcons.plus_rectangle, + CupertinoIcons.plus_rectangle_fill, + CupertinoIcons.plus_rectangle_fill_on_rectangle_fill, + CupertinoIcons.plus_rectangle_on_rectangle, + CupertinoIcons.plus_slash_minus, + CupertinoIcons.plus_square, + CupertinoIcons.plus_square_fill, + CupertinoIcons.plus_square_fill_on_square_fill, + CupertinoIcons.plus_square_on_square, + CupertinoIcons.plusminus, + CupertinoIcons.plusminus_circle, + CupertinoIcons.plusminus_circle_fill, + CupertinoIcons.power, + CupertinoIcons.printer, + CupertinoIcons.printer_fill, + CupertinoIcons.projective, + CupertinoIcons.purchased, + CupertinoIcons.purchased_circle, + CupertinoIcons.purchased_circle_fill, + CupertinoIcons.qrcode, + CupertinoIcons.qrcode_viewfinder, + CupertinoIcons.question, + CupertinoIcons.question_circle, + CupertinoIcons.question_circle_fill, + CupertinoIcons.question_diamond, + CupertinoIcons.question_diamond_fill, + CupertinoIcons.question_square, + CupertinoIcons.question_square_fill, + CupertinoIcons.quote_bubble, + CupertinoIcons.quote_bubble_fill, + CupertinoIcons.radiowaves_left, + CupertinoIcons.radiowaves_right, + CupertinoIcons.rays, + CupertinoIcons.recordingtape, + CupertinoIcons.rectangle, + CupertinoIcons.rectangle_3_offgrid, + CupertinoIcons.rectangle_3_offgrid_fill, + CupertinoIcons.rectangle_arrow_up_right_arrow_down_left, + CupertinoIcons.rectangle_arrow_up_right_arrow_down_left_slash, + CupertinoIcons.rectangle_badge_checkmark, + CupertinoIcons.rectangle_badge_xmark, + CupertinoIcons.rectangle_compress_vertical, + CupertinoIcons.rectangle_dock, + CupertinoIcons.rectangle_expand_vertical, + CupertinoIcons.rectangle_fill, + CupertinoIcons.rectangle_fill_badge_checkmark, + CupertinoIcons.rectangle_fill_badge_xmark, + CupertinoIcons.rectangle_fill_on_rectangle_angled_fill, + CupertinoIcons.rectangle_fill_on_rectangle_fill, + CupertinoIcons.rectangle_grid_1x2, + CupertinoIcons.rectangle_grid_1x2_fill, + CupertinoIcons.rectangle_grid_2x2, + CupertinoIcons.rectangle_grid_2x2_fill, + CupertinoIcons.rectangle_grid_3x2, + CupertinoIcons.rectangle_grid_3x2_fill, + CupertinoIcons.rectangle_on_rectangle, + CupertinoIcons.rectangle_on_rectangle_angled, + CupertinoIcons.rectangle_paperclip, + CupertinoIcons.rectangle_split_3x1, + CupertinoIcons.rectangle_split_3x1_fill, + CupertinoIcons.rectangle_split_3x3, + CupertinoIcons.rectangle_split_3x3_fill, + CupertinoIcons.rectangle_stack, + CupertinoIcons.rectangle_stack_badge_minus, + CupertinoIcons.rectangle_stack_badge_person_crop, + CupertinoIcons.rectangle_stack_badge_plus, + CupertinoIcons.rectangle_stack_fill, + CupertinoIcons.rectangle_stack_fill_badge_minus, + CupertinoIcons.rectangle_stack_fill_badge_person_crop, + CupertinoIcons.rectangle_stack_fill_badge_plus, + CupertinoIcons.rectangle_stack_person_crop, + CupertinoIcons.rectangle_stack_person_crop_fill, + CupertinoIcons.repeat, + CupertinoIcons.repeat_1, + CupertinoIcons.resize, + CupertinoIcons.resize_h, + CupertinoIcons.resize_v, + CupertinoIcons.return_icon, + CupertinoIcons.rhombus, + CupertinoIcons.rhombus_fill, + CupertinoIcons.rocket, + CupertinoIcons.rocket_fill, + CupertinoIcons.rosette, + CupertinoIcons.rotate_left, + CupertinoIcons.rotate_left_fill, + CupertinoIcons.rotate_right, + CupertinoIcons.rotate_right_fill, + CupertinoIcons.scissors, + CupertinoIcons.scissors_alt, + CupertinoIcons.scope, + CupertinoIcons.scribble, + CupertinoIcons.search_circle, + CupertinoIcons.search_circle_fill, + CupertinoIcons.selection_pin_in_out, + CupertinoIcons.shield, + CupertinoIcons.shield_fill, + CupertinoIcons.shield_lefthalf_fill, + CupertinoIcons.shield_slash, + CupertinoIcons.shield_slash_fill, + CupertinoIcons.shift, + CupertinoIcons.shift_fill, + CupertinoIcons.sidebar_left, + CupertinoIcons.sidebar_right, + CupertinoIcons.signature, + CupertinoIcons.skew, + CupertinoIcons.slash_circle, + CupertinoIcons.slash_circle_fill, + CupertinoIcons.slider_horizontal_3, + CupertinoIcons.slider_horizontal_below_rectangle, + CupertinoIcons.slowmo, + CupertinoIcons.smallcircle_circle, + CupertinoIcons.smallcircle_circle_fill, + CupertinoIcons.smallcircle_fill_circle, + CupertinoIcons.smallcircle_fill_circle_fill, + CupertinoIcons.smiley, + CupertinoIcons.smiley_fill, + CupertinoIcons.smoke, + CupertinoIcons.smoke_fill, + CupertinoIcons.snow, + CupertinoIcons.sort_down, + CupertinoIcons.sort_down_circle, + CupertinoIcons.sort_down_circle_fill, + CupertinoIcons.sort_up, + CupertinoIcons.sort_up_circle, + CupertinoIcons.sort_up_circle_fill, + CupertinoIcons.sparkles, + CupertinoIcons.speaker, + CupertinoIcons.speaker_1, + CupertinoIcons.speaker_1_fill, + CupertinoIcons.speaker_2, + CupertinoIcons.speaker_2_fill, + CupertinoIcons.speaker_3, + CupertinoIcons.speaker_3_fill, + CupertinoIcons.speaker_fill, + CupertinoIcons.speaker_slash, + CupertinoIcons.speaker_slash_fill, + CupertinoIcons.speaker_slash_fill_rtl, + CupertinoIcons.speaker_slash_rtl, + CupertinoIcons.speaker_zzz, + CupertinoIcons.speaker_zzz_fill, + CupertinoIcons.speaker_zzz_fill_rtl, + CupertinoIcons.speaker_zzz_rtl, + CupertinoIcons.speedometer, + CupertinoIcons.sportscourt, + CupertinoIcons.sportscourt_fill, + CupertinoIcons.square, + CupertinoIcons.square_arrow_down, + CupertinoIcons.square_arrow_down_fill, + CupertinoIcons.square_arrow_down_on_square, + CupertinoIcons.square_arrow_down_on_square_fill, + CupertinoIcons.square_arrow_left, + CupertinoIcons.square_arrow_left_fill, + CupertinoIcons.square_arrow_right, + CupertinoIcons.square_arrow_right_fill, + CupertinoIcons.square_arrow_up, + CupertinoIcons.square_arrow_up_fill, + CupertinoIcons.square_arrow_up_on_square, + CupertinoIcons.square_arrow_up_on_square_fill, + CupertinoIcons.square_favorites, + CupertinoIcons.square_favorites_alt, + CupertinoIcons.square_favorites_alt_fill, + CupertinoIcons.square_favorites_fill, + CupertinoIcons.square_fill, + CupertinoIcons.square_fill_line_vertical_square, + CupertinoIcons.square_fill_line_vertical_square_fill, + CupertinoIcons.square_fill_on_circle_fill, + CupertinoIcons.square_fill_on_square_fill, + CupertinoIcons.square_grid_2x2, + CupertinoIcons.square_grid_2x2_fill, + CupertinoIcons.square_grid_3x2, + CupertinoIcons.square_grid_3x2_fill, + CupertinoIcons.square_grid_4x3_fill, + CupertinoIcons.square_lefthalf_fill, + CupertinoIcons.square_line_vertical_square, + CupertinoIcons.square_line_vertical_square_fill, + CupertinoIcons.square_list, + CupertinoIcons.square_list_fill, + CupertinoIcons.square_on_circle, + CupertinoIcons.square_on_square, + CupertinoIcons.square_pencil, + CupertinoIcons.square_pencil_fill, + CupertinoIcons.square_righthalf_fill, + CupertinoIcons.square_split_1x2, + CupertinoIcons.square_split_1x2_fill, + CupertinoIcons.square_split_2x1, + CupertinoIcons.square_split_2x1_fill, + CupertinoIcons.square_split_2x2, + CupertinoIcons.square_split_2x2_fill, + CupertinoIcons.square_stack, + CupertinoIcons.square_stack_3d_down_dottedline, + CupertinoIcons.square_stack_3d_down_right, + CupertinoIcons.square_stack_3d_down_right_fill, + CupertinoIcons.square_stack_3d_up, + CupertinoIcons.square_stack_3d_up_fill, + CupertinoIcons.square_stack_3d_up_slash, + CupertinoIcons.square_stack_3d_up_slash_fill, + CupertinoIcons.square_stack_fill, + CupertinoIcons.squares_below_rectangle, + CupertinoIcons.star, + CupertinoIcons.star_circle, + CupertinoIcons.star_circle_fill, + CupertinoIcons.star_fill, + CupertinoIcons.star_lefthalf_fill, + CupertinoIcons.star_slash, + CupertinoIcons.star_slash_fill, + CupertinoIcons.staroflife, + CupertinoIcons.staroflife_fill, + CupertinoIcons.stop, + CupertinoIcons.stop_circle, + CupertinoIcons.stop_circle_fill, + CupertinoIcons.stop_fill, + CupertinoIcons.stopwatch, + CupertinoIcons.stopwatch_fill, + CupertinoIcons.strikethrough, + CupertinoIcons.suit_club, + CupertinoIcons.suit_club_fill, + CupertinoIcons.suit_diamond, + CupertinoIcons.suit_diamond_fill, + CupertinoIcons.suit_heart, + CupertinoIcons.suit_heart_fill, + CupertinoIcons.suit_spade, + CupertinoIcons.suit_spade_fill, + CupertinoIcons.sum, + CupertinoIcons.sun_dust, + CupertinoIcons.sun_dust_fill, + CupertinoIcons.sun_haze, + CupertinoIcons.sun_haze_fill, + CupertinoIcons.sun_max, + CupertinoIcons.sun_max_fill, + CupertinoIcons.sun_min, + CupertinoIcons.sun_min_fill, + CupertinoIcons.sunrise, + CupertinoIcons.sunrise_fill, + CupertinoIcons.sunset, + CupertinoIcons.sunset_fill, + CupertinoIcons.t_bubble, + CupertinoIcons.t_bubble_fill, + CupertinoIcons.table, + CupertinoIcons.table_badge_more, + CupertinoIcons.table_badge_more_fill, + CupertinoIcons.table_fill, + CupertinoIcons.tag_circle, + CupertinoIcons.tag_circle_fill, + CupertinoIcons.tag_fill, + CupertinoIcons.text_aligncenter, + CupertinoIcons.text_alignleft, + CupertinoIcons.text_alignright, + CupertinoIcons.text_append, + CupertinoIcons.text_badge_checkmark, + CupertinoIcons.text_badge_minus, + CupertinoIcons.text_badge_plus, + CupertinoIcons.text_badge_star, + CupertinoIcons.text_badge_xmark, + CupertinoIcons.text_bubble, + CupertinoIcons.text_bubble_fill, + CupertinoIcons.text_cursor, + CupertinoIcons.text_insert, + CupertinoIcons.text_justify, + CupertinoIcons.text_justifyleft, + CupertinoIcons.text_justifyright, + CupertinoIcons.text_quote, + CupertinoIcons.textbox, + CupertinoIcons.textformat, + CupertinoIcons.textformat_123, + CupertinoIcons.textformat_abc, + CupertinoIcons.textformat_abc_dottedunderline, + CupertinoIcons.textformat_alt, + CupertinoIcons.textformat_size, + CupertinoIcons.textformat_subscript, + CupertinoIcons.textformat_superscript, + CupertinoIcons.thermometer, + CupertinoIcons.thermometer_snowflake, + CupertinoIcons.thermometer_sun, + CupertinoIcons.ticket, + CupertinoIcons.ticket_fill, + CupertinoIcons.tickets, + CupertinoIcons.tickets_fill, + CupertinoIcons.timelapse, + CupertinoIcons.timer, + CupertinoIcons.timer_fill, + CupertinoIcons.today, + CupertinoIcons.today_fill, + CupertinoIcons.tornado, + CupertinoIcons.tortoise, + CupertinoIcons.tortoise_fill, + CupertinoIcons.tram_fill, + CupertinoIcons.trash, + CupertinoIcons.trash_circle, + CupertinoIcons.trash_circle_fill, + CupertinoIcons.trash_fill, + CupertinoIcons.trash_slash, + CupertinoIcons.trash_slash_fill, + CupertinoIcons.tray, + CupertinoIcons.tray_2, + CupertinoIcons.tray_2_fill, + CupertinoIcons.tray_arrow_down, + CupertinoIcons.tray_arrow_down_fill, + CupertinoIcons.tray_arrow_up, + CupertinoIcons.tray_arrow_up_fill, + CupertinoIcons.tray_fill, + CupertinoIcons.tray_full, + CupertinoIcons.tray_full_fill, + CupertinoIcons.tree, + CupertinoIcons.triangle, + CupertinoIcons.triangle_fill, + CupertinoIcons.triangle_lefthalf_fill, + CupertinoIcons.triangle_righthalf_fill, + CupertinoIcons.tropicalstorm, + CupertinoIcons.tuningfork, + CupertinoIcons.tv, + CupertinoIcons.tv_circle, + CupertinoIcons.tv_circle_fill, + CupertinoIcons.tv_fill, + CupertinoIcons.tv_music_note, + CupertinoIcons.tv_music_note_fill, + CupertinoIcons.uiwindow_split_2x1, + CupertinoIcons.umbrella, + CupertinoIcons.umbrella_fill, + CupertinoIcons.underline, + CupertinoIcons.upload_circle, + CupertinoIcons.upload_circle_fill, + CupertinoIcons.videocam, + CupertinoIcons.videocam_circle, + CupertinoIcons.videocam_circle_fill, + CupertinoIcons.videocam_fill, + CupertinoIcons.view_2d, + CupertinoIcons.view_3d, + CupertinoIcons.viewfinder, + CupertinoIcons.viewfinder_circle, + CupertinoIcons.viewfinder_circle_fill, + CupertinoIcons.wand_rays, + CupertinoIcons.wand_rays_inverse, + CupertinoIcons.wand_stars, + CupertinoIcons.wand_stars_inverse, + CupertinoIcons.waveform, + CupertinoIcons.waveform_circle, + CupertinoIcons.waveform_circle_fill, + CupertinoIcons.waveform_path, + CupertinoIcons.waveform_path_badge_minus, + CupertinoIcons.waveform_path_badge_plus, + CupertinoIcons.waveform_path_ecg, + CupertinoIcons.wifi, + CupertinoIcons.wifi_exclamationmark, + CupertinoIcons.wifi_slash, + CupertinoIcons.wind, + CupertinoIcons.wind_snow, + CupertinoIcons.wrench, + CupertinoIcons.wrench_fill, + CupertinoIcons.xmark, + CupertinoIcons.xmark_circle, + CupertinoIcons.xmark_circle_fill, + CupertinoIcons.xmark_octagon, + CupertinoIcons.xmark_octagon_fill, + CupertinoIcons.xmark_rectangle, + CupertinoIcons.xmark_rectangle_fill, + CupertinoIcons.xmark_seal, + CupertinoIcons.xmark_seal_fill, + CupertinoIcons.xmark_shield, + CupertinoIcons.xmark_shield_fill, + CupertinoIcons.xmark_square, + CupertinoIcons.xmark_square_fill, + CupertinoIcons.zoom_in, + CupertinoIcons.zoom_out, + CupertinoIcons.zzz, + ]..sort(_compare), +); diff --git a/third_party/packages/flutter_svg/CHANGELOG.md b/third_party/packages/flutter_svg/CHANGELOG.md index 7a21197a20e..dfc451ca76d 100644 --- a/third_party/packages/flutter_svg/CHANGELOG.md +++ b/third_party/packages/flutter_svg/CHANGELOG.md @@ -1,3 +1,7 @@ +## NEXT + +* Updates minimum supported SDK version to Flutter 3.29/Dart 3.7. + ## 2.2.0 * Exposes `renderingStrategy` in `SvgPicture` constructors. diff --git a/third_party/packages/flutter_svg/README.md b/third_party/packages/flutter_svg/README.md index e08e10a8a49..15395077e6b 100644 --- a/third_party/packages/flutter_svg/README.md +++ b/third_party/packages/flutter_svg/README.md @@ -15,10 +15,7 @@ Basic usage (to create an SVG rendering widget from an asset): ```dart const String assetName = 'assets/dart.svg'; -final Widget svg = SvgPicture.asset( - assetName, - semanticsLabel: 'Dart Logo', -); +final Widget svg = SvgPicture.asset(assetName, semanticsLabel: 'Dart Logo'); ``` You can color/tint the image like so: @@ -93,9 +90,7 @@ parsing/loading (normally only relevant for network access). ```dart // Will print error messages to the console. const String assetName = 'assets/image_that_does_not_exist.svg'; -final Widget svg = SvgPicture.asset( - assetName, -); +final Widget svg = SvgPicture.asset(assetName); ``` @@ -103,9 +98,11 @@ final Widget svg = SvgPicture.asset( final Widget networkSvg = SvgPicture.network( 'https://site-that-takes-a-while.com/image.svg', semanticsLabel: 'A shark?!', - placeholderBuilder: (BuildContext context) => Container( - padding: const EdgeInsets.all(30.0), - child: const CircularProgressIndicator()), + placeholderBuilder: + (BuildContext context) => Container( + padding: const EdgeInsets.all(30.0), + child: const CircularProgressIndicator(), + ), ); ``` @@ -117,8 +114,10 @@ import 'dart:ui' as ui; // ··· const String rawSvg = '''...'''; - final PictureInfo pictureInfo = - await vg.loadPicture(const SvgStringLoader(rawSvg), null); + final PictureInfo pictureInfo = await vg.loadPicture( + const SvgStringLoader(rawSvg), + null, + ); // You can draw the picture to a canvas: canvas.drawPicture(pictureInfo.picture); diff --git a/third_party/packages/flutter_svg/example/lib/grid.dart b/third_party/packages/flutter_svg/example/lib/grid.dart index 163893f5056..afaf6d4d879 100644 --- a/third_party/packages/flutter_svg/example/lib/grid.dart +++ b/third_party/packages/flutter_svg/example/lib/grid.dart @@ -64,9 +64,7 @@ class _MyApp extends StatelessWidget { Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', - theme: ThemeData( - primarySwatch: Colors.blue, - ), + theme: ThemeData(primarySwatch: Colors.blue), home: const _MyHomePage(title: 'Flutter SVG Demo'), ); } @@ -89,9 +87,7 @@ class _MyHomePageState extends State<_MyHomePage> { super.initState(); _dimension = 203.0; for (final String assetName in _assetNames) { - _painters.add( - SvgPicture.asset(assetName), - ); + _painters.add(SvgPicture.asset(assetName)); } for (int i = 0; i < iconNames.length; i++) { @@ -114,19 +110,22 @@ class _MyHomePageState extends State<_MyHomePage> { _painters.add( SvgPicture.network( uriName, - placeholderBuilder: (BuildContext context) => Container( - padding: const EdgeInsets.all(30.0), - child: const CircularProgressIndicator(), - ), + placeholderBuilder: + (BuildContext context) => Container( + padding: const EdgeInsets.all(30.0), + child: const CircularProgressIndicator(), + ), ), ); } // Shows an example of an SVG image that will fetch a raster image from a URL. - _painters.add(SvgPicture.string(''' + _painters.add( + SvgPicture.string(''' -''')); +'''), + ); } @override @@ -135,29 +134,29 @@ class _MyHomePageState extends State<_MyHomePage> { _dimension = MediaQuery.of(context).size.width - 10.0; } return Scaffold( - appBar: AppBar( - title: Text(widget.title), - ), - body: Column(children: [ - Slider( - min: 5.0, - max: MediaQuery.of(context).size.width - 10.0, - value: _dimension, - onChanged: (double val) { - setState(() => _dimension = val); - }, - ), - Expanded( - child: GridView.extent( - // shrinkWrap: true, - maxCrossAxisExtent: _dimension, - padding: const EdgeInsets.all(4.0), - mainAxisSpacing: 4.0, - crossAxisSpacing: 4.0, - children: _painters.toList(), + appBar: AppBar(title: Text(widget.title)), + body: Column( + children: [ + Slider( + min: 5.0, + max: MediaQuery.of(context).size.width - 10.0, + value: _dimension, + onChanged: (double val) { + setState(() => _dimension = val); + }, ), - ), - ]), + Expanded( + child: GridView.extent( + // shrinkWrap: true, + maxCrossAxisExtent: _dimension, + padding: const EdgeInsets.all(4.0), + mainAxisSpacing: 4.0, + crossAxisSpacing: 4.0, + children: _painters.toList(), + ), + ), + ], + ), ); } } diff --git a/third_party/packages/flutter_svg/example/lib/main.dart b/third_party/packages/flutter_svg/example/lib/main.dart index 358ec07d3aa..28fb47c48c5 100644 --- a/third_party/packages/flutter_svg/example/lib/main.dart +++ b/third_party/packages/flutter_svg/example/lib/main.dart @@ -26,15 +26,13 @@ const String svgString = ''' '''; void main() { - runApp(MaterialApp( - home: Scaffold( - body: Center( - child: SvgPicture.string( - svgString, - width: 500, - height: 500, + runApp( + MaterialApp( + home: Scaffold( + body: Center( + child: SvgPicture.string(svgString, width: 500, height: 500), ), ), ), - )); + ); } diff --git a/third_party/packages/flutter_svg/example/lib/readme_excerpts.dart b/third_party/packages/flutter_svg/example/lib/readme_excerpts.dart index 7fd7f9132ee..1cd79da7667 100644 --- a/third_party/packages/flutter_svg/example/lib/readme_excerpts.dart +++ b/third_party/packages/flutter_svg/example/lib/readme_excerpts.dart @@ -20,10 +20,7 @@ import 'package:vector_graphics/vector_graphics.dart'; Widget loadAsset() { // #docregion SimpleAsset const String assetName = 'assets/dart.svg'; - final Widget svg = SvgPicture.asset( - assetName, - semanticsLabel: 'Dart Logo', - ); + final Widget svg = SvgPicture.asset(assetName, semanticsLabel: 'Dart Logo'); // #enddocregion SimpleAsset return svg; } @@ -46,9 +43,7 @@ Widget loadMissingAsset() { // #docregion MissingAsset // Will print error messages to the console. const String assetName = 'assets/image_that_does_not_exist.svg'; - final Widget svg = SvgPicture.asset( - assetName, - ); + final Widget svg = SvgPicture.asset(assetName); // #enddocregion MissingAsset return svg; } @@ -63,9 +58,11 @@ Widget loadNetworkAssetWithPlaceholder() { final Widget networkSvg = SvgPicture.network( 'https://site-that-takes-a-while.com/image.svg', semanticsLabel: 'A shark?!', - placeholderBuilder: (BuildContext context) => Container( - padding: const EdgeInsets.all(30.0), - child: const CircularProgressIndicator()), + placeholderBuilder: + (BuildContext context) => Container( + padding: const EdgeInsets.all(30.0), + child: const CircularProgressIndicator(), + ), ); // #enddocregion AssetWithPlaceholder return networkSvg; @@ -89,8 +86,10 @@ Future convertSvgOutput() async { // #docregion OutputConversion const String rawSvg = '''...'''; - final PictureInfo pictureInfo = - await vg.loadPicture(const SvgStringLoader(rawSvg), null); + final PictureInfo pictureInfo = await vg.loadPicture( + const SvgStringLoader(rawSvg), + null, + ); // You can draw the picture to a canvas: canvas.drawPicture(pictureInfo.picture); diff --git a/third_party/packages/flutter_svg/example/pubspec.yaml b/third_party/packages/flutter_svg/example/pubspec.yaml index 78d93e23635..ba5d03c85f0 100644 --- a/third_party/packages/flutter_svg/example/pubspec.yaml +++ b/third_party/packages/flutter_svg/example/pubspec.yaml @@ -3,8 +3,8 @@ description: An SVG samnple app. publish_to: none environment: - sdk: ^3.6.0 - flutter: ">=3.27.0" + sdk: ^3.7.0 + flutter: ">=3.29.0" dependencies: flutter: diff --git a/third_party/packages/flutter_svg/lib/src/cache.dart b/third_party/packages/flutter_svg/lib/src/cache.dart index 3b1f5b14e88..2abf5469d1d 100644 --- a/third_party/packages/flutter_svg/lib/src/cache.dart +++ b/third_party/packages/flutter_svg/lib/src/cache.dart @@ -62,10 +62,7 @@ class Cache { /// key is moved to the "most recently used" position. /// /// The arguments must not be null. The `loader` cannot return null. - Future putIfAbsent( - Object key, - Future Function() loader, - ) { + Future putIfAbsent(Object key, Future Function() loader) { assert(key != null); // ignore: unnecessary_null_comparison assert(loader != null); // ignore: unnecessary_null_comparison Future? pendingResult = _pending[key]; diff --git a/third_party/packages/flutter_svg/lib/src/default_theme.dart b/third_party/packages/flutter_svg/lib/src/default_theme.dart index d824695d7c3..a6dbb3793b1 100644 --- a/third_party/packages/flutter_svg/lib/src/default_theme.dart +++ b/third_party/packages/flutter_svg/lib/src/default_theme.dart @@ -7,11 +7,7 @@ import 'loaders.dart'; class DefaultSvgTheme extends InheritedTheme { /// Creates a default SVG theme for the given subtree /// using the provided [theme]. - const DefaultSvgTheme({ - super.key, - required super.child, - required this.theme, - }); + const DefaultSvgTheme({super.key, required super.child, required this.theme}); /// The SVG theme to apply. final SvgTheme theme; @@ -34,9 +30,6 @@ class DefaultSvgTheme extends InheritedTheme { @override Widget wrap(BuildContext context, Widget child) { - return DefaultSvgTheme( - theme: theme, - child: child, - ); + return DefaultSvgTheme(theme: theme, child: child); } } diff --git a/third_party/packages/flutter_svg/lib/src/loaders.dart b/third_party/packages/flutter_svg/lib/src/loaders.dart index 62e395982bd..bfa41ffd76e 100644 --- a/third_party/packages/flutter_svg/lib/src/loaders.dart +++ b/third_party/packages/flutter_svg/lib/src/loaders.dart @@ -100,9 +100,17 @@ class _DelegateVgColorMapper extends vg.ColorMapper { @override vg.Color substitute( - String? id, String elementName, String attributeName, vg.Color color) { + String? id, + String elementName, + String attributeName, + vg.Color color, + ) { final Color substituteColor = colorMapper.substitute( - id, elementName, attributeName, Color(color.value)); + id, + elementName, + attributeName, + Color(color.value), + ); return vg.Color(substituteColor.value); } } @@ -112,10 +120,7 @@ class _DelegateVgColorMapper extends vg.ColorMapper { @immutable abstract class SvgLoader extends BytesLoader { /// See class doc. - const SvgLoader({ - this.theme, - this.colorMapper, - }); + const SvgLoader({this.theme, this.colorMapper}); /// The theme to determine currentColor and font sizing attributes. final SvgTheme? theme; @@ -151,22 +156,27 @@ abstract class SvgLoader extends BytesLoader { Future _load(BuildContext? context) { final SvgTheme theme = getTheme(context); return prepareMessage(context).then((T? message) { - return compute((T? message) { - return vg - .encodeSvg( - xml: provideSvg(message), - theme: theme.toVgTheme(), - colorMapper: colorMapper == null - ? null - : _DelegateVgColorMapper(colorMapper!), - debugName: 'Svg loader', - enableClippingOptimizer: false, - enableMaskingOptimizer: false, - enableOverdrawOptimizer: false, - ) - .buffer - .asByteData(); - }, message, debugLabel: 'Load Bytes'); + return compute( + (T? message) { + return vg + .encodeSvg( + xml: provideSvg(message), + theme: theme.toVgTheme(), + colorMapper: + colorMapper == null + ? null + : _DelegateVgColorMapper(colorMapper!), + debugName: 'Svg loader', + enableClippingOptimizer: false, + enableMaskingOptimizer: false, + enableOverdrawOptimizer: false, + ) + .buffer + .asByteData(); + }, + message, + debugLabel: 'Load Bytes', + ); }); } @@ -224,11 +234,7 @@ class SvgCacheKey { /// vector_graphics binary representation. class SvgStringLoader extends SvgLoader { /// See class doc. - const SvgStringLoader( - this._svg, { - super.theme, - super.colorMapper, - }); + const SvgStringLoader(this._svg, {super.theme, super.colorMapper}); final String _svg; @@ -254,11 +260,7 @@ class SvgStringLoader extends SvgLoader { /// representation. class SvgBytesLoader extends SvgLoader { /// See class doc. - const SvgBytesLoader( - this.bytes, { - super.theme, - super.colorMapper, - }); + const SvgBytesLoader(this.bytes, {super.theme, super.colorMapper}); /// The UTF-8 encoded XML bytes. final Uint8List bytes; @@ -282,11 +284,7 @@ class SvgBytesLoader extends SvgLoader { /// a vector_graphics binary representation. class SvgFileLoader extends SvgLoader { /// See class doc. - const SvgFileLoader( - this.file, { - super.theme, - super.colorMapper, - }); + const SvgFileLoader(this.file, {super.theme, super.colorMapper}); /// The file containing the SVG data to decode and render. final File file; @@ -438,8 +436,10 @@ class SvgNetworkLoader extends SvgLoader { @override Future prepareMessage(BuildContext? context) async { final http.Client client = _httpClient ?? http.Client(); - final http.Response response = - await client.get(Uri.parse(url), headers: headers); + final http.Response response = await client.get( + Uri.parse(url), + headers: headers, + ); if (_httpClient == null) { client.close(); } diff --git a/third_party/packages/flutter_svg/lib/src/utilities/compute.dart b/third_party/packages/flutter_svg/lib/src/utilities/compute.dart index 7b8eab69d0f..67bd78d0b41 100644 --- a/third_party/packages/flutter_svg/lib/src/utilities/compute.dart +++ b/third_party/packages/flutter_svg/lib/src/utilities/compute.dart @@ -3,8 +3,10 @@ import 'dart:async'; import 'package:flutter/foundation.dart' as foundation; Future _testCompute( - foundation.ComputeCallback callback, Q message, - {String? debugLabel}) { + foundation.ComputeCallback callback, + Q message, { + String? debugLabel, +}) { if (foundation.kDebugMode) { final Type? bindingType = foundation.BindingBase.debugBindingType(); if (bindingType.toString() == 'AutomatedTestWidgetsFlutterBinding') {} diff --git a/third_party/packages/flutter_svg/lib/src/utilities/numbers.dart b/third_party/packages/flutter_svg/lib/src/utilities/numbers.dart index 23e2b406124..5cad4594c6f 100644 --- a/third_party/packages/flutter_svg/lib/src/utilities/numbers.dart +++ b/third_party/packages/flutter_svg/lib/src/utilities/numbers.dart @@ -10,13 +10,14 @@ double? parseDouble(String? rawDouble, {bool tryParse = false}) { return null; } - rawDouble = rawDouble - .replaceFirst('rem', '') - .replaceFirst('em', '') - .replaceFirst('ex', '') - .replaceFirst('px', '') - .replaceFirst('pt', '') - .trim(); + rawDouble = + rawDouble + .replaceFirst('rem', '') + .replaceFirst('em', '') + .replaceFirst('ex', '') + .replaceFirst('px', '') + .replaceFirst('pt', '') + .trim(); if (tryParse) { return double.tryParse(rawDouble); diff --git a/third_party/packages/flutter_svg/lib/svg.dart b/third_party/packages/flutter_svg/lib/svg.dart index 9df47f20151..0e61acfe7d1 100644 --- a/third_party/packages/flutter_svg/lib/svg.dart +++ b/third_party/packages/flutter_svg/lib/svg.dart @@ -18,11 +18,8 @@ export 'src/loaders.dart'; /// Builder function to create an error widget. This builder is called when /// the image failed loading. -typedef SvgErrorWidgetBuilder = Widget Function( - BuildContext context, - Object error, - StackTrace stackTrace, -); +typedef SvgErrorWidgetBuilder = + Widget Function(BuildContext context, Object error, StackTrace stackTrace); /// Instance for [Svg]'s utility methods, which can produce a [DrawableRoot] /// or [PictureInfo] from [String] or [Uint8List]. @@ -96,8 +93,9 @@ class SvgPicture extends StatelessWidget { this.clipBehavior = Clip.hardEdge, this.errorBuilder, @Deprecated( - 'No code should use this parameter. It never was implemented properly. ' - 'The SVG theme must be set on the bytesLoader.') + 'No code should use this parameter. It never was implemented properly. ' + 'The SVG theme must be set on the bytesLoader.', + ) SvgTheme? theme, @Deprecated('This no longer does anything.') bool cacheColorFilter = false, this.renderingStrategy = RenderingStrategy.picture, @@ -203,14 +201,14 @@ class SvgPicture extends StatelessWidget { ui.BlendMode colorBlendMode = ui.BlendMode.srcIn, @Deprecated('This no longer does anything.') bool cacheColorFilter = false, this.renderingStrategy = RenderingStrategy.picture, - }) : bytesLoader = SvgAssetLoader( - assetName, - packageName: package, - assetBundle: bundle, - theme: theme, - colorMapper: colorMapper, - ), - colorFilter = colorFilter ?? _getColorFilter(color, colorBlendMode); + }) : bytesLoader = SvgAssetLoader( + assetName, + packageName: package, + assetBundle: bundle, + theme: theme, + colorMapper: colorMapper, + ), + colorFilter = colorFilter ?? _getColorFilter(color, colorBlendMode); /// Creates a widget that displays an SVG obtained from the network. /// @@ -268,14 +266,14 @@ class SvgPicture extends StatelessWidget { ColorMapper? colorMapper, http.Client? httpClient, this.renderingStrategy = RenderingStrategy.picture, - }) : bytesLoader = SvgNetworkLoader( - url, - headers: headers, - theme: theme, - colorMapper: colorMapper, - httpClient: httpClient, - ), - colorFilter = colorFilter ?? _getColorFilter(color, colorBlendMode); + }) : bytesLoader = SvgNetworkLoader( + url, + headers: headers, + theme: theme, + colorMapper: colorMapper, + httpClient: httpClient, + ), + colorFilter = colorFilter ?? _getColorFilter(color, colorBlendMode); /// Creates a widget that displays an SVG obtained from a [File]. /// @@ -329,12 +327,12 @@ class SvgPicture extends StatelessWidget { ColorMapper? colorMapper, @Deprecated('This no longer does anything.') bool cacheColorFilter = false, this.renderingStrategy = RenderingStrategy.picture, - }) : bytesLoader = SvgFileLoader( - file, - theme: theme, - colorMapper: colorMapper, - ), - colorFilter = colorFilter ?? _getColorFilter(color, colorBlendMode); + }) : bytesLoader = SvgFileLoader( + file, + theme: theme, + colorMapper: colorMapper, + ), + colorFilter = colorFilter ?? _getColorFilter(color, colorBlendMode); /// Creates a widget that displays an SVG obtained from a [Uint8List]. /// @@ -385,12 +383,12 @@ class SvgPicture extends StatelessWidget { ColorMapper? colorMapper, @Deprecated('This no longer does anything.') bool cacheColorFilter = false, this.renderingStrategy = RenderingStrategy.picture, - }) : bytesLoader = SvgBytesLoader( - bytes, - theme: theme, - colorMapper: colorMapper, - ), - colorFilter = colorFilter ?? _getColorFilter(color, colorBlendMode); + }) : bytesLoader = SvgBytesLoader( + bytes, + theme: theme, + colorMapper: colorMapper, + ), + colorFilter = colorFilter ?? _getColorFilter(color, colorBlendMode); /// Creates a widget that displays an SVG obtained from a [String]. /// @@ -441,16 +439,17 @@ class SvgPicture extends StatelessWidget { ColorMapper? colorMapper, @Deprecated('This no longer does anything.') bool cacheColorFilter = false, this.renderingStrategy = RenderingStrategy.picture, - }) : bytesLoader = SvgStringLoader( - string, - theme: theme, - colorMapper: colorMapper, - ), - colorFilter = colorFilter ?? _getColorFilter(color, colorBlendMode); + }) : bytesLoader = SvgStringLoader( + string, + theme: theme, + colorMapper: colorMapper, + ), + colorFilter = colorFilter ?? _getColorFilter(color, colorBlendMode); static ColorFilter? _getColorFilter( - ui.Color? color, ui.BlendMode colorBlendMode) => - color == null ? null : ui.ColorFilter.mode(color, colorBlendMode); + ui.Color? color, + ui.BlendMode colorBlendMode, + ) => color == null ? null : ui.ColorFilter.mode(color, colorBlendMode); /// The default placeholder for a SVG that may take time to parse or /// retrieve, e.g. from a network location. @@ -565,57 +564,63 @@ class SvgPicture extends StatelessWidget { super.debugFillProperties(properties); properties - ..add(StringProperty( - 'bytesLoader', - bytesLoader.toString(), - showName: false, - )) + ..add( + StringProperty('bytesLoader', bytesLoader.toString(), showName: false), + ) ..add(DoubleProperty('width', width, defaultValue: null)) ..add(DoubleProperty('height', height, defaultValue: null)) - ..add(DiagnosticsProperty( - 'alignment', - alignment, - defaultValue: Alignment.center, - )) - ..add(DiagnosticsProperty( - 'allowDrawingOutsideViewBox', - allowDrawingOutsideViewBox, - defaultValue: false, - )) - ..add(EnumProperty( - 'clipBehavior', - clipBehavior, - defaultValue: BoxFit.contain, - )) - ..add(StringProperty( - 'colorFilter', - colorFilter.toString(), - defaultValue: null, - )) - ..add(EnumProperty( - 'fit', - fit, - defaultValue: BoxFit.contain, - )) - ..add(DiagnosticsProperty( - 'placeholderBuilder', - placeholderBuilder, - defaultValue: null, - )) - ..add(DiagnosticsProperty( - 'matchTextDirection', - matchTextDirection, - defaultValue: false, - )) - ..add(DiagnosticsProperty( - 'excludeFromSemantics', - excludeFromSemantics, - defaultValue: false, - )) - ..add(StringProperty( - 'semanticsLabel', - semanticsLabel, - defaultValue: null, - )); + ..add( + DiagnosticsProperty( + 'alignment', + alignment, + defaultValue: Alignment.center, + ), + ) + ..add( + DiagnosticsProperty( + 'allowDrawingOutsideViewBox', + allowDrawingOutsideViewBox, + defaultValue: false, + ), + ) + ..add( + EnumProperty( + 'clipBehavior', + clipBehavior, + defaultValue: BoxFit.contain, + ), + ) + ..add( + StringProperty( + 'colorFilter', + colorFilter.toString(), + defaultValue: null, + ), + ) + ..add(EnumProperty('fit', fit, defaultValue: BoxFit.contain)) + ..add( + DiagnosticsProperty( + 'placeholderBuilder', + placeholderBuilder, + defaultValue: null, + ), + ) + ..add( + DiagnosticsProperty( + 'matchTextDirection', + matchTextDirection, + defaultValue: false, + ), + ) + ..add( + DiagnosticsProperty( + 'excludeFromSemantics', + excludeFromSemantics, + defaultValue: false, + ), + ) + ..add( + StringProperty('semanticsLabel', semanticsLabel, defaultValue: null), + ); } } diff --git a/third_party/packages/flutter_svg/pubspec.yaml b/third_party/packages/flutter_svg/pubspec.yaml index 96d4f62b4e7..cca235351c9 100644 --- a/third_party/packages/flutter_svg/pubspec.yaml +++ b/third_party/packages/flutter_svg/pubspec.yaml @@ -5,8 +5,8 @@ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+ version: 2.2.0 environment: - sdk: ^3.6.0 - flutter: ">=3.27.0" + sdk: ^3.7.0 + flutter: ">=3.29.0" dependencies: flutter: diff --git a/third_party/packages/flutter_svg/test/cache_test.dart b/third_party/packages/flutter_svg/test/cache_test.dart index 4f05d37021d..8669633aa9c 100644 --- a/third_party/packages/flutter_svg/test/cache_test.dart +++ b/third_party/packages/flutter_svg/test/cache_test.dart @@ -32,12 +32,12 @@ void main() { test('LRU', () async { final Cache cache = Cache(); cache.maximumSize = 2; - final Completer completerA = Completer() - ..complete(ByteData(1)); - final Completer completerB = Completer() - ..complete(ByteData(2)); - final Completer completerC = Completer() - ..complete(ByteData(3)); + final Completer completerA = + Completer()..complete(ByteData(1)); + final Completer completerB = + Completer()..complete(ByteData(2)); + final Completer completerC = + Completer()..complete(ByteData(3)); expect(cache.count, 0); @@ -74,12 +74,15 @@ void main() { test('Adding beyond max with synchronous futures', () async { final Cache cache = Cache(); cache.maximumSize = 2; - final Future completerA = - SynchronousFuture(ByteData(1)); - final Future completerB = - SynchronousFuture(ByteData(2)); - final Future completerC = - SynchronousFuture(ByteData(3)); + final Future completerA = SynchronousFuture( + ByteData(1), + ); + final Future completerB = SynchronousFuture( + ByteData(2), + ); + final Future completerC = SynchronousFuture( + ByteData(3), + ); expect(cache.count, 0); diff --git a/third_party/packages/flutter_svg/test/default_theme_test.dart b/third_party/packages/flutter_svg/test/default_theme_test.dart index 62966ad2b41..88df13e4f37 100644 --- a/third_party/packages/flutter_svg/test/default_theme_test.dart +++ b/third_party/packages/flutter_svg/test/default_theme_test.dart @@ -15,10 +15,9 @@ void main() { '''); - await tester.pumpWidget(DefaultSvgTheme( - theme: svgTheme, - child: svgPictureWidget, - )); + await tester.pumpWidget( + DefaultSvgTheme(theme: svgTheme, child: svgPictureWidget), + ); SvgPicture svgPicture = tester.firstWidget(find.byType(SvgPicture)); expect(svgPicture, isNotNull); @@ -34,10 +33,9 @@ void main() { xHeight: 7.0, ); - await tester.pumpWidget(DefaultSvgTheme( - theme: anotherSvgTheme, - child: svgPictureWidget, - )); + await tester.pumpWidget( + DefaultSvgTheme(theme: anotherSvgTheme, child: svgPictureWidget), + ); context = tester.element(find.byType(SvgPicture)); svgPicture = tester.firstWidget(find.byType(SvgPicture)); @@ -48,27 +46,18 @@ void main() { ); }); - testWidgets( - "currentColor from the widget's theme takes precedence over " + testWidgets("currentColor from the widget's theme takes precedence over " 'the theme from DefaultSvgTheme', (WidgetTester tester) async { - const SvgTheme svgTheme = SvgTheme( - currentColor: Color(0xFF733821), - ); + const SvgTheme svgTheme = SvgTheme(currentColor: Color(0xFF733821)); - final SvgPicture svgPictureWidget = SvgPicture.string( - ''' + final SvgPicture svgPictureWidget = SvgPicture.string(''' -''', - theme: const SvgTheme( - currentColor: Color(0xFF05290E), - ), - ); +''', theme: const SvgTheme(currentColor: Color(0xFF05290E))); - await tester.pumpWidget(DefaultSvgTheme( - theme: svgTheme, - child: svgPictureWidget, - )); + await tester.pumpWidget( + DefaultSvgTheme(theme: svgTheme, child: svgPictureWidget), + ); final BuildContext context = tester.element(find.byType(SvgPicture)); final SvgPicture svgPicture = tester.firstWidget(find.byType(SvgPicture)); expect(svgPicture, isNotNull); @@ -80,25 +69,18 @@ void main() { ); }); - testWidgets( - "fontSize from the widget's theme takes precedence over " + testWidgets("fontSize from the widget's theme takes precedence over " 'the theme from DefaultSvgTheme', (WidgetTester tester) async { const SvgTheme svgTheme = SvgTheme(); - final SvgPicture svgPictureWidget = SvgPicture.string( - ''' + final SvgPicture svgPictureWidget = SvgPicture.string(''' -''', - theme: const SvgTheme( - fontSize: 12.0, - ), - ); +''', theme: const SvgTheme(fontSize: 12.0)); - await tester.pumpWidget(DefaultSvgTheme( - theme: svgTheme, - child: svgPictureWidget, - )); + await tester.pumpWidget( + DefaultSvgTheme(theme: svgTheme, child: svgPictureWidget), + ); final SvgPicture svgPicture = tester.firstWidget(find.byType(SvgPicture)); final BuildContext context = tester.element(find.byType(SvgPicture)); @@ -111,49 +93,42 @@ void main() { }); testWidgets( - 'fontSize defaults to 14 ' - "if no widget's theme, DefaultSvgTheme or DefaultTextStyle is provided", - (WidgetTester tester) async { - final SvgPicture svgPictureWidget = SvgPicture.string( - ''' + 'fontSize defaults to 14 ' + "if no widget's theme, DefaultSvgTheme or DefaultTextStyle is provided", + (WidgetTester tester) async { + final SvgPicture svgPictureWidget = SvgPicture.string(''' -''', - ); - - await tester.pumpWidget(svgPictureWidget); - - final SvgPicture svgPicture = tester.firstWidget(find.byType(SvgPicture)); - final BuildContext context = tester.element(find.byType(SvgPicture)); - expect(svgPicture, isNotNull); - expect( - (svgPicture.bytesLoader as SvgStringLoader).getTheme(context).fontSize, - equals(14.0), - ); - }); +'''); - testWidgets( - "xHeight from the widget's theme takes precedence over " + await tester.pumpWidget(svgPictureWidget); + + final SvgPicture svgPicture = tester.firstWidget( + find.byType(SvgPicture), + ); + final BuildContext context = tester.element(find.byType(SvgPicture)); + expect(svgPicture, isNotNull); + expect( + (svgPicture.bytesLoader as SvgStringLoader) + .getTheme(context) + .fontSize, + equals(14.0), + ); + }, + ); + + testWidgets("xHeight from the widget's theme takes precedence over " 'the theme from DefaultSvgTheme', (WidgetTester tester) async { - const SvgTheme svgTheme = SvgTheme( - xHeight: 6.5, - ); + const SvgTheme svgTheme = SvgTheme(xHeight: 6.5); - final SvgPicture svgPictureWidget = SvgPicture.string( - ''' + final SvgPicture svgPictureWidget = SvgPicture.string(''' -''', - theme: const SvgTheme( - fontSize: 12.0, - xHeight: 7.0, - ), - ); +''', theme: const SvgTheme(fontSize: 12.0, xHeight: 7.0)); - await tester.pumpWidget(DefaultSvgTheme( - theme: svgTheme, - child: svgPictureWidget, - )); + await tester.pumpWidget( + DefaultSvgTheme(theme: svgTheme, child: svgPictureWidget), + ); final SvgPicture svgPicture = tester.firstWidget(find.byType(SvgPicture)); final BuildContext context = tester.element(find.byType(SvgPicture)); @@ -164,16 +139,14 @@ void main() { ); }); - testWidgets( - 'xHeight defaults to the font size divided by 2 (7.0) ' - "if no widget's theme or DefaultSvgTheme is provided", - (WidgetTester tester) async { - final SvgPicture svgPictureWidget = SvgPicture.string( - ''' + testWidgets('xHeight defaults to the font size divided by 2 (7.0) ' + "if no widget's theme or DefaultSvgTheme is provided", ( + WidgetTester tester, + ) async { + final SvgPicture svgPictureWidget = SvgPicture.string(''' -''', - ); +'''); await tester.pumpWidget(svgPictureWidget); diff --git a/third_party/packages/flutter_svg/test/loaders_test.dart b/third_party/packages/flutter_svg/test/loaders_test.dart index 28f53251263..ec5b17fb9d0 100644 --- a/third_party/packages/flutter_svg/test/loaders_test.dart +++ b/third_party/packages/flutter_svg/test/loaders_test.dart @@ -20,10 +20,12 @@ void main() { }); test('SvgTheme updates the cache', () async { - const TestLoader loaderA = - TestLoader(theme: SvgTheme(currentColor: Color(0xFFABCDEF))); - const TestLoader loaderB = - TestLoader(theme: SvgTheme(currentColor: Color(0xFFFEDCBA))); + const TestLoader loaderA = TestLoader( + theme: SvgTheme(currentColor: Color(0xFFABCDEF)), + ); + const TestLoader loaderB = TestLoader( + theme: SvgTheme(currentColor: Color(0xFFFEDCBA)), + ); final ByteData bytesA = await loaderA.loadBytes(null); final ByteData bytesB = await loaderB.loadBytes(null); expect(identical(bytesA, bytesB), false); @@ -53,8 +55,11 @@ void main() { 'packages/packageName/foo': Uint8List(1).buffer.asByteData(), }); final SvgAssetLoader loader = SvgAssetLoader('foo', assetBundle: bundle); - final SvgAssetLoader packageLoader = - SvgAssetLoader('foo', assetBundle: bundle, packageName: 'packageName'); + final SvgAssetLoader packageLoader = SvgAssetLoader( + 'foo', + assetBundle: bundle, + packageName: 'packageName', + ); expect((await loader.prepareMessage(null))!.lengthInBytes, 0); expect((await packageLoader.prepareMessage(null))!.lengthInBytes, 1); }); @@ -62,19 +67,22 @@ void main() { test('SvgNetworkLoader closes internal client', () async { final List createdClients = []; - await http.runWithClient(() async { - const SvgNetworkLoader loader = SvgNetworkLoader(''); - - expect(createdClients, isEmpty); - await loader.prepareMessage(null); - - expect(createdClients, hasLength(1)); - expect(createdClients[0].closeCalled, isTrue); - }, () { - final VerifyCloseClient client = VerifyCloseClient(); - createdClients.add(client); - return client; - }); + await http.runWithClient( + () async { + const SvgNetworkLoader loader = SvgNetworkLoader(''); + + expect(createdClients, isEmpty); + await loader.prepareMessage(null); + + expect(createdClients, hasLength(1)); + expect(createdClients[0].closeCalled, isTrue); + }, + () { + final VerifyCloseClient client = VerifyCloseClient(); + createdClients.add(client); + return client; + }, + ); }); test("SvgNetworkLoader doesn't close passed client", () async { @@ -114,7 +122,10 @@ class TestLoader extends SvgLoader { @override SvgCacheKey cacheKey(BuildContext? context) { return SvgCacheKey( - theme: theme, colorMapper: colorMapper, keyData: keyName); + theme: theme, + colorMapper: colorMapper, + keyData: keyName, + ); } } @@ -123,7 +134,11 @@ class _TestColorMapper extends ColorMapper { @override Color substitute( - String? id, String elementName, String attributeName, Color color) { + String? id, + String elementName, + String attributeName, + Color color, + ) { return color; } } diff --git a/third_party/packages/flutter_svg/test/no_width_height_test.dart b/third_party/packages/flutter_svg/test/no_width_height_test.dart index 61ab76de5f9..51cea710979 100644 --- a/third_party/packages/flutter_svg/test/no_width_height_test.dart +++ b/third_party/packages/flutter_svg/test/no_width_height_test.dart @@ -8,9 +8,7 @@ void main() { await tester.pumpWidget( const Directionality( textDirection: TextDirection.ltr, - child: RepaintBoundary( - child: ColumnsAndRows(), - ), + child: RepaintBoundary(child: ColumnsAndRows()), ), ); await tester.pumpAndSettle(); @@ -30,15 +28,8 @@ class ColumnsAndRows extends StatelessWidget { Widget build(BuildContext context) { return const Column( children: [ - Row(children: [ - ImageWithText(), - ]), - Row( - children: [ - ImageWithText(), - ImageWithText(), - ], - ), + Row(children: [ImageWithText()]), + Row(children: [ImageWithText(), ImageWithText()]), Row( children: [ ImageWithText(), @@ -80,20 +71,10 @@ class ImageWithText extends StatelessWidget { @override Widget build(BuildContext context) { final Widget image = SvgPicture.string(circleSvg); - final Widget imageContainer = ColoredBox( - color: Colors.amber, - child: image, - ); + final Widget imageContainer = ColoredBox(color: Colors.amber, child: image); const Widget text = Text('Hello'); - final Widget column = Column( - children: [ - imageContainer, - text, - ], - ); - return Expanded( - child: column, - ); + final Widget column = Column(children: [imageContainer, text]); + return Expanded(child: column); } } diff --git a/third_party/packages/flutter_svg/test/widget_svg_test.dart b/third_party/packages/flutter_svg/test/widget_svg_test.dart index 9d7c9a98174..9cb5e1bba97 100644 --- a/third_party/packages/flutter_svg/test/widget_svg_test.dart +++ b/third_party/packages/flutter_svg/test/widget_svg_test.dart @@ -25,9 +25,10 @@ class _TolerantComparator extends LocalFileComparator { } else { // ignore: avoid_print print( - 'Warning - golden differed less than .06% (${result.diffPercent}%), ' - 'ignoring failure but producing output\n' - '$error'); + 'Warning - golden differed less than .06% (${result.diffPercent}%), ' + 'ignoring failure but producing output\n' + '$error', + ); } } return true; @@ -46,7 +47,11 @@ class _TestColorMapper extends ColorMapper { /// Substitutes specific colors for testing the SVG rendering. @override Color substitute( - String? id, String elementName, String attributeName, Color color) { + String? id, + String elementName, + String attributeName, + Color color, + ) { if (color == const Color(0xFF42A5F5)) { return const Color(0xFF00FF00); // Green } @@ -64,35 +69,35 @@ class _TestColorMapper extends ColorMapper { } void main() { - final MediaQueryData mediaQueryData = - MediaQueryData.fromView(PlatformDispatcher.instance.implicitView!); + final MediaQueryData mediaQueryData = MediaQueryData.fromView( + PlatformDispatcher.instance.implicitView!, + ); setUpAll(() { final LocalFileComparator oldComparator = goldenFileComparator as LocalFileComparator; - final _TolerantComparator newComparator = - _TolerantComparator(Uri.parse('${oldComparator.basedir}test')); + final _TolerantComparator newComparator = _TolerantComparator( + Uri.parse('${oldComparator.basedir}test'), + ); expect(oldComparator.basedir, newComparator.basedir); goldenFileComparator = newComparator; }); testWidgets( - 'SvgPicture does not use a color filtering widget when no color specified', - (WidgetTester tester) async { - await tester.pumpWidget( - SvgPicture.string( - svgStr, - width: 100.0, - height: 100.0, - ), - ); - await tester.pumpAndSettle(); + 'SvgPicture does not use a color filtering widget when no color specified', + (WidgetTester tester) async { + await tester.pumpWidget( + SvgPicture.string(svgStr, width: 100.0, height: 100.0), + ); + await tester.pumpAndSettle(); - expect(find.byType(ColorFiltered), findsNothing); - }); + expect(find.byType(ColorFiltered), findsNothing); + }, + ); - testWidgets('SvgPicture can work with a FittedBox', - (WidgetTester tester) async { + testWidgets('SvgPicture can work with a FittedBox', ( + WidgetTester tester, + ) async { final GlobalKey key = GlobalKey(); await tester.pumpWidget( MediaQuery( @@ -104,11 +109,7 @@ void main() { Flexible( child: FittedBox( fit: BoxFit.fitWidth, - child: SvgPicture.string( - svgStr, - width: 20.0, - height: 14.0, - ), + child: SvgPicture.string(svgStr, width: 20.0, height: 14.0), ), ), ], @@ -127,11 +128,7 @@ void main() { data: mediaQueryData, child: RepaintBoundary( key: key, - child: SvgPicture.string( - svgStr, - width: 100.0, - height: 100.0, - ), + child: SvgPicture.string(svgStr, width: 100.0, height: 100.0), ), ), ); @@ -140,8 +137,9 @@ void main() { await _checkWidgetAndGolden(key, 'flutter_logo.string.png'); }); - testWidgets('SvgPicture.string with renderingStrategy', - (WidgetTester tester) async { + testWidgets('SvgPicture.string with renderingStrategy', ( + WidgetTester tester, + ) async { final GlobalKey key = GlobalKey(); await tester.pumpWidget( MediaQuery( @@ -162,8 +160,9 @@ void main() { await _checkWidgetAndGolden(key, 'flutter_logo.string.png'); }); - testWidgets('SvgPicture.string with colorMapper', - (WidgetTester tester) async { + testWidgets('SvgPicture.string with colorMapper', ( + WidgetTester tester, + ) async { final GlobalKey key = GlobalKey(); await tester.pumpWidget( MediaQuery( @@ -189,12 +188,7 @@ void main() { await tester.pumpWidget( MediaQuery( data: mediaQueryData, - child: Center( - key: key, - child: SvgPicture.string( - svgStr, - ), - ), + child: Center(key: key, child: SvgPicture.string(svgStr)), ), ); @@ -207,12 +201,7 @@ void main() { await tester.pumpWidget( MediaQuery( data: mediaQueryData, - child: Center( - key: key, - child: SvgPicture.string( - stickFigureSvgStr, - ), - ), + child: Center(key: key, child: SvgPicture.string(stickFigureSvgStr)), ), ); @@ -305,12 +294,7 @@ void main() { await tester.pumpWidget( MediaQuery( data: mediaQueryData, - child: RepaintBoundary( - key: key, - child: SvgPicture.memory( - svgBytes, - ), - ), + child: RepaintBoundary(key: key, child: SvgPicture.memory(svgBytes)), ), ); await tester.pumpAndSettle(); @@ -337,8 +321,9 @@ void main() { await _checkWidgetAndGolden(key, 'flutter_logo.memory.png'); }); - testWidgets('SvgPicture.memory with colorMapper', - (WidgetTester tester) async { + testWidgets('SvgPicture.memory with colorMapper', ( + WidgetTester tester, + ) async { final GlobalKey key = GlobalKey(); await tester.pumpWidget( MediaQuery( @@ -365,10 +350,7 @@ void main() { data: mediaQueryData, child: RepaintBoundary( key: key, - child: SvgPicture.asset( - 'test.svg', - bundle: fakeAsset, - ), + child: SvgPicture.asset('test.svg', bundle: fakeAsset), ), ), ); @@ -416,8 +398,9 @@ void main() { await _checkWidgetAndGolden(key, 'flutter_logo.asset.color_mapper.png'); }); - testWidgets('SvgPicture.asset DefaultAssetBundle', - (WidgetTester tester) async { + testWidgets('SvgPicture.asset DefaultAssetBundle', ( + WidgetTester tester, + ) async { final FakeAssetBundle fakeAsset = FakeAssetBundle(); final GlobalKey key = GlobalKey(); await tester.pumpWidget( @@ -429,10 +412,7 @@ void main() { bundle: fakeAsset, child: RepaintBoundary( key: key, - child: SvgPicture.asset( - 'test.svg', - semanticsLabel: 'Test SVG', - ), + child: SvgPicture.asset('test.svg', semanticsLabel: 'Test SVG'), ), ), ), @@ -442,8 +422,9 @@ void main() { await _checkWidgetAndGolden(key, 'flutter_logo.asset.png'); }); - testWidgets('SvgPicture.asset DefaultAssetBundle with strategy', - (WidgetTester tester) async { + testWidgets('SvgPicture.asset DefaultAssetBundle with strategy', ( + WidgetTester tester, + ) async { final FakeAssetBundle fakeAsset = FakeAssetBundle(); final GlobalKey key = GlobalKey(); await tester.pumpWidget( @@ -469,8 +450,9 @@ void main() { await _checkWidgetAndGolden(key, 'flutter_logo.asset.png'); }); - testWidgets('SvgPicture.asset DefaultAssetBundle with colorMapper', - (WidgetTester tester) async { + testWidgets('SvgPicture.asset DefaultAssetBundle with colorMapper', ( + WidgetTester tester, + ) async { final FakeAssetBundle fakeAsset = FakeAssetBundle(); final GlobalKey key = GlobalKey(); await tester.pumpWidget( @@ -503,10 +485,7 @@ void main() { data: mediaQueryData, child: RepaintBoundary( key: key, - child: SvgPicture.network( - 'test.svg', - httpClient: FakeHttpClient(), - ), + child: SvgPicture.network('test.svg', httpClient: FakeHttpClient()), ), ), ); @@ -533,8 +512,9 @@ void main() { await _checkWidgetAndGolden(key, 'flutter_logo.network.png'); }); - testWidgets('SvgPicture.network with colorMapper', - (WidgetTester tester) async { + testWidgets('SvgPicture.network with colorMapper', ( + WidgetTester tester, + ) async { final GlobalKey key = GlobalKey(); await tester.pumpWidget( MediaQuery( @@ -573,17 +553,14 @@ void main() { expect(client.headers['a'], 'b'); }); - testWidgets('SvgPicture can be created without a MediaQuery', - (WidgetTester tester) async { + testWidgets('SvgPicture can be created without a MediaQuery', ( + WidgetTester tester, + ) async { final GlobalKey key = GlobalKey(); await tester.pumpWidget( RepaintBoundary( key: key, - child: SvgPicture.string( - svgStr, - width: 100.0, - height: 100.0, - ), + child: SvgPicture.string(svgStr, width: 100.0, height: 100.0), ), ); @@ -597,10 +574,7 @@ void main() { await tester.pumpWidget( MediaQuery( data: mediaQueryData, - child: SvgPicture.network( - 'notFound.svg', - httpClient: client, - ), + child: SvgPicture.network('notFound.svg', httpClient: client), ), ); }, isNotNull); @@ -632,11 +606,7 @@ void main() { Directionality( textDirection: TextDirection.ltr, child: RepaintBoundary( - child: SvgPicture.string( - svgStr, - width: 100.0, - height: 100.0, - ), + child: SvgPicture.string(svgStr, width: 100.0, height: 100.0), ), ), ); @@ -666,8 +636,9 @@ void main() { expect(find.byType(Semantics), findsNothing); }); - testWidgets('SvgPicture colorFilter - flutter logo', - (WidgetTester tester) async { + testWidgets('SvgPicture colorFilter - flutter logo', ( + WidgetTester tester, + ) async { final GlobalKey key = GlobalKey(); await tester.pumpWidget( RepaintBoundary( @@ -724,13 +695,15 @@ void main() { }); testWidgets('Can take AlignmentDirectional', (WidgetTester tester) async { - await tester.pumpWidget(Directionality( - textDirection: TextDirection.ltr, - child: SvgPicture.string( - svgStr, - alignment: AlignmentDirectional.bottomEnd, + await tester.pumpWidget( + Directionality( + textDirection: TextDirection.ltr, + child: SvgPicture.string( + svgStr, + alignment: AlignmentDirectional.bottomEnd, + ), ), - )); + ); expect(find.byType(SvgPicture), findsOneWidget); }); @@ -758,8 +731,9 @@ void main() { await _checkWidgetAndGolden(key, 'circle.em_ex.png'); }); - testWidgets('rect (x, y, width, height, rx, ry)', - (WidgetTester tester) async { + testWidgets('rect (x, y, width, height, rx, ry)', ( + WidgetTester tester, + ) async { final GlobalKey key = GlobalKey(); const String svgStr = ''' @@ -845,10 +819,7 @@ void main() { key: key, child: SvgPicture.string( svgStr, - theme: const SvgTheme( - fontSize: 1500, - xHeight: 600, - ), + theme: const SvgTheme(fontSize: 1500, xHeight: 600), ), ), ); @@ -857,8 +828,9 @@ void main() { await _checkWidgetAndGolden(key, 'circle.em_ex2.png'); }); - testWidgets('rect (x, y, width, height, rx, ry)', - (WidgetTester tester) async { + testWidgets('rect (x, y, width, height, rx, ry)', ( + WidgetTester tester, + ) async { final GlobalKey key = GlobalKey(); const String svgStr = ''' @@ -872,10 +844,7 @@ void main() { key: key, child: SvgPicture.string( svgStr, - theme: const SvgTheme( - fontSize: 300, - xHeight: 100, - ), + theme: const SvgTheme(fontSize: 300, xHeight: 100), ), ), ); @@ -898,10 +867,7 @@ void main() { key: key, child: SvgPicture.string( svgStr, - theme: const SvgTheme( - fontSize: 300, - xHeight: 100, - ), + theme: const SvgTheme(fontSize: 300, xHeight: 100), ), ), ); @@ -925,10 +891,7 @@ void main() { key: key, child: SvgPicture.string( svgStr, - theme: const SvgTheme( - fontSize: 300, - xHeight: 100, - ), + theme: const SvgTheme(fontSize: 300, xHeight: 100), ), ), ); @@ -941,16 +904,19 @@ void main() { testWidgets('SvgPicture - two of the same', (WidgetTester tester) async { // Regression test to make sure the same SVG can render twice in the same // view. If layers are incorrectly reused, this will fail. - await tester.pumpWidget(RepaintBoundary( + await tester.pumpWidget( + RepaintBoundary( child: Directionality( - textDirection: TextDirection.ltr, - child: Row( - children: [ - SvgPicture.string(simpleSvg), - SvgPicture.string(simpleSvg), - ], + textDirection: TextDirection.ltr, + child: Row( + children: [ + SvgPicture.string(simpleSvg), + SvgPicture.string(simpleSvg), + ], + ), + ), ), - ))); + ); await tester.pumpAndSettle(); await expectLater( @@ -983,35 +949,42 @@ void main() { '''; // First try with SvgPicture.string - await tester.pumpWidget(RepaintBoundary( - child: SvgPicture.string(svgStr), - )); + await tester.pumpWidget( + RepaintBoundary(child: SvgPicture.string(svgStr)), + ); await tester.runAsync(() => vg.waitForPendingDecodes()); await tester.pumpAndSettle(); Finder widgetFinder = find.byType(SvgPicture); expect(widgetFinder, findsOneWidget); await expectLater( - widgetFinder, matchesGoldenFile('golden_widget/image_$key.png')); + widgetFinder, + matchesGoldenFile('golden_widget/image_$key.png'), + ); // Then with SvgPicture.memory - await tester.pumpWidget(RepaintBoundary( - // ignore: unnecessary_cast - child: SvgPicture.memory(utf8.encode(svgStr) as Uint8List), - )); + await tester.pumpWidget( + RepaintBoundary( + // ignore: unnecessary_cast + child: SvgPicture.memory(utf8.encode(svgStr) as Uint8List), + ), + ); await tester.runAsync(() => vg.waitForPendingDecodes()); await tester.pumpAndSettle(); widgetFinder = find.byType(SvgPicture); expect(widgetFinder, findsOneWidget); await expectLater( - widgetFinder, matchesGoldenFile('golden_widget/image_$key.png')); + widgetFinder, + matchesGoldenFile('golden_widget/image_$key.png'), + ); } }); group('SvgPicture - errorBuilder', () { - testWidgets('SvgPicture.string handles failure', - (WidgetTester tester) async { + testWidgets('SvgPicture.string handles failure', ( + WidgetTester tester, + ) async { await tester.pumpWidget( MediaQuery( data: mediaQueryData, @@ -1035,8 +1008,9 @@ void main() { expect(find.text('image failed'), findsOneWidget); }); - testWidgets('SvgPicture.memory handles failure', - (WidgetTester tester) async { + testWidgets('SvgPicture.memory handles failure', ( + WidgetTester tester, + ) async { await tester.pumpWidget( MediaQuery( data: mediaQueryData, @@ -1060,8 +1034,9 @@ void main() { expect(find.text('image failed'), findsOneWidget); }); - testWidgets('SvgPicture.asset handles failure', - (WidgetTester tester) async { + testWidgets('SvgPicture.asset handles failure', ( + WidgetTester tester, + ) async { await tester.pumpWidget( MediaQuery( data: mediaQueryData, diff --git a/third_party/packages/flutter_svg_test/CHANGELOG.md b/third_party/packages/flutter_svg_test/CHANGELOG.md index 1fe8f6caad9..e79107dc227 100644 --- a/third_party/packages/flutter_svg_test/CHANGELOG.md +++ b/third_party/packages/flutter_svg_test/CHANGELOG.md @@ -1,6 +1,6 @@ ## NEXT -* Updates minimum supported SDK version to Flutter 3.27/Dart 3.6. +* Updates minimum supported SDK version to Flutter 3.29/Dart 3.7. ## 1.0.3 diff --git a/third_party/packages/flutter_svg_test/README.md b/third_party/packages/flutter_svg_test/README.md index 50d2d8dbcd5..aff5ef9a903 100644 --- a/third_party/packages/flutter_svg_test/README.md +++ b/third_party/packages/flutter_svg_test/README.md @@ -20,10 +20,7 @@ The following example shows how you can find svgs with the matching `SvgAssetLoa testWidgets('asset svg', (WidgetTester widgetTester) async { final SvgPicture asset = SvgPicture.asset('test/flutter_logo.svg'); await widgetTester.pumpWidget( - DefaultAssetBundle( - bundle: _FakeAssetBundle(), - child: asset, - ), + DefaultAssetBundle(bundle: _FakeAssetBundle(), child: asset), ); expect(find.svg(asset.bytesLoader), findsOneWidget); diff --git a/third_party/packages/flutter_svg_test/lib/flutter_svg_test.dart b/third_party/packages/flutter_svg_test/lib/flutter_svg_test.dart index a2200ef5111..eddd93280a1 100644 --- a/third_party/packages/flutter_svg_test/lib/flutter_svg_test.dart +++ b/third_party/packages/flutter_svg_test/lib/flutter_svg_test.dart @@ -79,16 +79,13 @@ class _SvgFinder extends MatchFinder { @override bool matches(Element candidate) { - return _getBytesLoader( - candidate, - (BytesLoader loader) => loader == _svg, - ); + return _getBytesLoader(candidate, (BytesLoader loader) => loader == _svg); } } class _SvgAssetWithPathFinder extends MatchFinder { _SvgAssetWithPathFinder({required String svgPath, super.skipOffstage}) - : _svgPath = svgPath; + : _svgPath = svgPath; final String _svgPath; @override @@ -105,7 +102,7 @@ class _SvgAssetWithPathFinder extends MatchFinder { class _SvgNetworkWithUrlFinder extends MatchFinder { _SvgNetworkWithUrlFinder({required String url, super.skipOffstage}) - : _url = url; + : _url = url; final String _url; @override @@ -122,7 +119,7 @@ class _SvgNetworkWithUrlFinder extends MatchFinder { class _SvgFileWithPathFinder extends MatchFinder { _SvgFileWithPathFinder({required String path, super.skipOffstage}) - : _path = path; + : _path = path; final String _path; @override @@ -139,7 +136,7 @@ class _SvgFileWithPathFinder extends MatchFinder { class _SvgMemoryWithBytesFinder extends MatchFinder { _SvgMemoryWithBytesFinder({required Uint8List bytes, super.skipOffstage}) - : _bytes = bytes; + : _bytes = bytes; final Uint8List _bytes; @override @@ -154,10 +151,7 @@ class _SvgMemoryWithBytesFinder extends MatchFinder { } } -bool _getBytesLoader( - Element candidate, - bool Function(T loader) matcher, -) { +bool _getBytesLoader(Element candidate, bool Function(T loader) matcher) { bool result = false; final Widget widget = candidate.widget; if (widget is SvgPicture) { diff --git a/third_party/packages/flutter_svg_test/pubspec.yaml b/third_party/packages/flutter_svg_test/pubspec.yaml index 6cc7caccada..5eb587902d1 100644 --- a/third_party/packages/flutter_svg_test/pubspec.yaml +++ b/third_party/packages/flutter_svg_test/pubspec.yaml @@ -5,8 +5,8 @@ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+ version: 1.0.3 environment: - sdk: ^3.6.0 - flutter: ">=3.27.0" + sdk: ^3.7.0 + flutter: ">=3.29.0" dependencies: flutter: diff --git a/third_party/packages/flutter_svg_test/test/flutter_svg_test_test.dart b/third_party/packages/flutter_svg_test/test/flutter_svg_test_test.dart index 349aead3a7e..75a793dfe7b 100644 --- a/third_party/packages/flutter_svg_test/test/flutter_svg_test_test.dart +++ b/third_party/packages/flutter_svg_test/test/flutter_svg_test_test.dart @@ -15,10 +15,7 @@ void main() { testWidgets('asset svg', (WidgetTester widgetTester) async { final SvgPicture asset = SvgPicture.asset('test/flutter_logo.svg'); await widgetTester.pumpWidget( - DefaultAssetBundle( - bundle: _FakeAssetBundle(), - child: asset, - ), + DefaultAssetBundle(bundle: _FakeAssetBundle(), child: asset), ); expect(find.svg(asset.bytesLoader), findsOneWidget); diff --git a/third_party/packages/path_parsing/CHANGELOG.md b/third_party/packages/path_parsing/CHANGELOG.md index 2585fcd554f..63d613dadd4 100644 --- a/third_party/packages/path_parsing/CHANGELOG.md +++ b/third_party/packages/path_parsing/CHANGELOG.md @@ -1,6 +1,6 @@ ## NEXT -* Updates minimum supported SDK version to Flutter 3.27/Dart 3.6. +* Updates minimum supported SDK version to Flutter 3.29/Dart 3.7. ## 1.1.0 diff --git a/third_party/packages/path_parsing/example/pubspec.yaml b/third_party/packages/path_parsing/example/pubspec.yaml index db217ee5270..4b61b8334cc 100644 --- a/third_party/packages/path_parsing/example/pubspec.yaml +++ b/third_party/packages/path_parsing/example/pubspec.yaml @@ -2,7 +2,7 @@ name: path_parsing_example publish_to: none environment: - sdk: ^3.6.0 + sdk: ^3.7.0 dependencies: path_parsing: diff --git a/third_party/packages/path_parsing/lib/src/path_parsing.dart b/third_party/packages/path_parsing/lib/src/path_parsing.dart index f7cb0f27b76..c0013a61968 100644 --- a/third_party/packages/path_parsing/lib/src/path_parsing.dart +++ b/third_party/packages/path_parsing/lib/src/path_parsing.dart @@ -56,8 +56,8 @@ abstract class PathProxy { @immutable class _PathOffset { const _PathOffset(this.dx, this.dy) - : assert(dx != null), // ignore: unnecessary_null_comparison - assert(dy != null); // ignore: unnecessary_null_comparison + : assert(dx != null), // ignore: unnecessary_null_comparison + assert(dy != null); // ignore: unnecessary_null_comparison static _PathOffset get zero => const _PathOffset(0.0, 0.0); final double dx; @@ -94,10 +94,10 @@ const double _piOverTwoFloat = math.pi / 2.0; class SvgPathStringSource { SvgPathStringSource(this._string) - : assert(_string != null), // ignore: unnecessary_null_comparison - _previousCommand = SvgPathSegType.unknown, - _idx = 0, - _length = _string.length { + : assert(_string != null), // ignore: unnecessary_null_comparison + _previousCommand = SvgPathSegType.unknown, + _idx = 0, + _length = _string.length { _skipOptionalSvgSpaces(); } @@ -146,8 +146,9 @@ class SvgPathStringSource { } } - void _skipOptionalSvgSpacesOrDelimiter( - [int delimiter = AsciiConstants.comma]) { + void _skipOptionalSvgSpacesOrDelimiter([ + int delimiter = AsciiConstants.comma, + ]) { final int c = _skipOptionalSvgSpaces(); if (c == delimiter) { _idx++; @@ -384,12 +385,16 @@ class SvgPathStringSource { segment.targetPoint = _PathOffset(_parseNumber(), _parseNumber()); case SvgPathSegType.lineToHorizontalRel: case SvgPathSegType.lineToHorizontalAbs: - segment.targetPoint = - _PathOffset(_parseNumber(), segment.targetPoint.dy); + segment.targetPoint = _PathOffset( + _parseNumber(), + segment.targetPoint.dy, + ); case SvgPathSegType.lineToVerticalRel: case SvgPathSegType.lineToVerticalAbs: - segment.targetPoint = - _PathOffset(segment.targetPoint.dx, _parseNumber()); + segment.targetPoint = _PathOffset( + segment.targetPoint.dx, + _parseNumber(), + ); case SvgPathSegType.close: _skipOptionalSvgSpaces(); case SvgPathSegType.quadToRel: @@ -414,9 +419,13 @@ class SvgPathStringSource { @Deprecated('Utility function that should not be public.') // TODO(kevmoo): Remove this in the next release https://github.com/flutter/flutter/issues/157940 _PathOffset reflectedPoint( - _PathOffset reflectedIn, _PathOffset pointToReflect) { - return _PathOffset(2 * reflectedIn.dx - pointToReflect.dx, - 2 * reflectedIn.dy - pointToReflect.dy); + _PathOffset reflectedIn, + _PathOffset pointToReflect, +) { + return _PathOffset( + 2 * reflectedIn.dx - pointToReflect.dx, + 2 * reflectedIn.dy - pointToReflect.dy, + ); } const double _kOneOverThree = 1.0 / 3.0; @@ -425,8 +434,10 @@ const double _kOneOverThree = 1.0 / 3.0; @Deprecated('Utility function that should not be public.') // TODO(kevmoo): Remove this in the next release https://github.com/flutter/flutter/issues/157940 _PathOffset blendPoints(_PathOffset p1, _PathOffset p2) { - return _PathOffset((p1.dx + 2 * p2.dx) * _kOneOverThree, - (p1.dy + 2 * p2.dy) * _kOneOverThree); + return _PathOffset( + (p1.dx + 2 * p2.dx) * _kOneOverThree, + (p1.dy + 2 * p2.dy) * _kOneOverThree, + ); } bool isCubicCommand(SvgPathSegType command) { @@ -447,9 +458,9 @@ bool isQuadraticCommand(SvgPathSegType command) { // There are probably better/clearer ways to do it for Dart. class PathSegmentData { PathSegmentData() - : command = SvgPathSegType.unknown, - arcSweep = false, - arcLarge = false; + : command = SvgPathSegType.unknown, + arcSweep = false, + arcLarge = false; @Deprecated('Utility member that should not be public.') // TODO(kevmoo): Remove this in the next release https://github.com/flutter/flutter/issues/157940 @@ -528,11 +539,15 @@ class SvgPathNormalizer { case SvgPathSegType.arcToRel: normSeg.targetPoint += _currentPoint; case SvgPathSegType.lineToHorizontalAbs: - normSeg.targetPoint = - _PathOffset(normSeg.targetPoint.dx, _currentPoint.dy); + normSeg.targetPoint = _PathOffset( + normSeg.targetPoint.dx, + _currentPoint.dy, + ); case SvgPathSegType.lineToVerticalAbs: - normSeg.targetPoint = - _PathOffset(_currentPoint.dx, normSeg.targetPoint.dy); + normSeg.targetPoint = _PathOffset( + _currentPoint.dx, + normSeg.targetPoint.dy, + ); case SvgPathSegType.close: // Reset m_currentPoint for the next path. normSeg.targetPoint = _subPathPoint; @@ -566,10 +581,7 @@ class SvgPathNormalizer { if (!isCubicCommand(_lastCommand)) { normSeg.point1 = _currentPoint; } else { - normSeg.point1 = reflectedPoint( - _currentPoint, - _controlPoint, - ); + normSeg.point1 = reflectedPoint(_currentPoint, _controlPoint); } continue cubic_abs2; case SvgPathSegType.cubicToRel: @@ -590,10 +602,7 @@ class SvgPathNormalizer { if (!isQuadraticCommand(_lastCommand)) { normSeg.point1 = _currentPoint; } else { - normSeg.point1 = reflectedPoint( - _currentPoint, - _controlPoint, - ); + normSeg.point1 = reflectedPoint(_currentPoint, _controlPoint); } continue quad_abs2; case SvgPathSegType.quadToRel: @@ -602,10 +611,7 @@ class SvgPathNormalizer { // Save the unmodified control point. _controlPoint = normSeg.point1; normSeg.point1 = blendPoints(_currentPoint, _controlPoint); - normSeg.point2 = blendPoints( - normSeg.targetPoint, - _controlPoint, - ); + normSeg.point2 = blendPoints(normSeg.targetPoint, _controlPoint); // normSeg.command = SvgPathSegType.cubicToAbs; path.cubicTo( normSeg.point1.dx, @@ -643,10 +649,10 @@ class SvgPathNormalizer { _lastCommand = segment.command; } -// This works by converting the SVG arc to "simple" beziers. -// Partly adapted from Niko's code in kdelibs/kdecore/svgicons. -// See also SVG implementation notes: -// http://www.w3.org/TR/SVG/implnote.html#ArcConversionEndpointToCenter + // This works by converting the SVG arc to "simple" beziers. + // Partly adapted from Niko's code in kdelibs/kdecore/svgicons. + // See also SVG implementation notes: + // http://www.w3.org/TR/SVG/implnote.html#ArcConversionEndpointToCenter bool _decomposeArcToCubic( _PathOffset currentPoint, PathSegmentData arcSegment, @@ -677,10 +683,7 @@ class SvgPathNormalizer { final _PathOffset transformedMidPoint = _mapPoint( pointTransform, - _PathOffset( - midPointDistance.dx, - midPointDistance.dy, - ), + _PathOffset(midPointDistance.dx, midPointDistance.dy), ); final double squareRx = rx * rx; @@ -716,8 +719,10 @@ class SvgPathNormalizer { } delta = delta * scaleFactor; - final _PathOffset centerPoint = - ((point1 + point2) * 0.5).translate(-delta.dy, delta.dx); + final _PathOffset centerPoint = ((point1 + point2) * 0.5).translate( + -delta.dy, + delta.dx, + ); final double theta1 = (point1 - centerPoint).direction; final double theta2 = (point2 - centerPoint).direction; @@ -767,8 +772,14 @@ class SvgPathNormalizer { cubicSegment.point2 = _mapPoint(pointTransform, point2); cubicSegment.targetPoint = _mapPoint(pointTransform, targetPoint); - path.cubicTo(cubicSegment.x1, cubicSegment.y1, cubicSegment.x2, - cubicSegment.y2, cubicSegment.x, cubicSegment.y); + path.cubicTo( + cubicSegment.x1, + cubicSegment.y1, + cubicSegment.x2, + cubicSegment.y2, + cubicSegment.x, + cubicSegment.y, + ); //consumer_->EmitSegment(cubicSegment); } return true; diff --git a/third_party/packages/path_parsing/lib/src/path_segment_type.dart b/third_party/packages/path_parsing/lib/src/path_segment_type.dart index 0c2c097cb6d..1dc412335a7 100644 --- a/third_party/packages/path_parsing/lib/src/path_segment_type.dart +++ b/third_party/packages/path_parsing/lib/src/path_segment_type.dart @@ -60,7 +60,7 @@ enum SvgPathSegType { smoothQuadToAbs, /// t - smoothQuadToRel + smoothQuadToRel, } /// Character constants used internally. Note that this parser does not @@ -81,27 +81,27 @@ class AsciiConstants { /// Map to go from ASCII constant to [SvgPathSegType] static const Map letterToSegmentType = { - upperZ: SvgPathSegType.close, - lowerZ: SvgPathSegType.close, - upperM: SvgPathSegType.moveToAbs, - lowerM: SvgPathSegType.moveToRel, - upperL: SvgPathSegType.lineToAbs, - lowerL: SvgPathSegType.lineToRel, - upperC: SvgPathSegType.cubicToAbs, - lowerC: SvgPathSegType.cubicToRel, - upperQ: SvgPathSegType.quadToAbs, - lowerQ: SvgPathSegType.quadToRel, - upperA: SvgPathSegType.arcToAbs, - lowerA: SvgPathSegType.arcToRel, - upperH: SvgPathSegType.lineToHorizontalAbs, - lowerH: SvgPathSegType.lineToHorizontalRel, - upperV: SvgPathSegType.lineToVerticalAbs, - lowerV: SvgPathSegType.lineToVerticalRel, - upperS: SvgPathSegType.smoothCubicToAbs, - lowerS: SvgPathSegType.smoothCubicToRel, - upperT: SvgPathSegType.smoothQuadToAbs, - lowerT: SvgPathSegType.smoothQuadToRel, - }; + upperZ: SvgPathSegType.close, + lowerZ: SvgPathSegType.close, + upperM: SvgPathSegType.moveToAbs, + lowerM: SvgPathSegType.moveToRel, + upperL: SvgPathSegType.lineToAbs, + lowerL: SvgPathSegType.lineToRel, + upperC: SvgPathSegType.cubicToAbs, + lowerC: SvgPathSegType.cubicToRel, + upperQ: SvgPathSegType.quadToAbs, + lowerQ: SvgPathSegType.quadToRel, + upperA: SvgPathSegType.arcToAbs, + lowerA: SvgPathSegType.arcToRel, + upperH: SvgPathSegType.lineToHorizontalAbs, + lowerH: SvgPathSegType.lineToHorizontalRel, + upperV: SvgPathSegType.lineToVerticalAbs, + lowerV: SvgPathSegType.lineToVerticalRel, + upperS: SvgPathSegType.smoothCubicToAbs, + lowerS: SvgPathSegType.smoothCubicToRel, + upperT: SvgPathSegType.smoothQuadToAbs, + lowerT: SvgPathSegType.smoothQuadToRel, + }; /// `\t` (horizontal tab). static const int slashT = 9; diff --git a/third_party/packages/path_parsing/pubspec.yaml b/third_party/packages/path_parsing/pubspec.yaml index 68afb7d4a75..cdb5e1399c1 100644 --- a/third_party/packages/path_parsing/pubspec.yaml +++ b/third_party/packages/path_parsing/pubspec.yaml @@ -6,7 +6,7 @@ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+ version: 1.1.0 environment: - sdk: ^3.6.0 + sdk: ^3.7.0 dependencies: meta: ^1.3.0 diff --git a/third_party/packages/path_parsing/test/parse_path_deep_test.dart b/third_party/packages/path_parsing/test/parse_path_deep_test.dart index 8839f068f3e..0804032b854 100644 --- a/third_party/packages/path_parsing/test/parse_path_deep_test.dart +++ b/third_party/packages/path_parsing/test/parse_path_deep_test.dart @@ -22,19 +22,22 @@ class DeepTestPathProxy extends PathProxy { double y3, ) { actualCommands.add( - 'cubicTo(${x1.toStringAsFixed(4)}, ${y1.toStringAsFixed(4)}, ${x2.toStringAsFixed(4)}, ${y2.toStringAsFixed(4)}, ${x3.toStringAsFixed(4)}, ${y3.toStringAsFixed(4)})'); + 'cubicTo(${x1.toStringAsFixed(4)}, ${y1.toStringAsFixed(4)}, ${x2.toStringAsFixed(4)}, ${y2.toStringAsFixed(4)}, ${x3.toStringAsFixed(4)}, ${y3.toStringAsFixed(4)})', + ); } @override void lineTo(double x, double y) { - actualCommands - .add('lineTo(${x.toStringAsFixed(4)}, ${y.toStringAsFixed(4)})'); + actualCommands.add( + 'lineTo(${x.toStringAsFixed(4)}, ${y.toStringAsFixed(4)})', + ); } @override void moveTo(double x, double y) { - actualCommands - .add('moveTo(${x.toStringAsFixed(4)}, ${y.toStringAsFixed(4)})'); + actualCommands.add( + 'moveTo(${x.toStringAsFixed(4)}, ${y.toStringAsFixed(4)})', + ); } void validate() { @@ -53,19 +56,21 @@ void main() { assertValidPath('M20,30 Q40,5 60,30 T100,30', [ 'moveTo(20.0000, 30.0000)', 'cubicTo(33.3333, 13.3333, 46.6667, 13.3333, 60.0000, 30.0000)', - 'cubicTo(73.3333, 46.6667, 86.6667, 46.6667, 100.0000, 30.0000)' + 'cubicTo(73.3333, 46.6667, 86.6667, 46.6667, 100.0000, 30.0000)', ]); assertValidPath( - 'M5.5 5.5a.5 1.5 30 1 1-.866-.5.5 1.5 30 1 1 .866.5z', [ - 'moveTo(5.5000, 5.5000)', - 'cubicTo(5.2319, 5.9667, 4.9001, 6.3513, 4.6307, 6.5077)', - 'cubicTo(4.3612, 6.6640, 4.1953, 6.5683, 4.1960, 6.2567)', - 'cubicTo(4.1967, 5.9451, 4.3638, 5.4655, 4.6340, 5.0000)', - 'cubicTo(4.9021, 4.5333, 5.2339, 4.1487, 5.5033, 3.9923)', - 'cubicTo(5.7728, 3.8360, 5.9387, 3.9317, 5.9380, 4.2433)', - 'cubicTo(5.9373, 4.5549, 5.7702, 5.0345, 5.5000, 5.5000)', - 'close()' - ]); + 'M5.5 5.5a.5 1.5 30 1 1-.866-.5.5 1.5 30 1 1 .866.5z', + [ + 'moveTo(5.5000, 5.5000)', + 'cubicTo(5.2319, 5.9667, 4.9001, 6.3513, 4.6307, 6.5077)', + 'cubicTo(4.3612, 6.6640, 4.1953, 6.5683, 4.1960, 6.2567)', + 'cubicTo(4.1967, 5.9451, 4.3638, 5.4655, 4.6340, 5.0000)', + 'cubicTo(4.9021, 4.5333, 5.2339, 4.1487, 5.5033, 3.9923)', + 'cubicTo(5.7728, 3.8360, 5.9387, 3.9317, 5.9380, 4.2433)', + 'cubicTo(5.9373, 4.5549, 5.7702, 5.0345, 5.5000, 5.5000)', + 'close()', + ], + ); }); } diff --git a/third_party/packages/path_parsing/test/parse_path_test.dart b/third_party/packages/path_parsing/test/parse_path_test.dart index 0f8a5117e2a..7ee4ea77176 100644 --- a/third_party/packages/path_parsing/test/parse_path_test.dart +++ b/third_party/packages/path_parsing/test/parse_path_test.dart @@ -47,7 +47,9 @@ void main() { void assertInvalidPath(String input) { expect( - () => writeSvgPathDataToPath(input, TestPathProxy()), throwsStateError); + () => writeSvgPathDataToPath(input, TestPathProxy()), + throwsStateError, + ); } test('Valid Paths', () { @@ -87,7 +89,8 @@ M19.0281,19.40466 20.7195,19.40466 20.7195,15.71439 24.11486,15.71439 24.11486,1 20.7195,11.68641 24.74134,11.68641 24.74134,10.34618 19.0281,10.34618 z'''); assertValidPath( - 'M100,200 a0,4,5,0,0,10,0 a4,0,5,0,0,0,10 a0,0,5,0,0,-10,0 z'); + 'M100,200 a0,4,5,0,0,10,0 a4,0,5,0,0,0,10 a0,0,5,0,0,-10,0 z', + ); assertValidPath('M1,2,3,4'); assertValidPath('m100,200,3,4'); @@ -122,29 +125,31 @@ M19.0281,19.40466 20.7195,19.40466 20.7195,15.71439 24.11486,15.71439 24.11486,1 assertValidPath('M1,1a2,3,4,0,0,5,6 7,8,9,0,0,10,11'); assertValidPath('M1,1A2,3,4,0,0,5,6 7,8,9,0,0,10,11'); assertValidPath( - 'M22.1595 3.80852C19.6789 1.35254 16.3807 -4.80966e-07 12.8727 ' - '-4.80966e-07C9.36452 -4.80966e-07 6.06642 1.35254 3.58579 3.80852C1.77297 5.60333 ' - '0.53896 7.8599 0.0171889 10.3343C-0.0738999 10.7666 0.206109 11.1901 0.64265 ' - '11.2803C1.07908 11.3706 1.50711 11.0934 1.5982 10.661C2.05552 8.49195 3.13775 6.51338 4.72783 ' - '4.9391C9.21893 0.492838 16.5262 0.492728 21.0173 4.9391C25.5082 9.38548 25.5082 16.6202 ' - '21.0173 21.0667C16.5265 25.5132 9.21893 25.5133 4.72805 21.0669C3.17644 19.5307 2.10538 ' - '17.6035 1.63081 15.4937C1.53386 15.0627 1.10252 14.7908 0.66697 14.887C0.231645 14.983 ' - '-0.0427272 15.4103 0.0542205 15.8413C0.595668 18.2481 1.81686 20.4461 3.5859 ' - '22.1976C6.14623 24.7325 9.50955 26 12.8727 26C16.236 26 19.5991 24.7326 22.1595 22.1976C27.2802 ' - '17.1277 27.2802 8.87841 22.1595 3.80852Z'); + 'M22.1595 3.80852C19.6789 1.35254 16.3807 -4.80966e-07 12.8727 ' + '-4.80966e-07C9.36452 -4.80966e-07 6.06642 1.35254 3.58579 3.80852C1.77297 5.60333 ' + '0.53896 7.8599 0.0171889 10.3343C-0.0738999 10.7666 0.206109 11.1901 0.64265 ' + '11.2803C1.07908 11.3706 1.50711 11.0934 1.5982 10.661C2.05552 8.49195 3.13775 6.51338 4.72783 ' + '4.9391C9.21893 0.492838 16.5262 0.492728 21.0173 4.9391C25.5082 9.38548 25.5082 16.6202 ' + '21.0173 21.0667C16.5265 25.5132 9.21893 25.5133 4.72805 21.0669C3.17644 19.5307 2.10538 ' + '17.6035 1.63081 15.4937C1.53386 15.0627 1.10252 14.7908 0.66697 14.887C0.231645 14.983 ' + '-0.0427272 15.4103 0.0542205 15.8413C0.595668 18.2481 1.81686 20.4461 3.5859 ' + '22.1976C6.14623 24.7325 9.50955 26 12.8727 26C16.236 26 19.5991 24.7326 22.1595 22.1976C27.2802 ' + '17.1277 27.2802 8.87841 22.1595 3.80852Z', + ); assertValidPath( - 'm18 11.8a.41.41 0 0 1 .24.08l.59.43h.05.72a.4.4 0 0 1 .39.28l.22.69a.08.08 0 ' - '0 0 0 0l.58.43a.41.41 0 0 1 .15.45l-.22.68a.09.09 0 0 0 0 .07l.22.68a.4.4 0 0 1 ' - '-.15.46l-.58.42a.1.1 0 0 0 0 0l-.22.68a.41.41 0 0 1 -.38.29h-.79l-.58.43a.41.41 0 ' - '0 1 -.24.08.46.46 0 0 1 -.24-.08l-.58-.43h-.06-.72a.41.41 0 0 1 -.39-.28l-.22-.68a.1.1 ' - '0 0 0 0 0l-.58-.43a.42.42 0 0 1 -.15-.46l.23-.67v-.02l-.29-.68a.43.43 0 0 1 ' - '.15-.46l.58-.42a.1.1 0 0 0 0-.05l.27-.69a.42.42 0 0 1 .39-.28h.78l.58-.43a.43.43 0 ' - '0 1 .25-.09m0-1a1.37 1.37 0 0 0 -.83.27l-.34.25h-.43a1.42 1.42 0 0 0 -1.34 ' - '1l-.13.4-.35.25a1.42 1.42 0 0 0 -.51 1.58l.13.4-.13.4a1.39 1.39 0 0 0 .52 ' - '1.59l.34.25.13.4a1.41 1.41 0 0 0 1.34 1h.43l.34.26a1.44 1.44 0 0 0 .83.27 1.38 1.38 0 0 0 ' - '.83-.28l.35-.24h.43a1.4 1.4 0 0 0 1.33-1l.13-.4.35-.26a1.39 1.39 0 0 0 ' - '.51-1.57l-.13-.4.13-.41a1.4 1.4 0 0 0 -.51-1.56l-.35-.25-.13-.41a1.4 1.4 0 0 0 ' - '-1.34-1h-.42l-.34-.26a1.43 1.43 0 0 0 -.84-.28z'); + 'm18 11.8a.41.41 0 0 1 .24.08l.59.43h.05.72a.4.4 0 0 1 .39.28l.22.69a.08.08 0 ' + '0 0 0 0l.58.43a.41.41 0 0 1 .15.45l-.22.68a.09.09 0 0 0 0 .07l.22.68a.4.4 0 0 1 ' + '-.15.46l-.58.42a.1.1 0 0 0 0 0l-.22.68a.41.41 0 0 1 -.38.29h-.79l-.58.43a.41.41 0 ' + '0 1 -.24.08.46.46 0 0 1 -.24-.08l-.58-.43h-.06-.72a.41.41 0 0 1 -.39-.28l-.22-.68a.1.1 ' + '0 0 0 0 0l-.58-.43a.42.42 0 0 1 -.15-.46l.23-.67v-.02l-.29-.68a.43.43 0 0 1 ' + '.15-.46l.58-.42a.1.1 0 0 0 0-.05l.27-.69a.42.42 0 0 1 .39-.28h.78l.58-.43a.43.43 0 ' + '0 1 .25-.09m0-1a1.37 1.37 0 0 0 -.83.27l-.34.25h-.43a1.42 1.42 0 0 0 -1.34 ' + '1l-.13.4-.35.25a1.42 1.42 0 0 0 -.51 1.58l.13.4-.13.4a1.39 1.39 0 0 0 .52 ' + '1.59l.34.25.13.4a1.41 1.41 0 0 0 1.34 1h.43l.34.26a1.44 1.44 0 0 0 .83.27 1.38 1.38 0 0 0 ' + '.83-.28l.35-.24h.43a1.4 1.4 0 0 0 1.33-1l.13-.4.35-.26a1.39 1.39 0 0 0 ' + '.51-1.57l-.13-.4.13-.41a1.4 1.4 0 0 0 -.51-1.56l-.35-.25-.13-.41a1.4 1.4 0 0 0 ' + '-1.34-1h-.42l-.34-.26a1.43 1.43 0 0 0 -.84-.28z', + ); }); test('Malformed Paths', () {