flutter / flutter

Flutter makes it easy and fast to build beautiful apps for mobile and beyond
https://flutter.dev
BSD 3-Clause "New" or "Revised" License
166.1k stars 27.43k forks source link

AnimatedCrossFade triggers animation exception with duration of zero milliseconds #71227

Open benPesso opened 3 years ago

benPesso commented 3 years ago

Main issue

As was also reported elsewhere, when using the AnimatedCrossFade widget with a duration of milliseconds: 0, Flutter throws an exception:

════════ Exception caught by animation library ═════════════════════════════════
The following assertion was thrown while notifying listeners for AnimationController:
'package:flutter/src/rendering/object.dart': Failed assertion: line 1530 pos 12: '_debugCanPerformMutations': is not true.

Additionally, documentation in the error itself is severely lacking! It doesn't provide any relevant stack trace, or a thread of information about the offending code line. It is only by trial and error that a developer can figure out that this is caused by an offending AnimatedCrossFade widget.

Debug Console ``` ════════ Exception caught by animation library ═════════════════════════════════ The following assertion was thrown while notifying listeners for AnimationController: 'package:flutter/src/rendering/object.dart': Failed assertion: line 1530 pos 12: '_debugCanPerformMutations': is not true. Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause. In either case, please report this assertion by filing a bug on GitHub: https://github.com/flutter/flutter/issues/new?template=BUG.md When the exception was thrown, this was the stack #2 RenderObject.markNeedsLayout package:flutter/…/rendering/object.dart:1530 #3 RenderBox.markNeedsLayout package:flutter/…/rendering/box.dart:2147 #4 new RenderAnimatedSize. package:flutter/…/rendering/animated_size.dart:95 #5 AnimationLocalListenersMixin.notifyListeners package:flutter/…/animation/listener_helpers.dart:136 #6 AnimationController._animateToInternal package:flutter/…/animation/animation_controller.dart:585 ... The AnimationController notifying listeners was: AnimationController#34c52(⏮ 1.000; paused) ════════════════════════════════════════════════════════════════════════════════ ```

Sample app

When the widget is first rendered, no exceptions are thrown. It is only once you trigger a cross-fade that the exceptions are thrown on each consecutive call.

One can prevent this exception by increasing the duration, but the amount depends on system resources and complexity of code. For example, in the sample app below, setting the duration to millisecond: 1 is enough. However, in a more complex app, even milliseconds: 60 might not be enough.

main.dart ```dart // main.dart import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), ); } } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State { CrossFadeState _crossFadeState = CrossFadeState.showFirst; @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ RaisedButton( child: Text('Toggle'), onPressed: _crossFadeNext, ), AnimatedCrossFade( firstChild: Text('First'), secondChild: Text('Second'), crossFadeState: _crossFadeState, duration: Duration(milliseconds: 0), ), ], ), ), ); } void _crossFadeNext() { setState(() => _crossFadeState = (_crossFadeState == CrossFadeState.showFirst) ? CrossFadeState.showSecond : CrossFadeState.showFirst); } } ```

Flutter Doctor

Blissfully ignorant, as always. 😐 ``` [✓] Flutter (Channel stable, 1.22.4, on macOS 11.0.1 20B29 darwin-x64, locale en-US) • Flutter version 1.22.4 at /Users/benPesso/Projects/flutter • Framework revision 1aafb3a8b9 (12 days ago), 2020-11-13 09:59:28 -0800 • Engine revision 2c956a31c0 • Dart version 2.10.4 [✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2) • Android SDK at /Users/benPesso/Library/Android/sdk • Platform android-30, build-tools 30.0.2 • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593) • All Android licenses accepted. [✓] Xcode - develop for iOS and macOS (Xcode 12.2) • Xcode at /Applications/Xcode.app/Contents/Developer • Xcode 12.2, Build version 12B45b • CocoaPods version 1.9.3 [✓] Android Studio (version 4.0) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin version 50.0.1 • Dart plugin version 193.7547 • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593) [✓] VS Code (version 1.51.1) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.16.0 [✓] Connected device (1 available) • iPhone SE (2nd generation) (mobile) • ED880130-98FA-4356-8F56-B89E9888798E • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-2 (simulator) • No issues found! ```
pedromassangocode commented 3 years ago

Reproducible on stable channel.

@benPesso can you elaborate why do you want an animation with zero milliseconds? I can't understand how Flutter can animate without a duration. If you want to switch widgets you can just use a Visibility widget or similars.

Logs ``` Performing hot restart... Syncing files to device sdk gphone x86 arm... Restarted application in 3,234ms. ════════ Exception caught by animation library ═════════════════════════════════════════════════════ The following assertion was thrown while notifying listeners for AnimationController: 'package:flutter/src/rendering/object.dart': Failed assertion: line 1530 pos 12: '_debugCanPerformMutations': is not true. Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause. In either case, please report this assertion by filing a bug on GitHub: https://github.com/flutter/flutter/issues/new?template=BUG.md When the exception was thrown, this was the stack: #2 RenderObject.markNeedsLayout (package:flutter/src/rendering/object.dart:1530:12) #3 RenderBox.markNeedsLayout (package:flutter/src/rendering/box.dart:2147:11) #4 new RenderAnimatedSize. (package:flutter/src/rendering/animated_size.dart:95:9) #5 AnimationLocalListenersMixin.notifyListeners (package:flutter/src/animation/listener_helpers.dart:136:19) #6 AnimationController._animateToInternal (package:flutter/src/animation/animation_controller.dart:585:9) ... The AnimationController notifying listeners was: AnimationController#c7f81(⏮ 1.000; paused) ════════════════════════════════════════════════════════════════════════════════════════════════════ ```
flutter doctor -v ``` [✓] Flutter (Channel stable, 1.22.4, on Mac OS X 10.15.7 19H2 darwin-x64, locale en) • Flutter version 1.22.4 at /Users/pedromassango/dev/SDKs/flutter_stable • Framework revision 1aafb3a8b9 (12 days ago), 2020-11-13 09:59:28 -0800 • Engine revision 2c956a31c0 • Dart version 2.10.4 [✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2) • Android SDK at /Users/pedromassango/Library/Android/sdk • Platform android-30, build-tools 30.0.2 • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495) • All Android licenses accepted. [✓] Xcode - develop for iOS and macOS (Xcode 12.1) • Xcode at /Applications/Xcode.app/Contents/Developer • Xcode 12.1, Build version 12A7403 • CocoaPods version 1.9.3 [!] Android Studio (version 4.1) • Android Studio at /Applications/Android Studio.app/Contents ✗ Flutter plugin not installed; this adds Flutter specific functionality. ✗ Dart plugin not installed; this adds Dart specific functionality. • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495) [✓] IntelliJ IDEA Community Edition (version 2020.2.3) • IntelliJ at /Applications/IntelliJ IDEA CE.app • Flutter plugin installed • Dart plugin version 202.8070 [✓] VS Code (version 1.51.1) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.16.0 [✓] Connected device (1 available) • sdk gphone x86 arm (mobile) • emulator-5554 • android-x86 • Android 11 (API 30) (emulator) ! Doctor found issues in 1 category. ```
benPesso commented 3 years ago

@pedromassangocode You don't necessarily want to set it to zero. As I wrote, it can also happen if the duration is set to something other than zero, like 60 milliseconds. It depends on how fast the code is processed on the given device, I guess. I ran into this issue in one of my projects where I used a 60ms duration. While researching it, I came across #28434 and decided to make a proper report for it. Hence this post.

One use case is in a preference-based interface; a user might prefer to have a "fast" interface, and the easiest way to achieve that is by setting the duration to zero (or something low, like the above 60ms) when the user switches "Fast Mode" on. Especially if you have the same duration configured globally for multiple widgets.

HansMuller commented 3 years ago

CC @shihaohong @goderbauer

shihaohong commented 3 years ago

@dnfield This is a case where the stack trace is truncated (originally brought up in https://github.com/flutter/flutter/issues/52732). I'm not sure how to get more of the stack trace showing, which might help me with figuring out what's wrong here.

shihaohong commented 3 years ago

I took some time looking at the code, it might be the result of an interaction between the AnimatedSize and AnimatedCrossFade's default layout builder, which uses a Stack. When I modify the code to use a layoutBuilder using a Column, it no longer happens:

            AnimatedCrossFade(
              layoutBuilder: (one, oneKey, two, twoKey) {
                return Column(
                  children: [
                    Container(
                      key: oneKey,
                      child: one,
                    ),
                    Container(
                      key: twoKey,
                      child: two,
                    ),
                  ],
                );
              },
              // ....

I'm not exactly sure why this is happening, but since the assertion is happening while attempting to lay out AnimatedSize, AnimatedCrossFade may not have the chance to lay out its Stack before AnimatedSize wants to lay out.

darshankawar commented 1 year ago

Running the code sample using latest versions gives below error in the console:

console error log ``` ======== Exception caught by animation library ===================================================== The following assertion was thrown while notifying listeners for AnimationController: A RenderAnimatedSize was mutated in its own performLayout implementation. A RenderObject must not re-dirty itself while still being laid out. The RenderObject being mutated was: RenderAnimatedSize#8f724 relayoutBoundary=up4 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE needs compositing parentData: (can use size) constraints: BoxConstraints(0.0<=w<=428.0, 0.0<=h<=Infinity) size: Size(30.0, 17.0) alignment: Alignment.topCenter textDirection: ltr Consider using the LayoutBuilder widget to dynamically change a subtree during layout. When the exception was thrown, this was the stack: #0 RenderObject._debugCanPerformMutations. (package:flutter/src/rendering/object.dart:1703:9) #1 RenderObject._debugCanPerformMutations (package:flutter/src/rendering/object.dart:1745:6) #2 RenderObject.markNeedsLayout (package:flutter/src/rendering/object.dart:1894:12) #3 RenderBox.markNeedsLayout (package:flutter/src/rendering/box.dart:2420:11) #4 new RenderAnimatedSize. (package:flutter/src/rendering/animated_size.dart:97:9) #5 AnimationLocalListenersMixin.notifyListeners (package:flutter/src/animation/listener_helpers.dart:161:19) #6 AnimationController._animateToInternal (package:flutter/src/animation/animation_controller.dart:609:9) #7 AnimationController.forward (package:flutter/src/animation/animation_controller.dart:467:12) #8 RenderAnimatedSize._restartAnimation (package:flutter/src/rendering/animated_size.dart:280:17) #9 RenderAnimatedSize._layoutStable (package:flutter/src/rendering/animated_size.dart:301:7) #10 RenderAnimatedSize.performLayout (package:flutter/src/rendering/animated_size.dart:227:9) #11 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7) #12 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11) #13 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14) #14 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1467:11) #15 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7) #16 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11) #17 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:56:11) #18 RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:836:43) #19 RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:938:32) #20 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7) #21 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11) #22 RenderPositionedBox.performLayout (package:flutter/src/rendering/shifted_box.dart:442:14) #23 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7) #24 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11) #25 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:12) #26 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1080:7) #27 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240:7) #28 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:410:14) #29 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2027:7) #30 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1020:18) #31 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:516:19) #32 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:865:13) #33 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:381:5) #34 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1289:15) #35 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1218:9) #36 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1076:5) #37 _invoke (dart:ui/hooks.dart:145:13) #38 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:338:5) #39 _drawFrame (dart:ui/hooks.dart:112:31) The AnimationController notifying listeners was: AnimationController#f5f9a(⏮ 1.000; paused) ==================================================================================================== ======== Exception caught by animation library ===================================================== The following assertion was thrown while notifying listeners for AnimationController: A RenderAnimatedSize was mutated in its own performLayout implementation. A RenderObject must not re-dirty itself while still being laid out. The RenderObject being mutated was: RenderAnimatedSize#8f724 relayoutBoundary=up4 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE needs compositing parentData: (can use size) constraints: BoxConstraints(0.0<=w<=428.0, 0.0<=h<=Infinity) size: Size(50.0, 17.0) alignment: Alignment.topCenter textDirection: ltr Consider using the LayoutBuilder widget to dynamically change a subtree during layout. When the exception was thrown, this was the stack: #0 RenderObject._debugCanPerformMutations. (package:flutter/src/rendering/object.dart:1703:9) #1 RenderObject._debugCanPerformMutations (package:flutter/src/rendering/object.dart:1745:6) #2 RenderObject.markNeedsLayout (package:flutter/src/rendering/object.dart:1894:12) #3 RenderBox.markNeedsLayout (package:flutter/src/rendering/box.dart:2420:11) #4 new RenderAnimatedSize. (package:flutter/src/rendering/animated_size.dart:97:9) #5 AnimationLocalListenersMixin.notifyListeners (package:flutter/src/animation/listener_helpers.dart:161:19) #6 AnimationController._animateToInternal (package:flutter/src/animation/animation_controller.dart:609:9) #7 AnimationController.forward (package:flutter/src/animation/animation_controller.dart:467:12) #8 RenderAnimatedSize._restartAnimation (package:flutter/src/rendering/animated_size.dart:280:17) #9 RenderAnimatedSize._layoutChanged (package:flutter/src/rendering/animated_size.dart:321:7) #10 RenderAnimatedSize.performLayout (package:flutter/src/rendering/animated_size.dart:230:9) #11 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7) #12 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11) #13 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14) #14 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1467:11) #15 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7) #16 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11) #17 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:56:11) #18 RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:836:43) #19 RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:938:32) #20 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7) #21 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11) #22 RenderPositionedBox.performLayout (package:flutter/src/rendering/shifted_box.dart:442:14) #23 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7) #24 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11) #25 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:12) #26 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1080:7) #27 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240:7) #28 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:410:14) #29 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2027:7) #30 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1020:18) #31 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:516:19) #32 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:865:13) #33 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:381:5) #34 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1289:15) #35 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1218:9) #36 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1076:5) #37 _invoke (dart:ui/hooks.dart:145:13) #38 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:338:5) #39 _drawFrame (dart:ui/hooks.dart:112:31) The AnimationController notifying listeners was: AnimationController#f5f9a(⏮ 1.000; paused) ==================================================================================================== ======== Exception caught by animation library ===================================================== The following assertion was thrown while notifying listeners for AnimationController: A RenderAnimatedSize was mutated in its own performLayout implementation. A RenderObject must not re-dirty itself while still being laid out. The RenderObject being mutated was: RenderAnimatedSize#8f724 relayoutBoundary=up4 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE needs compositing parentData: (can use size) constraints: BoxConstraints(0.0<=w<=428.0, 0.0<=h<=Infinity) size: Size(30.0, 17.0) alignment: Alignment.topCenter textDirection: ltr Consider using the LayoutBuilder widget to dynamically change a subtree during layout. When the exception was thrown, this was the stack: #0 RenderObject._debugCanPerformMutations. (package:flutter/src/rendering/object.dart:1703:9) #1 RenderObject._debugCanPerformMutations (package:flutter/src/rendering/object.dart:1745:6) #2 RenderObject.markNeedsLayout (package:flutter/src/rendering/object.dart:1894:12) #3 RenderBox.markNeedsLayout (package:flutter/src/rendering/box.dart:2420:11) #4 new RenderAnimatedSize. (package:flutter/src/rendering/animated_size.dart:97:9) #5 AnimationLocalListenersMixin.notifyListeners (package:flutter/src/animation/listener_helpers.dart:161:19) #6 AnimationController._animateToInternal (package:flutter/src/animation/animation_controller.dart:609:9) #7 AnimationController.forward (package:flutter/src/animation/animation_controller.dart:467:12) #8 RenderAnimatedSize._restartAnimation (package:flutter/src/rendering/animated_size.dart:280:17) #9 RenderAnimatedSize._layoutUnstable (package:flutter/src/rendering/animated_size.dart:340:7) #10 RenderAnimatedSize.performLayout (package:flutter/src/rendering/animated_size.dart:233:9) #11 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7) #12 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11) #13 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120:14) #14 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1467:11) #15 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7) #16 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11) #17 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:56:11) #18 RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:836:43) #19 RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:938:32) #20 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7) #21 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11) #22 RenderPositionedBox.performLayout (package:flutter/src/rendering/shifted_box.dart:442:14) #23 RenderObject.layout (package:flutter/src/rendering/object.dart:2189:7) #24 RenderBox.layout (package:flutter/src/rendering/box.dart:2430:11) #25 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:12) #26 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1080:7) #27 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240:7) #28 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:410:14) #29 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2027:7) #30 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1020:18) #31 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:516:19) #32 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:865:13) #33 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:381:5) #34 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1289:15) #35 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1218:9) #36 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1076:5) #37 _invoke (dart:ui/hooks.dart:145:13) #38 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:338:5) #39 _drawFrame (dart:ui/hooks.dart:112:31) The AnimationController notifying listeners was: AnimationController#f5f9a(⏮ 1.000; paused) ==================================================================================================== ```
stable, master flutter doctor -v ``` [✓] Flutter (Channel stable, 3.3.9, on macOS 12.2.1 21D62 darwin-x64, locale en-GB) • Flutter version 3.3.9 on channel stable at /Users/dhs/documents/fluttersdk/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision b8f7f1f986 (12 days ago), 2022-11-23 06:43:51 +0900 • Engine revision 8f2221fbef • Dart version 2.18.5 • DevTools version 2.15.0 [!] Xcode - develop for iOS and macOS (Xcode 12.3) • Xcode at /Applications/Xcode.app/Contents/Developer ! Flutter recommends a minimum Xcode version of 13. Download the latest version or update via the Mac App Store. • CocoaPods version 1.11.2 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [✓] VS Code (version 1.62.0) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.21.0 [✓] Connected device (5 available) • SM G975F (mobile) • RZ8M802WY0X • android-arm64 • Android 11 (API 30) • Darshan's iphone (mobile) • 21150b119064aecc249dfcfe05e259197461ce23 • ios • iOS 14.4.1 18D61 • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729 • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator) • macOS (desktop) • macos • darwin-x64 • Mac OS X 10.15.4 19E2269 darwin-x64 • Chrome (web) • chrome • web-javascript • Google Chrome 98.0.4758.80 [✓] HTTP Host Availability • All required HTTP hosts are available ! Doctor found issues in 1 category. [!] Flutter (Channel master, 3.7.0-3.0.pre.57, on macOS 12.2.1 21D62 darwin-x64, locale en-GB) • Flutter version 3.7.0-3.0.pre.57 on channel master at /Users/dhs/documents/fluttersdk/flutter ! Warning: `flutter` on your path resolves to /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter. Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path. ! Warning: `dart` on your path resolves to /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter. Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path. • Upstream repository https://github.com/flutter/flutter.git • Framework revision ef6ead4401 (44 minutes ago), 2022-12-06 23:15:24 -0500 • Engine revision 67254d6e4b • Dart version 2.19.0 (build 2.19.0-467.0.dev) • DevTools version 2.20.0 • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades. [!] Xcode - develop for iOS and macOS (Xcode 12.3) • Xcode at /Applications/Xcode.app/Contents/Developer ! Flutter recommends a minimum Xcode version of 13. Download the latest version or update via the Mac App Store. • CocoaPods version 1.11.2 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [✓] VS Code (version 1.62.0) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.21.0 [✓] Connected device (5 available) • SM G975F (mobile) • RZ8M802WY0X • android-arm64 • Android 11 (API 30) • Darshan's iphone (mobile) • 21150b119064aecc249dfcfe05e259197461ce23 • ios • iOS 14.4.1 18D61 • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729 • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator) • macOS (desktop) • macos • darwin-x64 • Mac OS X 10.15.4 19E2269 darwin-x64 • Chrome (web) • chrome • web-javascript • Google Chrome 98.0.4758.80 [✓] HTTP Host Availability • All required HTTP hosts are available ! Doctor found issues in 1 category. ```
benPesso commented 1 year ago

Any progress on this issue? Seems to be stale for quite a while now. 😐