text:
SliverPersistentHeader disappears when scrolls up in certain cases

Steps to Reproduce

Scroll down to the bottom of the screen quickly
Scroll back up to the top of the screen quickly
Observe the screen, the header will disappear briefly and come back

import 'package:flutter/material.dart';

class SliverPersistentHeaderExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: CustomScrollView(
        slivers: <Widget>[
          _SliverPersistentHeader(),
          SliverList(
            delegate: SliverChildBuilderDelegate(
              (_, i) => Text(
                i.toString(),
                style: TextStyle(fontSize: 40),
              ),
              childCount: 100,
            ),
          ),
        ],
      ),
    );
  }
}

class _SliverPersistentHeader extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SliverPersistentHeader(
      delegate: _HeaderDelegate(
        height: 80,
      ),
      pinned: true,
    );
  }
}

class _HeaderDelegate extends SliverPersistentHeaderDelegate {
  _HeaderDelegate({
    @required this.height,
    this.onTextFieldChanged,
  });

  final double height;
  final void Function(String) onTextFieldChanged;

  @override
  double get minExtent => height;

  @override
  double get maxExtent => height;

  @override
  Widget build(
    BuildContext context,
    double shrinkOffset,
    bool overlapsContent,
  ) {
    return Container(
      color: Colors.pink,
    );
  }

  @override
  bool shouldRebuild(_HeaderDelegate oldDelegate) {
    return height != oldDelegate.height;
  }
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SliverPersistentHeaderExample(),
    );
  }
}

void main() {
  runApp(MyApp());
}

Target Platform: iOS
Logs

Waiting for another flutter command to release the startup lock...
Analyzing login_issue...
No issues found! (ran in 3.7s)

[✓] Flutter (Channel beta, v1.10.7, on Mac OS X 10.15 19A603, locale en-US)
    • Flutter version 1.10.7 at /Users/natalieflores/flutter
    • Framework revision e70236e36c (4 weeks ago), 2019-10-02 09:32:30 -0700
    • Engine revision 9e6314d348
    • Dart version 2.6.0 (build 2.6.0-dev.0.0 1103600280)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/natalieflores/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • ANDROID_HOME = /Users/natalieflores/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.1, Build version 11A1027
    • CocoaPods version 1.8.4

[✓] Android Studio (version 3.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 31.2.1
    • Dart plugin version 181.5656
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

[✓] VS Code (version 1.39.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.5.1

[✓] Connected device (2 available)
    • Android SDK built for x86 • emulator-5554                        • android-x86 • Android 9 (API 28) (emulator)
    • iPhone 11                 • 4DA77D37-5C0F-4A42-80B3-88A18693755F • ios         • com.apple.CoreSimulator.SimRuntime.iOS-13-1 (simulator)

• No issues found!

Hi @natalieeeflores
I didn't manage to reproduce the behavior you are describing,
are you experiencing this on both iOS and Android?
Both on physical and virtual devices?
Thank you

Hi @iapicca! I've only been experiencing this issue on iOS. I have seen it on both physical and virtual devices but it is much easier to reproduce on physical devices. It's very difficult to reproduce on virtual devices. I've had it happen on my iPhone 10R which is running software version 13.1.3.

Thank you @natalieeeflores for the details you  provided

Hi @natalieeeflores
Not able to reproduce the issue on XR running iOS 14
Preview

code sample
import 'package:flutter/material.dart';

class SliverPersistentHeaderExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: CustomScrollView(
        slivers: <Widget>[
          _SliverPersistentHeader(),
          SliverList(
            delegate: SliverChildBuilderDelegate(
              (_, i) => Text(
                i.toString(),
                style: TextStyle(fontSize: 40),
              ),
              childCount: 100,
            ),
          ),
        ],
      ),
    );
  }
}

class _SliverPersistentHeader extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SliverPersistentHeader(
      delegate: _HeaderDelegate(
        height: 80,
      ),
      pinned: true,
    );
  }
}

class _HeaderDelegate extends SliverPersistentHeaderDelegate {
  _HeaderDelegate({
    @required this.height,
    this.onTextFieldChanged,
  });

  final double height;
  final void Function(String) onTextFieldChanged;

  @override
  double get minExtent => height;

  @override
  double get maxExtent => height;

  @override
  Widget build(
    BuildContext context,
    double shrinkOffset,
    bool overlapsContent,
  ) {
    return Container(
      color: Colors.pink,
    );
  }

  @override
  bool shouldRebuild(_HeaderDelegate oldDelegate) {
    return height != oldDelegate.height;
  }
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SliverPersistentHeaderExample(),
    );
  }
}

void main() {
  runApp(MyApp());
}

flutter doctor -v
[✓] Flutter (Channel master, 1.24.0-4.0.pre.82, on Mac OS X 10.15.7 19H2
    darwin-x64, locale en-GB)
    • Flutter version 1.24.0-4.0.pre.82 at /Users/tahatesser/Code/flutter_master
    • Framework revision e5814756a2 (5 hours ago), 2020-10-27 01:47:03 -0700
    • Engine revision 1857470267
    • Dart version 2.11.0 (build 2.11.0-260.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/tahatesser/Code/sdk
    • Platform android-30, build-tools 30.0.2
    • ANDROID_HOME = /Users/tahatesser/Code/sdk
    • 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.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.1, Build version 12A7403
    • CocoaPods version 1.10.0.rc.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.50.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.15.1

[✓] Connected device (4 available)
    • Taha’s iPhone (mobile) • 00008020-001059882212002E • ios            • iOS
      14.1
    • macOS (desktop)        • macos                     • darwin-x64     • Mac
      OS X 10.15.7 19H2 darwin-x64
    • Web Server (web)       • web-server                • web-javascript •
      Flutter Tools
    • Chrome (web)           • chrome                    • web-javascript •
      Google Chrome 86.0.4240.111

• No issues found!

Can you please try on the latest flutter version on XR
Thank you

Without additional information, we are unfortunately not sure how to resolve this issue.
We are therefore reluctantly going to close this bug for now.
Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v.
All system setups can be slightly different, so it's always better to open new issues and reference related issues.

authors: TahaTesser iapicca natalieeeflores pedromassangocode


text:
Compiler error on flutter run causes tool to crash

flutter create compiler_crash
Replace lib/main.dart with:

import 'package:flutter/material.dart';

void main() => runApp(test: null);

In the compiler_crash/ directory, run flutter run.

Output:
$ flutter run
Launching lib/main.dart on Pixel 3 XL in debug mode...
Running Gradle task 'assembleDebug'...

Compiler message:

lib/main.dart:3:22: Error: Too few positional arguments: 1 required, 0 given.

void main() => runApp(test: null);

                     ^

../flutter/packages/flutter/lib/src/widgets/binding.dart:867:6: Context: Found this candidate, but the arguments don't match.

void runApp(Widget app) {

     ^^^^^^

Target kernel_snapshot failed: Exception: Errors during snapshot creation: null

#0      KernelSnapshot.build (package:flutter_tools/src/build_system/targets/dart.dart:231:7)

<asynchronous suspension>

#1      _BuildInstance._invokeInternal (package:flutter_tools/src/build_system/build_system.dart:526:25)

<asynchronous suspension>

#2      _BuildInstance.invokeTarget.<anonymous closure> (package:flutter_tools/src/build_system/build_system.dart:481:35)

#3      new Future.sync (dart:async/future.dart:222:31)

#4      AsyncMemoizer.runOnce (package:async/src/async_memoizer.dart:43:45)

#5      _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:481:21)

<asynchronous suspension>

<asynchronous suspension>

#6      BuildSystem.build (package:flutter_tools/src/build_system/build_system.dart:419:36)

<asynchronous suspension>

#7      AssembleCommand.runCommand (package:flutter_tools/src/commands/assemble.dart:154:50)

<asynchronous suspension>

#8      FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:607:18)

<asynchronous suspension>

#9      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:507:33)

<asynchronous suspension>

#10     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:146:29)

<asynchronous suspension>

#11     _rootRun (dart:async/zone.dart:1124:13)

#12     _CustomZone.run (dart:async/zone.dart:1021:19)

#13     _runZoned (dart:async/zone.dart:1516:10)

#14     runZoned (dart:async/zone.dart:1463:12)

#15     AppContext.run (package:flutter_tools/src/base/context.dart:145:18)

<asynchronous suspension>

#16     FlutterCommand.run (package:flutter_tools/src/runner/flutter_command.dart:497:20)

#17     CommandRunner.runCommand (package:args/command_runner.dart:197:27)

<asynchronous suspension>

#18     FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:416:21)

<asynchronous suspension>

#19     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:146:29)

<asynchronous suspension>

#20     _rootRun (dart:async/zone.dart:1124:13)

#21     _CustomZone.run (dart:async/zone.dart:1021:19)

#22     _runZoned (dart:async/zone.dart:1516:10)

#23     runZoned (dart:async/zone.dart:1463:12)

#24     AppContext.run (package:flutter_tools/src/base/context.dart:145:18)

<asynchronous suspension>

#25     FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:367:19)

<asynchronous suspension>

#26     CommandRunner.run.<anonymous closure> (package:args/command_runner.dart:112:25)

#27     new Future.sync (dart:async/future.dart:222:31)

#28     CommandRunner.run (package:args/command_runner.dart:112:14)

#29     FlutterCommandRunner.run (package:flutter_tools/src/runner/flutter_command_runner.dart:251:18)

#30     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:63:22)

<asynchronous suspension>

#31     _rootRun (dart:async/zone.dart:1124:13)

#32     _CustomZone.run (dart:async/zone.dart:1021:19)

#33     _runZoned (dart:async/zone.dart:1516:10)

#34     runZoned (dart:async/zone.dart:1500:12)

#35     run.<anonymous closure> (package:flutter_tools/runner.dart:61:18)

<asynchronous suspension>

#36     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:146:29)

<asynchronous suspension>

#37     _rootRun (dart:async/zone.dart:1124:13)

#38     _CustomZone.run (dart:async/zone.dart:1021:19)

#39     _runZoned (dart:async/zone.dart:1516:10)

#40     runZoned (dart:async/zone.dart:1463:12)

#41     AppContext.run (package:flutter_tools/src/base/context.dart:145:18)

<asynchronous suspension>

#42     runInContext (package:flutter_tools/src/context_runner.dart:65:24)

<asynchronous suspension>

#43     run (package:flutter_tools/runner.dart:50:10)

#44     main (package:flutter_tools/executable.dart:65:9)

<asynchronous suspension>

#45     main (file:///usr/local/google/home/ianh/dev/flutter/packages/flutter_tools/bin/flutter_tools.dart:8:3)

#46     _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:303:32)

#47     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)

build failed.

FAILURE: Build failed with an exception.

* Where:

Script '/usr/local/google/home/ianh/dev/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 716

* What went wrong:

Execution failed for task ':app:compileFlutterBuildDebugArm64'.

> Process 'command '/usr/local/google/home/ianh/dev/flutter/bin/flutter'' finished with non-zero exit value 1

* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 10s
Running Gradle task 'assembleDebug'...                             11.2s
Gradle task assembleDebug failed with exit code 1

This isn't a tool crash, but the error message there shouldn't contain a stack trace

I guess per the definition of crash in tags "stack traces logged to console" it is though XD

source: gharchive/issue

authors: Hixie jonahwilliams

repo: flutter/flutter

license_type: permissive

license_source: github-api


text:
Crash when orientation changes using Platform Views in a ListView

I see that some Platform View crashes were resolved in the engine recently, but when I was testing that they were all resolved properly, I noticed this problem on another one of our screens. The difference with this screen is that multiple Platform Views are in a ListView and the crash happens only after several orientation changes. On the simulator we can see corruption/distortion (but no crash). On device it crashes after about 4 rotations. Sample code attached.
Steps to Reproduce
See sample code:
https://github.com/raycardillo-VerizonMedia/flutter-rotation-bug
See instructions in the README but it's not difficult to reproduce at all. Just run on device and rotate the device several times (usually 4 times on my iPhone X and iPhone 11 Pro Max both running the latest available iOS 13).
Target Platform: iOS (maybe also on Android but I cannot test WebView in v1.12)
Target OS version/browser: iOS 13
Devices: iPhone X, iPhone 11 Pro Max
Logs

no relevant errors in verbose output

no flutter analyze issues

flutter doctor -v
[✓] Flutter (Channel master, v1.12.10-pre.12, on Mac OS X 10.14.6 18G1012, locale en-US)
    • Flutter version 1.12.10-pre.12 at /Users/rcardillo15/Library/flutter
    • Framework revision b6e92003c8 (89 minutes ago), 2019-11-22 15:02:20 -0800
    • Engine revision ad14574949
    • Dart version 2.7.0

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /android-sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 29.0.2
    • ANDROID_HOME = /android-sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.1)
    • Xcode at /Applications/Xcode-11.1.app/Contents/Developer
    • Xcode 11.1, Build version 11A1027
    • CocoaPods version 1.8.4

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 41.1.2
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[✓] Connected device (1 available)
    • Mr. Mighty • 00008030-0005644A2644802E • ios • iOS 13.2.3

• No issues found!

See attached for an example of the problems that happen in the simulator. In this case, it was the AppBar, but sometimes the titles are in the wrong places. On device, this crashes after about 4 rotations.

@gaaclarke - @eseidelGoogle said he thinks you're working on Metal? If not, can you tag whoever might be interested in this issue? I implemented a quick example (see above GitHub repo) with the hope of getting more immediate attention on this issue. This is the new issue I was trying to report in #32453. I don't think these issues are related, but I found it while testing other crashes that were happening when multiple Platform Views are displayed and the device is rotated (e.g. #34330).
Also, if possible, this case should be tested as well when implementing #31139 so we don't regress on this behavior in the future.

Thanks @raycardillo-VerizonMedia, I'll take a look.   Can you please include a stacktrace for the crash?

I was able to reproduce this.  I had problems reproducing it on my iPhone SE on iOS 11.3.  On my iPhone 8 on iOS 13 it wasn't hard.
Here is the stacktrace:
Thread 1 Queue : com.apple.main-thread (serial)
#0	0x000000010151e340 in sk_sp<SkSurface>::get() const at /Users/aaclarke/dev/engine/src/third_party/skia/include/core/SkRefCnt.h:298
#1	0x000000010151e30c in sk_sp<SkSurface>::operator bool() const at /Users/aaclarke/dev/engine/src/third_party/skia/include/core/SkRefCnt.h:296
#2	0x000000010151c148 in bool operator!=<SkSurface>(sk_sp<SkSurface> const&, std::nullptr_t) at /Users/aaclarke/dev/engine/src/third_party/skia/include/core/SkRefCnt.h:352
#3	0x0000000101783ce8 in flutter::SurfaceFrame::SkiaCanvas() at /Users/aaclarke/dev/engine/src/flutter/shell/common/surface.cc:36
#4	0x00000001014aea6c in flutter::FlutterPlatformViewsController::SubmitFrame(GrContext*, std::__1::shared_ptr<flutter::IOSGLContext>) at /Users/aaclarke/dev/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm:373
#5	0x000000010151a33c in flutter::IOSSurfaceGL::SubmitFrame(GrContext*) at /Users/aaclarke/dev/engine/src/flutter/shell/platform/darwin/ios/ios_surface_gl.mm:148
#6	0x000000010151a3fc in non-virtual thunk to flutter::IOSSurfaceGL::SubmitFrame(GrContext*) ()
#7	0x00000001016f789c in flutter::Rasterizer::DrawToSurface(flutter::LayerTree&) at /Users/aaclarke/dev/engine/src/flutter/shell/common/rasterizer.cc:318
#8	0x00000001016f88c4 in flutter::Rasterizer::DoDraw(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >) at /Users/aaclarke/dev/engine/src/flutter/shell/common/rasterizer.cc:222
#9	0x00000001016fd474 in flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_0::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >) const at /Users/aaclarke/dev/engine/src/flutter/shell/common/rasterizer.cc:123
#10	0x00000001016fd3f8 in decltype(std::__1::forward<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_0&>(fp)(std::__1::forward<std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(fp0))) std::__1::__invoke<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_0&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_0&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&) at /Users/aaclarke/dev/engine/src/buildtools/mac-x64/clang/include/c++/v1/type_traits:4350
#11	0x00000001016fd370 in void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_0&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> > >(flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_0&, std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&) at /Users/aaclarke/dev/engine/src/buildtools/mac-x64/clang/include/c++/v1/__functional_base:349
#12	0x00000001016fbcf8 in std::__1::__function::__func<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_0, std::__1::allocator<flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_0>, void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >&&) at /Users/aaclarke/dev/engine/src/buildtools/mac-x64/clang/include/c++/v1/functional:1572
#13	0x00000001016fd8a0 in std::__1::function<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)>::operator()(std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >) const at /Users/aaclarke/dev/engine/src/buildtools/mac-x64/clang/include/c++/v1/functional:1923
#14	0x00000001016f7fb0 in flutter::Pipeline<flutter::LayerTree>::Consume(std::__1::function<void (std::__1::unique_ptr<flutter::LayerTree, std::__1::default_delete<flutter::LayerTree> >)> const&) at /Users/aaclarke/dev/engine/src/flutter/shell/common/pipeline.h:154
#15	0x00000001016f7ba8 in flutter::Rasterizer::Draw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >) at /Users/aaclarke/dev/engine/src/flutter/shell/common/rasterizer.cc:126
#16	0x000000010176983c in flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_29::operator()() const at /Users/aaclarke/dev/engine/src/flutter/shell/common/shell.cc:913
#17	0x0000000101769798 in decltype(std::__1::forward<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_29&>(fp)()) std::__1::__invoke<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_29&>(flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_29&) at /Users/aaclarke/dev/engine/src/buildtools/mac-x64/clang/include/c++/v1/type_traits:4350
#18	0x000000010176974c in void std::__1::__invoke_void_return_wrapper<void>::__call<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_29&>(flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_29&) at /Users/aaclarke/dev/engine/src/buildtools/mac-x64/clang/include/c++/v1/__functional_base:349
#19	0x00000001017682a0 in std::__1::__function::__func<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_29, std::__1::allocator<flutter::Shell::OnAnimatorDraw(fml::RefPtr<flutter::Pipeline<flutter::LayerTree> >)::$_29>, void ()>::operator()() at /Users/aaclarke/dev/engine/src/buildtools/mac-x64/clang/include/c++/v1/functional:1572
#20	0x000000010156cc0c in std::__1::function<void ()>::operator()() const at /Users/aaclarke/dev/engine/src/buildtools/mac-x64/clang/include/c++/v1/functional:1923
#21	0x000000010157fcec in fml::MessageLoopImpl::FlushTasks(fml::FlushType) at /Users/aaclarke/dev/engine/src/flutter/fml/message_loop_impl.cc:123
#22	0x000000010157fb20 in fml::MessageLoopImpl::RunExpiredTasksNow() at /Users/aaclarke/dev/engine/src/flutter/fml/message_loop_impl.cc:133
#23	0x000000010159c228 in fml::MessageLoopDarwin::OnTimerFire(__CFRunLoopTimer*, fml::MessageLoopDarwin*) at /Users/aaclarke/dev/engine/src/flutter/fml/platform/darwin/message_loop_darwin.mm:75
#24	0x00000001a797ae1c in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ ()
#25	0x00000001a797ab58 in __CFRunLoopDoTimer ()
#26	0x00000001a797a228 in __CFRunLoopDoTimers ()
#27	0x00000001a7975364 in __CFRunLoopRun ()
#28	0x00000001a79748bc in CFRunLoopRunSpecific ()
#29	0x00000001b17e0328 in GSEventRunModal ()
#30	0x00000001aba0a6d4 in UIApplicationMain ()
#31	0x0000000100f3a11c in main at /Users/aaclarke/dev/flutter-rotation-bug/ios/Runner/main.m:7
#32	0x00000001a77ff460 in start ()

It is a bit surprising to see flutter::Rasterizer::DoDraw showing up in the stacktrace for the main thread.

The following patch removes the crash but leaves the app not drawing the menu bar:
--- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm
+++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm
@@ -370,10 +370,12 @@ bool FlutterPlatformViewsController::SubmitFrame(GrContext* gr_context,
   for (int64_t view_id : composition_order_) {
     EnsureOverlayInitialized(view_id, gl_context, gr_context);
     auto frame = overlays_[view_id]->surface->AcquireFrame(frame_size_);
-    SkCanvas* canvas = frame->SkiaCanvas();
-    canvas->drawPicture(picture_recorders_[view_id]->finishRecordingAsPicture());
-    canvas->flush();
-    did_submit &= frame->Submit();
+    if (frame) {
+      SkCanvas* canvas = frame->SkiaCanvas();
+      canvas->drawPicture(picture_recorders_[view_id]->finishRecordingAsPicture());
+      canvas->flush();
+      did_submit &= frame->Submit();
+    }
   }
   picture_recorders_.clear();
   if (composition_order_ == active_composition_order_) {

That will result in the spamming of the "Could not make the context current to acquire the frame" message.  I tracked that down to what is causing it, it is because this call is returning false: https://github.com/gaaclarke/engine/blob/c82556bae4be17e46958b7c96d1f1c6a8c99fc4f/shell/platform/darwin/ios/ios_gl_render_target.mm#L120:L120

IOSRenderTarget::UpdateStorageSizeIfNecessary returns false because the layer_ is of an invalid size, like (size_width = 3670, size_height = 0).
Here is the po of the layer_:
(lldb) po layer_.get()
<CAEAGLLayer:0x280f801c0; position = CGPoint (917.5 0); bounds = CGRect (0 0; 1835 0); delegate = <FlutterOverlayView: 0x107f03f20; frame = (0 0; 1835 0); autoresize = W+H; userInteractionEnabled = NO; layer = <CAEAGLLayer: 0x280f801c0>>; contents = <CAImageQueue 0x2833a8500>; allowsDisplayCompositing = YES; drawableProperties = {
    EAGLDrawablePropertyColorFormat = EAGLColorFormat8888;
    EAGLDrawablePropertyRetained = 0;
}; presentsWithTransaction = 1; rasterizationScale = 2; contentsScale = 2>

And the po of the FlutterOverlayView:
<FlutterOverlayView: 0x107f03f20; frame = (0 0; 1835 0); autoresize = W+H; userInteractionEnabled = NO; layer = <CAEAGLLayer: 0x280f801c0>>

@gaaclarke Thanks for the quick response. Do you know if the fix will also correct the distortion I'm seeing in the simulator? I'm suspecting that it is only going to fix the crash on device. If so, we will have to pursue one problem at a time, but I was just curious because it's seems like there might be more than one issue at play here.

@raycardillo-VerizonMedia It should fix the distortion problem since the frame of the views was out of whack.

To be clear - if this is happening on iOS, it's not related to #32453, which is Android specific.

@dnfield - I wasn't sure when I first opened this because I was unable to test on Android. But given that the crash is iOS specific, and that is also causing the distortion in simulator, then it would appear that this issue is iOS specific. (At least until the root cause of the crash is fixed and I can test again on both platforms.) ;)

Closed, https://github.com/flutter/engine/pull/14018 merged.


text:
PageView snapping no longer working

PageView snapping no longer works in dev (1.12.11), and always bounces back to the first page.
It's working in beta 1.11.0.
I've narrowed the commit that caused the issue to: https://github.com/flutter/flutter/commit/851d6996e7cedf767de7464e02a21e493a6f18e5
Steps to Reproduce
Try to use a PageView widget with pageSnapping set to true.
Target Platform: iOS and Android
Target OS version/browser: any
Devices: any

Close in favor of https://github.com/flutter/flutter/issues/45096

authors: LongCatIsLooong athornz


text:
Add background execution tests for android_alarm_manager plugin

https://github.com/flutter/plugins/pull/2453 fixes a regression in the android_alarm_manager where a bad ordering of calls prevented callbacks from being executed in the background. We should add tests that ensure this functionality works properly in the future so we don't regress again.
This should be possible when https://github.com/flutter/flutter/issues/38983 is resolved.
cc/ @mklim @Hixie

Since https://github.com/flutter/flutter/issues/47406 is not actually resolved until it is tested, I'm propagating the customer critical labels from that issue to this one.

Just talked to @bkonyi and @collinjackson and Collin said he's going to finish this one. Thanks!

The issue here is that this app has both Espresso and E2E tests in the same app and they're using different incompatible bindings. Filed https://github.com/flutter/flutter/issues/51781 with potential solutions. I'm going to be working on this next.
To get this test landed, I've put it into its own example app for now.

It seems like the possibilities are

second example app
land it as a manual test
wait for #51781 first

authors: Hixie bkonyi collinjackson


text:
be more lenient about the android SDK layout

Some android SDKs have slightly non-standard layouts. In particular, the platforms/ directory
has subdirectories named android_* instead of the usual android-*. We should support this style SDK.

How does this manifest? What SDKs are these?

@devoncarew Can you elaborate on this? Is this obsolete now that we've migrated to gradle?

I don't remember the context for this bug. I think we're good to close it; if it's a real issue, it'll re-open.

authors: Hixie devoncarew


text:
ScrollController attached to multiple scroll views

I developing ann app and i got below error but i dont know why.. I do not have any controller. Is it about CarouselSlider ? because, i look at error point, that shows "child: CarouselSlider" What can i do ? Please help me.

════════ Exception caught by widgets library ═══════════════════════════════════ ScrollController attached to multiple scroll views. 'package:flutter/src/widgets/scroll_controller.dart': Failed assertion: line 111 pos 12: '_positions.length == 1' The relevant error-causing widget was CarouselSlider

My Code;
List<String> images = new List();

  @override
  void initState() {
    Future.delayed(Duration(milliseconds: 0)).then((f) {
      setState(() {
        rightPaddingValue = 10;
      });
    });
    super.initState();
    images.add(mainImage);
    images.add(contentImage1);
    images.add(contentImage2);
    images.add(contentImage3);
    images.add(contentImage4);
  }

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: CustomScrollView(
        slivers: <Widget>[
          SliverAppBar(
            backgroundColor: Colors.white70,
            expandedHeight: 270,
            flexibleSpace: FlexibleSpaceBar(
              background: Hero(
                tag: tag,
                child: CarouselSlider(
                  height: 400.0,
                  autoPlay: true,
                  enlargeCenterPage: true,
                  items: images.map((i) {
                    return Builder(
                      builder: (BuildContext context) {
                        return Container(
                          width: MediaQuery.of(context).size.width,
                          child: Image(
                            image: CachedNetworkImageProvider(i),
                            fit: BoxFit.cover,
                          ),
                        );
                      },
                    );
                  }).toList(),
                ),
              ),
            ),
...

Hi @ysnklcky
For issue related to the 3rd party plugin carousel_slider you may want to open an issue in the dedicated github.
Closing, as this isn't an issue with Flutter itself,
if you disagree please write in the comments and I will reopen it
Thank you

authors: TahaTesser ysnklcky


text:
Unwanted bouncing animation on iOS when content of ListView shrinks

Internal: b/154880618
This is only reproduced in iOS, probably because of the bouncing scrolling physics. We do need the bouncing effect when user scrolls, but it should be disabled when a list item changes size (I don't think native iOS exhibits this behavior).
Min reproduction case:
import 'package:flutter/material.dart';

void main() {
  runApp(
    MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('ExpansionTile')),
        body: ListView.builder(
          itemBuilder: (BuildContext context, int index) => index == 0
              ? ExpandingBox()
              : Container(height: 300, color: Colors.red),
          itemCount: 2,
        ),
      ),
    ),
  );
}

class ExpandingBox extends StatefulWidget {
  @override
  _ExpandingBoxState createState() => _ExpandingBoxState();
}

class _ExpandingBoxState extends State<ExpandingBox> {
  var _height = 400.0;

  @override
  Widget build(BuildContext context) {
    return Container(
      height: _height,
      color: Colors.green,
      child: Align(
        alignment: Alignment.bottomCenter,
        child: FlatButton(
          child: Text('Collapse'),
          onPressed: () =>
              setState(() => _height = _height == 400 ? 1200 : 400),
        ),
      ),
    );
  }
}

reproduction steps:

launch the code
press the "Collapse" button once to expand the ListView
press the "Collapse" button a second time to shrink the ListView
notice the contraction resulted in the undesired animation

See internal bug for a video.

Critical as the app is failing UX review which blocks launch.

@khorshijie do you have a mock for the desired visual effect? Should it just instantly snap?

I don't have a mock.
I wrote a similar minimal reproduction case on native iOS, and it seems like the view just instantly snaps (attached video in drive link). I think we can mimic the native behavior here.
https://drive.google.com/file/d/1hBQIBuRTFdsrlsYYGCxuLAEzV0fg04EE/view?usp=sharing

This doesn't reproduce on 1.18.0-9.0.pre.46 on iOS 13.3

Do you have any more information about where it appears?  Flutter version, iOS version, different reproduction code?

I was able to reproduce it.  Some key information was missing, the undesired animation happens the second time you press the button, you have to press it twice.  Thus the animation is happening as a result of the contraction of the listview height.

This appears to be what is driving the animation:
flutter: animateWith BouncingScrollSimulation(leadingExtent: 0.0, trailingExtent: 0.0)
#0      AnimationController.animateWith (package:flutter/src/animation/animation_controller.dart:694:49)
#1      new BallisticScrollActivity (package:flutter/src/widgets/scroll_activity.dart:514:9)
#2      ScrollPositionWithSingleContext.goBallistic (package:flutter/src/widgets/scroll_position_with_single_context.dart:148:21)
#3      IdleScrollActivity.applyNewDimensions (package:flutter/src/widgets/scroll_activity.dart:149:14)
#4      ScrollPosition.applyNewDimensions (package:flutter/src/widgets/scroll_position.dart:526:14)
#5      ScrollPositionWithSingleContext.applyNewDimensions (package:flutter/src/widgets/scroll_position_with_single_context.dart:106:11)
#6      ScrollPosition.applyContentDimensions (package:flutter/src/widgets/scroll_position.dart:496:7)
#7      RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1357:20)
#8      RenderObject._layoutWithoutResize (package:flutter/<…>

I suppose semantically, to have the strict iOS behavior, it's IdleScrollActivity.applyNewDimensions that shouldn't create any ballistic simulations. But it's a big scope work anticipating all the potential consequences of it.

I've seen the same animation on Android, it doesn't appear to be iOS only.  Is it that this animation is expected on Android and not on iOS?

I haven't tested it but you might right that it could happen on Android too. https://github.com/flutter/flutter/blob/46a5c550dbfad8273d33871bbcf46c5eb4a5afa6/packages/flutter/lib/src/widgets/scroll_simulation.dart#L150. @mehmetf you said it didn't repro on Android?
I think the solution is still semantically the same (on IdleScrollActivity) but still slightly risky.

I believe this applies to Android as well but perhaps it is less jarring (glow vs bounce).

Here is the lay of the land.  I had to draw it up because it's a lot to keep in your head:

It seems like we can create a new method on ScrollActivityDelegate that is applyNewDimensions that will pop the ScrollPositionWithSingleContext's scroll position to the extent, instead of doing that through an animation.

It appears that when ScrollPositionWithSingleContext.goBalistic() is called ScrollPositionWithSingleContext.maxScrollExtent == 0.  This probably contributes to the oddness of the animation.  I speculate the end result of a contraction that causes the offset to be out-of-bounds will always be offset == 0.0.  It just so happens that that is the correct end state for the sample, but wouldn't be for a contraction that happens lower in a longer ListView.

I tried to use a DrivenScrollActivity to jump directly to offset zero instead of using a BallisticScrollActivity.  It gets the results we want but it introduces a single frame blip sometimes.

Using a BalisticScrollActivity with a Simulation that just completes and goes to one offset also sometimes results in a singular frame being white, the aforementioned "blip".

https://github.com/flutter/flutter/pull/55993 does the jump we want, but here is the visual glitch that happens sometimes.  I'll shop the draft around to see if someone has some idea on how to get rid of it:

Even just directly calling jumpTo(0.0) as a result of applyNewDimensions results in a half second of white being rendered before the jump.  I'm now skeptical we can eliminate this animation, the library really wants an animation here.  It is starting to look like the amount of plumbing to remove may be massive.

What's going on is that when the button is pressed the second time, the scroll view suddenly finds itself with a massively out-of-bounds position, and it needs to do something about it. I'm surprised to hear that it only reproduces on iOS; I can get it to happen on iOS and on Android, it's not platform-specific code as far as I recall.
When the cause is a much smaller delta, e.g. because you're looking at a list of items and the last item was removed, then the animation is clearly desireable. I would argue that the problem here is that the first item in the list didn't animate when it shrank (though I guess to look good it would have to animate with exactly the same logic as the ballistic scroll to get us back to within bounds, which would be... tricky to pull off).
Forcing the list to never overscroll should be possible by providing a ScrollPhysics that implements a very strict applyBoundaryConditions.

Hm, actually, I guess we never ask the physics to do the scroll in this case... that's probably a mistake. It means that applyBoundaryConditions doesn't get a chance to enforce the rule...

Thinking out loud, it's sort of weird that we call ScrollActivity.applyNewDimensions and rely on it calling goBallistic...

Hm, actually, I guess we never ask the physics to do the scroll in this case... that's probably a mistake. It means that applyBoundaryConditions doesn't get a chance to enforce the rule...

That matches what I'm seeing in my PR, I print out the overscroll in setPixels and it always prints 0 even though sometimes a white frame is rendered.

Depending on what we actually want to have happen here, it's arguably the case that we should be applying a correction to the offset during layout. Anything we do after layout will be too late and will show the white frame regardless of how clever we are, since it happens after the offending layout.
That suggests that we should have the viewport contact the physics somehow (well, the activity, actually, since we still want to allow iOS-style bounce, and the activity should contact the physics) at the end of layout to get final approval...

aha, that exists already, it's called offset.applyContentDimensions

and that already calls applyNewDimensions... we're close to the code path we need here, just needs a bit of help.

@Hixie Are you talking about this?
--- a/packages/flutter/lib/src/widgets/scroll_position.dart
+++ b/packages/flutter/lib/src/widgets/scroll_position.dart
@@ -479,30 +479,37 @@ abstract class ScrollPosition extends ViewportOffset with ScrollMetrics {
     context.setSemanticsActions(_semanticActions);
   }

   @override
   bool applyContentDimensions(double minScrollExtent, double maxScrollExtent) {
     assert(minScrollExtent != null);
     assert(maxScrollExtent != null);
     if (!nearEqual(_minScrollExtent, minScrollExtent, Tolerance.defaultTolerance.distance) ||
         !nearEqual(_maxScrollExtent, maxScrollExtent, Tolerance.defaultTolerance.distance) ||
         _didChangeViewportDimensionOrReceiveCorrection) {
       assert(minScrollExtent != null);
       assert(maxScrollExtent != null);
       assert(minScrollExtent <= maxScrollExtent);
       _minScrollExtent = minScrollExtent;
       _maxScrollExtent = maxScrollExtent;
+      if (pixels > _maxScrollExtent) {
+        correctPixels(_maxScrollExtent);
+      }
+      if (pixels < _minScrollExtent) {
+        correctPixels(_minScrollExtent);
+      }
       _haveDimensions = true;
       applyNewDimensions();
       _didChangeViewportDimensionOrReceiveCorrection = false;

That still renders off the bounds of the listview for a half second... maybe it's fighting with applyNewDimensions... If this is what you were thinking I can poke around more tomorrow.

The key is returning false from that method, to retrigger layout. But only doing it during idle activities. And having the physics actually decide what to do.
The tricky part is that the activities don't have access to the physics, which is weird. I'm trying to figure out if we should let them have access or not.

Observation: if this happens while you're overscrolling, you really want the position to be snapped not to zero, but to the same delta from the max extent (or min extent when underscrolling) as it had before. We don't seem to track the old value, sadly...

https://github.com/flutter/flutter/compare/master...Hixie:scroll_snap is what I came up with. It solves the problem in the case where the user isn't scrolling and everything is idle, but in the case where the user is scrolling, or there's a ballistic or animated scroll happening, it still has the same problem as before.
(Also, it needs tests. I did update the docs though.)

@Hixie Thanks, a few questions on the PR:

why even delegate to ScrollPhysics if the logic is unconditionally the same?
in the case that we correctPixels, shouldn't we go to an IdleActivity?
do you want me to pick it up and bring it to completion?

@Hixie @xster Outstanding questions for issue:

Given Hixie's approach are we confident making the change with respect to Risk vs Reward?
The animation appears on Android and iOS, the issue only complains about iOS, do we want to remove the animation for both platforms?
Replacing the incorrect animation with an animation of length zero is less invasive, but sometimes renders one frame wrong.  Is that a reasonable compromise? What is more wrong, a 1 second animation or a 1 frame animation sometimes?

What I was saying on internal chat yesterday is that since we have implemented a feature that no one asked for (animate to new extent edge on applyNewDimensions when pixel is outside the edge), we can just globally remove that mechanism by just letting applyNewDimensions call correctPixels itself when pixel is outside min/maxScrollExtent (and let it return a bool).
But Ian's solution is better since it kept it customizable per physics from the user.

The animation appears on Android and iOS, the issue only complains about iOS, do we want to remove the animation for both platforms?

Yes, I think clamping it for both physics is sensible.

Replacing the incorrect animation with an animation of length zero is less invasive, but sometimes renders one frame wrong. Is that a reasonable compromise? What is more wrong, a 1 second animation or a 1 frame animation sometimes?

We should make sure there isn't a wrong frame.

We should make sure there isn't a wrong frame.

It sounded like you and hixie were reluctant to accept the collateral implications of such a change, that's why I ask.  I know what is obviously better.  I don't have enough experience with this code to know how risky of a change this is.

But Ian's solution is better since it kept it customizable per physics from the user.

Ok, I'll preserve delegating to the ScrollPhysics.

Yes, I think clamping it for both [Android and iOS] physics is sensible.

Roger.

@Hixie Thanks, a few questions on the PR:

why even delegate to ScrollPhysics if the logic is unconditionally the same?

It's not the same. On iOS, for example, if you end up in this situation while overscrolling, the behaviour would be different than on Android. (Also, I suspect people might wont to override it to be different.) The branch I posted doesn't provide a complete solution.

in the case that we correctPixels, shouldn't we go to an IdleActivity?

That would mean that if anything changed size while you were scrolling, your scroll would be canceled.

do you want me to pick it up and bring it to completion?

Sure!

The animation appears on Android and iOS, the issue only complains about iOS, do we want to remove the animation for both platforms?

I'm more confident that we want to remove this for Android than for iOS. On Android it's 100% wrong as far as I can tell. On iOS, the situation is less clear (see my comments above about needing to maintain the delta from min-or-max to position during under/over-scroll, rather than just removing the gap entirely).

Replacing the incorrect animation with an animation of length zero is less invasive, but sometimes renders one frame wrong.  Is that a reasonable compromise? What is more wrong, a 1 second animation or a 1 frame animation sometimes?

The correct approach is definitely to correct the pixels during layout rather than one frame later. One frame later looks really ugly, arguably worse than having the animation drag it back, IMHO.

That would mean that if anything changed size while you were scrolling, your scroll would be canceled.

That is the current behavior, the resetting animation will cancel any current activity.  Don't we want to preserve that?
With respect to customization, your patch doesn't allow someone to get the behavior we are removing for example, should we allow someone that level of customization without subclassing ScrollView?

Note: I'm running into an interesting impasse.  The pull-down-to-refresh mechanism is being broken by removing this animation.  When you pull down and an item is inserted you find that your content size has changed and you are at a negative offset out-of-bounds so it jumps back instead of animating like it should.  The way this mechanism is setup is with something like a CupertinoSliverRefreshControl with a standard CustomScrollView and ScrollPhysics so there isn't an easy way to replace this behavior.
We may not be able to get rid of the animation as the default behavior but we can make it possible to have with a custom ScrollPhysics.

Maybe with the bouncy physics we can only clamp when it's past the max extent?

That would work but it's a very specific behavior to explain in the API docs :)

Maybe with the bouncy physics we can only clamp when it's past the max extent?

The thought crossed my mind then I arrived where @xster is.  It's just too oddball to treat them differently.
There was also some weirdness related to ScrollViews who don't know their extents at construction time also.  Their max extents were bouncing between infinity and the calculated max which was also tripping things up.  I'm going to pull back and make it so you can turn the animation is off but not touch the default behavior.  Maybe someone more adept can solve this Hellraiser puzzle box (apparently it's called a 'Lament Configuration').

I think what would be most helpful if you want to hand this off to someone else would be to create test cases for all the cases you ran into.

(I don't think we should land a PR that just turns off the animation.)

@Hixie

I think what would be most helpful if you want to hand this off to someone else would be to create test cases for all the cases you ran into.

I've just put a PR in review (https://github.com/flutter/flutter/pull/55993).  It adds tests that cover what happens when the extents shrink, that behavior wasn't asserted elsewhere in tests.
The things I ran into were existing test cases.  The whole approach of removing this animation is antithetical to a few different variants of ScrollViews.  I've listed them above.  Unfortunately the way ScrollView's are constructed there doesn't appear to be a way to not break those and make the example code behave the way we want verbatim.  Maybe someone else could find a way but after days of research I couldn't find a way.

(I don't think we should land a PR that just turns off the animation.)

No one is suggesting that.  The PR I put up for review allows users to turn off the animation with a custom ScrollPhysics without affecting current default behavior.

Okie dokie. I'll take a look at the PR, see if I can come up with something that works with the tests.

This landed, please reach out to me if there's any further problems with it!

authors: Hixie gaaclarke khorshijie mehmetf xster


text:
Possible to customize TextTheme?

In our leafy app, we want to build a customized TextTheme that has some different font size and font weight than material design. Is there anyway we can achieve this?

I believe @Hixie was just working in this space (possibly this exact issue?) earlier this week?

We should just make TextTheme constructable.

authors: abarth eseidelGoogle vy0592


text:
[WebView]: How to display webview have height by content (no scroll, no define height before)

Steps to Reproduce

...
...
...

Logs

Logs

Hi @duy1998
It seems you are asking for assistance on personal code. Please see https://flutter.dev/community for resources and asking questions like this,
you may also get some help if you post it on Stack Overflow and if you need help with your code, please see https://www.reddit.com/r/flutterhelp/
Closing, as this isn't an issue with Flutter itself. If you disagree, please write in the comments and I will reopen it.
Thank you


text:
Stop using RGB565 texture based SkImages in TextureImage.

This was done for performance reasons but makes it harder for texture images to be color correct. The problem with the reproducible test case is described here and a video showing the performance issue is hosted here. cc @mattsarett.

cc @brianosman

This has been fixed.

authors: chinmaygarde mattsarett


text:
Error: The method 'call' isn't defined for the class 'Type'

I'm white-labelling an app so, in root app I have a config.dart with all my brand variables:
final WIDGET_ONE_CONTROLLER = null;

final WIDGET_TWO_CONTROLLER = null;

...

And I use this variable in my widgets:
final widgetOneController = WIDGET_ONE_CONTROLLER(myParameter);

But it throws this error:

Error: The method 'call' isn't defined for the class 'Type'.
Try correcting the name to the name of an existing method, or defining a method named 'call'.
WIDGET_ONE_CONTROLLER(myParameter);

In my brand app I define the controllers in this way:
import 'package:config/controllers/widget_one_controller.dart';
import 'package:config/controllers/widget_two_controller.dart';

final WIDGET_ONE_CONTROLLER = WidgetOneController;

final WIDGET_TWO_CONTROLLER = WidgetTwoController;

How have I to pass the widgets in my brand file to be able to use it and create objects (or pass the object directly) to root app?

It seems you are asking for assistance on personal code. Please see https://flutter.dev/community for resources and asking questions like this,
you may also get some help if you post it on Stack Overflow and if you need help with your code, please see https://www.reddit.com/r/flutterhelp/
Closing, as this isn't an issue with Flutter itself. If you disagree, please write in the comments and I will reopen it.
Thank you

authors: GilbertoGmobil TahaTesser


text:
TabBar Indicator Shows Incorrect Tab After Removing Selected Tab

Steps to Reproduce

Use the code sample below.
Add a new tab (using the FAB)
Select the last tab
Remove the tab (with the other FAB)

code sample
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _numTabs = 3;

  void _addTab() {
    setState(() {
      _numTabs++;
    });
  }

  void _removeTab() {
    setState(() {
      _numTabs--;
    });
  }

  @override
  Widget build(BuildContext context) {
    return DefaultTabController(
      initialIndex: 0,
      length: _numTabs,
      child: Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
          bottom: TabBar(
            tabs: [
              for (var i = 0; i < _numTabs; i++)
                Tab(
                  child: Text('$i'),
                )
            ],
          ),
        ),
        body: Center(
          child: TabBarView(children: [
            for (var i = 0; i < _numTabs; i++)
              Text(
                'tab number $i',
                style: Theme.of(context).textTheme.headline4,
              ),
          ]),
        ),
        floatingActionButton: Row(
          mainAxisAlignment: MainAxisAlignment.end,
          children: [
            Padding(
                padding: EdgeInsets.only(right: 8),
                child: FloatingActionButton(
                    onPressed: _removeTab, child: Icon(Icons.remove))),
            FloatingActionButton(
              onPressed: _addTab,
              tooltip: 'Increment',
              child: Icon(Icons.add),
            ),
          ],
        ), // This trailing comma makes auto-formatting nicer for build methods.
      ),
    );
  }
}

Expected results:
The TabBar indicator should display under the correct selected tab.
Actual results:
The TabBar indicator displays under the wrong tab until you start scrolling horizontally or select another tab.

Logs

no analyzer warnings

[✓] Flutter (Channel beta, 2.0.2, on macOS 11.2.3 20D91 darwin-x64, locale en-US)
    • Flutter version 2.0.2 at /Users/jonathanaird/developer/flutter sdk/flutter
    • Framework revision 8962f6dc68 (2 weeks ago), 2021-03-11 13:22:20 -0800
    • Engine revision 5d8bf811b3
    • Dart version 2.12.1

[✗] Android toolchain - develop for Android devices
    ✗ ANDROID_HOME = /Users/jonathanaird/Library/Android/sdk
      but Android SDK not found at this location.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode-beta.app/Contents/Developer
    • Xcode 12.5, Build version 12E5244e
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed
      instructions).

[✓] VS Code (version 1.54.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.20.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.2.3 20D91 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 89.0.4389.90

flutter doctor -v
[✓] Flutter (Channel stable, 2.0.3, on macOS 11.2.3 20D91 darwin-x64, locale en-AO)
    • Flutter version 2.0.3 at /Users/pedromassango/Code/flutter_stable
    • Framework revision 4d7946a68d (10 days ago), 2021-03-18 17:24:33 -0700
    • Engine revision 3459eb2436
    • Dart version 2.12.2

[✓] 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
    • ANDROID_HOME = /Users/pedromassango/Library/Android/sdk
    • 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 at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ! CocoaPods 1.9.3 out of date (1.10.0 is recommended).
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To upgrade see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] IntelliJ IDEA Community Edition (version 2020.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 54.0.3
    • Dart plugin version 203.7759

[✓] VS Code (version 1.54.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.16.0

[✓] Connected device (3 available)
    • iPhone 11 Pro Max (mobile) • 7A82F29E-E49E-4B3C-8609-1570361DBC17 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-0 (simulator)
    • macOS (desktop)            • macos                                • darwin-x64     • macOS 11.2.3 20D91 darwin-x64
    • Chrome (web)               • chrome                               • web-javascript • Google Chrome 89.0.4389.90

! Doctor found issues in 1 category.

authors: jonaird pedromassangocode


text:
flutter_gallery__transition_perf_e2e_ios32 failing repeatedly mid-test

https://ci.chromium.org/p/flutter/builders/prod/Mac_ios flutter_gallery__transition_perf_e2e_ios32
Started with https://github.com/flutter/flutter/commit/c4ba26e31ba000d23de402af5be0aa129a9fda8e, but it is a revert and looks unrelated.
/cc @gspencergoog who is the current gardener.
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: VMServiceFlutterDriver: Connecting to Flutter application at http://127.0.0.1:49535/nfyiMuDo9Wc=/
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: VMServiceFlutterDriver: Isolate found with number: 3915756456638331
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: VMServiceFlutterDriver: Isolate is paused at start.
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: VMServiceFlutterDriver: Attempting to resume isolate
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stdout: flutter: 00:00 +0: flutter gallery transitions on e2e find.bySemanticsLabel
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stdout: flutter: 00:00 +0 ~1: flutter gallery transitions on e2e all demos
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: VMServiceFlutterDriver: Connected to Flutter application.
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stdout: flutter: > Shrine@Studies
...
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stdout: flutter: > Grid@Material
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: Unhandled exception:
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: DriverError: Failed to fulfill RequestData due to remote error
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: Original error: ext.flutter.driver: (112) Service has disappeared
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: Original stack trace:
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr:
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr:
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: #0      VMServiceFlutterDriver.sendCommand (package:flutter_driver/src/driver/vmservice_driver.dart:313:7)
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: <asynchronous suspension>
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: #1      FlutterDriver.requestData (package:flutter_driver/src/driver/driver.dart:508:39)
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: <asynchronous suspension>
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: #2      integrationDriver (package:integration_test/integration_test_driver.dart:71:29)
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: <asynchronous suspension>
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stdout: Screenshot written to /opt/s/w/ir/k/recipe_cleanup/flutter_logs_dir/drive_01.png
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] stderr: Failed to stop app
[flutter_gallery__transition_perf_e2e_ios32] [STDOUT] "/opt/s/w/ir/k/recipe_cleanup/tmpnt_xi_/flutter sdk/bin/flutter" exit code: 1
[flutter_gallery__transition_perf_e2e_ios32] [STDERR] Task failed: Executable "/opt/s/w/ir/k/recipe_cleanup/tmpnt_xi_/flutter sdk/bin/flutter" failed with exit code 1.
[flutter_gallery__transition_perf_e2e_ios32] [STDERR]
[flutter_gallery__transition_perf_e2e_ios32] [STDERR] Stack trace:
[flutter_gallery__transition_perf_e2e_ios32] [STDERR] package:flutter_devicelab/framework/utils.dart 98:3        fail
[flutter_gallery__transition_perf_e2e_ios32] [STDERR] package:flutter_devicelab/framework/utils.dart 363:5       _execute
[flutter_gallery__transition_perf_e2e_ios32] [STDERR] ===== asynchronous gap ===========================
[flutter_gallery__transition_perf_e2e_ios32] [STDERR] dart:async                                                 _asyncErrorWrapperHelper
[flutter_gallery__transition_perf_e2e_ios32] [STDERR] package:flutter_devicelab/framework/framework.dart         _TaskRunner._performTask.<fn>
[flutter_gallery__transition_perf_e2e_ios32] [STDERR] package:stack_trace                                        Chain.capture
[flutter_gallery__transition_perf_e2e_ios32] [STDERR] package:flutter_devicelab/framework/framework.dart 238:11  _TaskRunner._performTask
[flutter_gallery__transition_perf_e2e_ios32] [STDERR] package:flutter_devicelab/framework/framework.dart 137:41  _TaskRunner.run

It doesn't strictly seem to be a problem with the device since mac_ios_native_ui_tests_ios32 test passed on the same flutter-devicelab-mac-11 host on the same commits...

It passed locally for me on my iPhone 4s.

Marking it flaky in https://github.com/flutter/flutter/pull/79317

Now the phone device has been configured to restart when task fails.
Is there anything I can help triage the issue from infra side?
Asking @godofredoc to check if the phone looks in a good state from devicelab.

Now the phone device has been configured to restart when task fails.

Is that true for the 32-bit iOS phones?  I thought those needed special handling.

Asking @godofredoc to check if the phone looks in a good state from devicelab.

It looks like it's crashing, it gets halfway through the test and then after the failure it's sitting happily on the home screen.
https://storage.googleapis.com/flutter_logs/flutter/f12d90c4358be1d0ec159c9f72ea3ccc02fd9f59/flutter_gallery__transition_perf_e2e_ios32/1cdc6c62-d46d-4079-be71-e978a6dfac06/drive_01.png
Unfortunately we need idevicesyslog output for the old iOS 9 devices to see what crashed.

Now the phone device has been configured to restart when task fails.

Is that true for the 32-bit iOS phones? I thought those needed special handling.

Configs are the same for all ios tests. When tasks fail, it will call idevicediagnostics restart, which I assume is the same for any ios device?

@keyonghan I was thinking of
https://github.com/flutter/flutter/blob/b0afe3464e7d280f736917528e1c87046d6959f3/dev/devicelab/lib/framework/framework.dart#L20-L23
Is there a different script that reboots?

Ah, yes. that one is for rebooting after a certain number of test runs.
We have implemented an auto reboot from bot_config side, which has a typo! The --device-os should be ios.
That bot_config detects any test failure, and will call device_doctor tool to do device reboot.
I will submit a CL to update the --device-os input.
At the same time, @godofredoc has helped manually reboot the device, let's see if that helps.

Latest run succeeds. So rebooting the device helps.

which has a typo! The --device-os should be ios

👍
These old 32 bit fellas are just flaky sometimes... 😞   Will revert https://github.com/flutter/flutter/pull/79317.

Fix has been submitted to staging.
Will wait for the prod push before closing.

@keyonghan we should not reboot the ios32 phone. After rebooting, it gets to a "no sym card found" state, the previous logic was skipping that phone explicitly.

ah, right..
I will add a similar logic to exclude the 32 phone as well.

Removing out of ticket queue.

This is blocking to move the auto-recovery logic to luci.flutter.prod.

Logic has been added to exclude 32bit phone when rebooting. Closing.

authors: godofredoc jmagman keyonghan zanderso


text:
[desktop] Isolate task causes high CPU usage

Details
After an isolated task is started, the CPU usage increases rapidly and remains at a high level even if the task is done. Here is my test code
import 'dart:io';
import 'dart:isolate';

import 'package:flutter/material.dart';

class IsoTestPage extends StatefulWidget {
  IsoTestPage({required this.title});

  final String title;

  @override
  _IsoTestState createState() => _IsoTestState();
}

class _IsoTestState extends State<IsoTestPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async => Isolate.spawn(_isoHttpGet, null),
          child: Text("test isolate http get"),
        ),
      ),
    );
  }
}

void _isoHttpGet(dynamic notUsed) async {
  var client = new HttpClient();
  client.findProxy = HttpClient.findProxyFromEnvironment;
  client.badCertificateCallback = (certificate, host, port) => true;

  var request = await client.getUrl(Uri.parse("https://github.com"));
  var response = await request.close();

  print(response.statusCode);
  client.close();
}

The CPU usage is normal when the isolated task is not started.

After an isolated task is started (click the button).

This problem may be related to #78517, To reduce the interference I have modified the source code of the Win32 event loop ({project-root}\windows\runner\run_loop.cpp).
void RunLoop::Run() {
  MSG msg;
  while (GetMessage(&msg, nullptr, 0, 0)) {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
}

Enviroment

Hi, you are doing flutter desktop, can you answer my question please?
is it possible to move a full folder from one place to another in flutter desktop?
thanks

@Jazzykhan What about listing the files and directories of the folder, copying each element to another place, deleting them?

I update Flutter to 2.2.3, refresh the project, and the problem persists.

Still caused a high CPU usage.

Hi @xinlake
Thanks for filing the issue,  Indeed the CPU usage increases rapidly even with a single click, and when clicking multiple times the whole system slows down as the CPU  usage gets really high.
We are able to reproduce the CPU usage on multiple desktop platforms
Used the following minimal code sample

minimal code sample
import 'dart:io';
import 'dart:isolate';

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Material App',
      theme: ThemeData.dark(),
      home: IsoTestPage(
        title: 'Test',
      ),
    );
  }
}

class IsoTestPage extends StatefulWidget {
  IsoTestPage({required this.title});

  final String title;

  @override
  _IsoTestState createState() => _IsoTestState();
}

class _IsoTestState extends State<IsoTestPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async => Isolate.spawn(_isoHttpGet, null),
          child: Text("test isolate http get"),
        ),
      ),
    );
  }
}

void _isoHttpGet(dynamic notUsed) async {
  var client = new HttpClient();
  client.findProxy = HttpClient.findProxyFromEnvironment;
  client.badCertificateCallback = (certificate, host, port) => true;

  var request = await client.getUrl(Uri.parse("https://github.com"));
  var response = await request.close();

  print(response.statusCode);
  client.close();
}

Windows

CPU Usage Preview

Single click

Multiple clicks

stable
master

❌
❌

Check flutter doctor -v outputs for each channel below

flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on Microsoft Windows [Version 10.0.22000.51], locale en-US)
    • Flutter version 2.2.3 at C:\Users\Taha\Code\flutter_stable
    • Framework revision f4abaa0735 (5 days ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at C:\Users\Taha\Code\SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = C:\Users\Taha\Code\SDK
    • Java binary at: C:\Users\Taha\Code\android-studio\jre\bin\java.exe
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2019 16.10.3)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.10.31424.327
    • Windows 10 SDK version 10.0.19041.0

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions).

[✓] VS Code (version 1.57.1)
    • VS Code at C:\Users\Taha\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.24.0

[✓] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.22000.51]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 91.0.4472.124
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 91.0.864.64

! Doctor found issues in 1 category.

[✓] Flutter (Channel master, 2.4.0-1.0.pre.84, on Microsoft Windows [Version 10.0.22000.51], locale en-US)
    • Flutter version 2.4.0-1.0.pre.84 at C:\Users\Taha\Code\flutter_master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 691fa19dd7 (2 hours ago), 2021-07-06 02:06:04 -0400
    • Engine revision c1ce39ecb7
    • Dart version 2.14.0 (build 2.14.0-281.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at C:\Users\Taha\Code\SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = C:\Users\Taha\Code\SDK
    • Java binary at: C:\Users\Taha\Code\android-studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2019 16.10.3)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.10.31424.327
    • Windows 10 SDK version 10.0.19041.0

[✓] Android Studio (version 4.2.0)
    • Android Studio at C:\Users\Taha\Code\android-studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)

[✓] VS Code (version 1.57.1)
    • VS Code at C:\Users\Taha\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.24.0

[✓] Connected device (4 available)
    • Windows (desktop)       • windows • windows-x64     • Microsoft Windows [Version 10.0.22000.51]
    • Windows (UWP) (desktop) • winuwp  • windows-uwp-x64 •
    • Chrome (web)            • chrome  • web-javascript  • Google Chrome 91.0.4472.124
    • Edge (web)              • edge    • web-javascript  • Microsoft Edge 91.0.864.64

• No issues found!

✅ : No Issue ❌: Issue reproduced
macOS (intel)

CPU Usage Preview

Single click

Multiple clicks

stable
master

❌
❌

Check flutter doctor -v outputs for each channel below

flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on macOS 12.0 21A5268h darwin-x64, locale
    en-GB)
    • Flutter version 2.2.3 at /Users/tahatesser/Code/flutter_stable
    • Framework revision f4abaa0735 (5 days ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/tahatesser/Code/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Users/tahatesser/Code/SDK
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5.1, Build version 12E507
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

[✓] VS Code (version 1.57.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.24.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 12.0 21A5268h darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 91.0.4472.114

• No issues found!

[✓] Flutter (Channel master, 2.4.0-1.0.pre.84, on macOS 12.0 21A5268h
    darwin-x64, locale en-GB)
    • Flutter version 2.4.0-1.0.pre.84 at /Users/tahatesser/Code/flutter_master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 691fa19dd7 (2 hours ago), 2021-07-06 02:06:04 -0400
    • Engine revision c1ce39ecb7
    • Dart version 2.14.0 (build 2.14.0-281.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/tahatesser/Code/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Users/tahatesser/Code/SDK
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5.1, Build version 12E507
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

[✓] VS Code (version 1.57.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.24.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 12.0 21A5268h darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 91.0.4472.114

• No issues found!

✅ : No Issue ❌: Issue reproduced
macOS (M1)

CPU Usage Preview

Multiple clicks

Reproduced on Flutter master 2.4
Linux

CPU Usage Preview

Single click

Multiple clicks

stable
master

❌
❌

Check flutter doctor -v outputs for each channel below

flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on Linux, locale en_US.UTF-8)
    • Flutter version 2.2.3 at /home/taha/Code/flutter_stable
    • Framework revision f4abaa0735 (5 days ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /home/taha/Code/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /home/taha/Code/SDK
    • Java binary at: /home/taha/Code/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+0-b944-P17168821)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop
    • Ubuntu clang version 12.0.0-1ubuntu1
    • cmake version 3.18.4
    • ninja version 1.8.2
    • pkg-config version 0.29.2

[✓] Android Studio (version 4.2)
    • Android Studio at /home/taha/Code/android-studio
    • Flutter plugin version 58.0.1
    • Dart plugin version 202.8531
    • Java version OpenJDK Runtime Environment (build 11.0.8+0-b944-P17168821)

[✓] VS Code (version 1.57.1)
    • VS Code at /usr/share/code
    • Flutter extension version 3.24.0

[✓] Connected device (2 available)
    • Linux (desktop) • linux  • linux-x64      • Linux
    • Chrome (web)    • chrome • web-javascript • Google Chrome 91.0.4472.114

• No issues found!

[✓] Flutter (Channel master, 2.4.0-1.0.pre.84, on Pop!_OS 21.04
    5.11.0-7620-generic, locale en_US.UTF-8)
    • Flutter version 2.4.0-1.0.pre.84 at /home/taha/Code/flutter_master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 691fa19dd7 (2 hours ago), 2021-07-06 02:06:04 -0400
    • Engine revision c1ce39ecb7
    • Dart version 2.14.0 (build 2.14.0-281.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /home/taha/Code/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /home/taha/Code/SDK
    • Java binary at: /home/taha/Code/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+0-b944-P17168821)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop
    • Ubuntu clang version 12.0.0-1ubuntu1
    • cmake version 3.18.4
    • ninja version 1.8.2
    • pkg-config version 0.29.2

[✓] Android Studio (version 4.2)
    • Android Studio at /home/taha/Code/android-studio
    • Flutter plugin version 58.0.1
    • Dart plugin version 202.8531
    • Java version OpenJDK Runtime Environment (build 11.0.8+0-b944-P17168821)

[✓] VS Code (version 1.57.1)
    • VS Code at /usr/share/code
    • Flutter extension version 3.24.0

[✓] Connected device (2 available)
    • Linux (desktop) • linux  • linux-x64      • Pop!_OS 21.04
      5.11.0-7620-generic
    • Chrome (web)    • chrome • web-javascript • Google Chrome 91.0.4472.114

• No issues found!

✅ : No Issue ❌: Issue reproduced
When running the same code on the web, CPU usage spikes aren't observed, even with multiple clicks

@TahaTesser
Thank you for making this problem clear

// Isolate will not be actively released
Isolate lsolate = await Isolate.spawn(_isoHttpGet, null);
lsolate.kill();

A quick way to create isolate is compute()
import 'package:flutter/foundation.dart';
compute(_isoHttpGet, null);

The isolate that has not been released is recorded here

@knopp ring any bells?

The flutter event loop has nothing to do with isolates, which have their own dart loop. So it's probably completely unrelated to https://github.com/flutter/flutter/issues/78517 (also if it happens to other platforms).  Seems that it is reproducible though? I'll take a look, possibly today.

This seems to be a problem between HTTP client, streams and IOService dispatch. For example if the response is drained before closing the client, CPU load is fine (response.drain();). Also if the client is closed with force=true, it will terminate the stream and the isolate will quit without issues, again, no CPU load.
So the bottom line is, you either need to actually read the response, or close the client with force=true. Otherwise you get 100% CPU load on the isolate. I'm not sure if this is intentional behavior, it is possible that it just slipped under the radar, since most of the time when you get HTTP response you want to read it too.

It seems that it was my mistake, there is no basis to show that it causes by isolate, this problem will occur even if I don’t use isolate.
I have tested it again without isolate, as @knopp said, the CPU load will be fine if the response is read before closing the client. But, if close the client only with client.close(force: true); (without response.drain();) the CPU load is still high.

client.close(force: true); fixes the CPU load for me (both in original and in new isolate), but it might be OS specific. (tested on macOS)

On the Mac M1, the MacOS desktop app runs ok with normal CPU.
But on Windows 10, the app runs with VERY HIGH CPU load.
I can't find the source of the issue.
Anyone facing this as well.
I am on
Flutter 2.2.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision f4abaa0735 (8 weeks ago) • 2021-07-01 12:46:11 -0700
Engine • revision 241c87ad80
Tools • Dart 2.13.4

flutter doctor:
[√] Flutter (Channel stable, 2.2.3, on Microsoft Windows [Version 10.0.19043.1165], locale en-SG)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[√] Chrome - develop for the web
[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.10.1)
[√] Android Studio (version 4.1.0)
[√] VS Code (version 1.59.1)
[√] Connected device (3 available)

Anyone facing this as well.

Yes, with just the starter template app, Windows 10 CPU load isn't good on 2.2.3. Performance on Beta channel (2.5.0) is great.

I refreshed the test project and did a simple test, found that the CPU load problem can be solved by respond.drain(); or HttpClient.close(force: true). It is code mistake, or you may improve the HttpClient API or documents ^^.
  var client = new HttpClient()
    ..findProxy = HttpClient.findProxyFromEnvironment
    ..badCertificateCallback = (certificate, host, port) => true;

  var request = await client.getUrl(Uri.parse("https://github.com"));
  var respond = await request.close();
  respond.drain(); // add this

  client.close(force: true); // or add this

I think is issue can be closed ^^.

Indeed. If there are other CPU issues please open separate issue. This is caused by network socket not being read from which shouldn't under normal use of HttpClient()/

authors: Jazzykhan LiveRock Slyklaw TahaTesser clarkezone knopp xinlake yixiaco


text:
Having issues regarding cloning a single branch of a repository

Where: Script 'C:\flutter\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 1005 * What went wrong: Execution failed for task ':app:compileFlutterBuildDebug'. > Process 'command 'C:\flutter\flutter\bin\flutter.bat'' finished with non-zero exit value 1 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 2m 34s ********************************************************* WARNING: This version of flutter_tts will break your Android build if it or its dependencies aren't compatible with AndroidX. See https://goo.gl/CP92wY for more information on the problem and how to fix it. This warning prints for all Android build failures. The real root cause of the error may be unrelated. ********************************************************* Exception: Gradle task assembleDebug failed with exit code 1

Hi @Coder-Pritam,
Can you please provide your flutter doctor -v and flutter run --verbose logs, and a minimal complete reproducible code sample?
Thank you

authors: Coder-Pritam danagbemava-nc


text:
[Web] Support user defined font request URL

Because of GWF, Chinese users cannot access Google services normally, Flutter needs to provide proxy configuration to access google font.
example question: Google Fonts Unstable in China – Here is How to Fix It
Use case

dart code:

Chinese characters not show:

Unable to get robot font:

Font api unable:

Proposal
Flutter needs to provide proxy configuration to access google font.
I have submitted PR

Pull requests：https://github.com/flutter/engine/pull/30001

Need this feature! My website looks somehow corrupted because of this.

@chvin worked on this and made a PR in https://github.com/flutter/engine/pull/30001 but it still needs some work, so if anyone would like to pick up the baton and finish it I'm sure they would be very grateful.

I think the more complete solution would be https://github.com/flutter/flutter/issues/85793, where the font sets are part of the build. Then you can choose where to deploy them. But yeah, it has two parts:

Produce the font set.
Provide a way to configure where it comes from.

So this particular request still makes sense as the second part.

any update?

authors: Hixie JDongKhan chvin kuro7766 yjbanov


text:
Reject android 11 - All Files Access Permission: Not a core feature

Issue when update compile sdk version 30.
Thank you for reading. My app is working properly on old version. But after upgrading to sdk version 30. I am facing serious problem related to new policy android 11. I have tried many ways but still getting rejected by android.

Reject details.
The feature you identified that is dependent on this permission does not appear to be critical to the core functionality of your app.

Core functionality is defined as the main purpose of the app. Without this core functionality, the app is "broken" or rendered unusable. The core functionality, as well as any core features that comprise this core functionality, must all be prominently documented and promoted in the app's description.

Please update your app so that the feature does not use this permission or ensure that the core functionality is prominently documented and promoted in the app's description and resubmit your app on Play Developer console.

Policy: All Files Access Permission

Files and directory attributes on a user's device are regarded as personal and sensitive user data subject to the Personal and Sensitive Information policy and the following requirements:

Apps should only request access to device storage which is critical for the app to function, and may not request access to device storage on behalf of any third-party for any purpose that is unrelated to critical user-facing app functionality.
Android devices running Android "R" (Android 11) or later, will require the MANAGE_EXTERNAL_STORAGE permission in order to manage access in shared storage. All apps that target R or later and request broad access to shared storage ("All files access") must successfully pass an appropriate access review prior to publishing. Apps allowed to use this permission must clearly prompt users to enable "All files access" for their app under "Special app access" settings. For more information on the R requirements, please see this help article.

Read more about Use of All Files Access Permission
See Android storage use cases and best practices
Address this issue in the Play Console.

App details.

Manifest file.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.netstars.paperpos">
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO" tools:node="remove"/>
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" tools:node="remove"/>

    <application
        android:name="io.flutter.app.FlutterApplication"
        android:allowBackup="false"
        android:label="@string/app_name_gradle"
        android:icon="@mipmap/ic_launcher"
        android:requestLegacyExternalStorage="true">
        <meta-data android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id"
        />
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_icon"
            android:resource="@drawable/notification_icon"
        />
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_color"
            android:resource="@color/colorNotification"
        />
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <meta-data
              android:name="io.flutter.embedding.android.NormalTheme"
              android:resource="@style/NormalTheme"
            />
            <!-- <meta-data
              android:name="io.flutter.embedding.android.SplashScreenDrawable"
              android:resource="@drawable/launch_background"
            /> -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <intent-filter>
                <action android:name="FLUTTER_NOTIFICATION_CLICK" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="flutterEmbedding"
            android:value="2"
        />
    </application>
</manifest>

Build gradle file.
android {
    compileSdkVersion 31

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        applicationId ""
        minSdkVersion 23
        targetSdkVersion 30
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }
}

Pubspec file.
  # Firebase
  firebase_analytics: 8.3.4
  firebase_core: 1.10.0
  firebase_crashlytics: 2.3.0
  firebase_remote_config: 0.11.0+2
  firebase_messaging: 11.1.0
  firebase_in_app_messaging: 0.5.0+13
  firebase_dynamic_links: 3.0.1
  firebase_auth: 3.2.0
  firebase_storage: 10.1.0
  cloud_firestore: 3.1.1

  # Orthers
  uuid: 3.0.5
  permission_handler: 8.3.0
  audioplayers: 0.20.0
  printing: 5.6.0
  url_launcher: 6.0.17
  pinput: 1.2.0
  camera: 0.9.4
  cupertino_icons: 1.0.4
  keyboard_dismisser: 2.0.0
  rxdart:
  provider: 6.0.1
  shared_preferences: 2.0.9
  flutter_screenutil: 2.3.1
  path_provider: 2.0.7
  image_picker: 0.8.4+4
  fl_chart: 0.40.2
  syncfusion_flutter_charts: 19.3.56
  sqflite: 2.0.0+4
  path: 1.8.0
  flutter_staggered_grid_view: 0.4.1
  keyboard_actions: 3.4.4
  modal_bottom_sheet: 2.0.0 # Present new widgets like that ios 13
  smooth_star_rating: 1.1.1
  pull_to_refresh: 2.0.0
  flutter_launcher_icons: 0.9.2
  qr_flutter: 4.0.0 # create qr
  device_info: 2.0.3
  cron: 0.4.0
  package_info: 2.0.2
  store_redirect: 2.0.0
  enum_to_string: 2.0.1
  timer_count_down: 2.2.0
  random_string: 2.3.1
  flutter_spinkit: 5.1.0 # Loading animation
  share: 2.0.4
  flutter_native_image: 0.0.6+1
  connectivity: 3.0.6
  showcaseview: 1.1.4
  flutter_datetime_picker: 1.5.0
  get: 4.5.1
  logger: 1.1.0
  dio: 4.0.4
  http: 0.13.4
  lottie: 1.2.1
  flutter_local_notifications: 9.1.4
  dartz: 0.10.0
  equatable: 2.0.3
  flutter_swipe_action_cell: 2.1.5
  sprintf: 6.0.0
  qr_code_scanner: 0.6.1
  flutter_speed_dial: 4.6.6
  carousel_slider: 4.0.0
  cached_network_image: 3.2.0
  scan: 1.5.0
  flutter_native_timezone: 2.0.0
  flash: 2.0.3

flutter doctor -v
[✓] Flutter (Channel stable, 2.5.3, on macOS 11.4 20F71 darwin-x64, locale en-VN)
    • Flutter version 2.5.3 at /Users/dhv/fvm/versions/2.5.3
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 18116933e7 (7 weeks ago), 2021-10-15 10:46:35 -0700
    • Engine revision d3ea636dc5
    • Dart version 2.14.4

[✓] Android toolchain - develop for Android devices (Android SDK version 32.0.0-rc1)
    • Android SDK at /Users/dhv/Library/Android/sdk
    • Platform android-31, build-tools 32.0.0-rc1
    • 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 at /Applications/Xcode.app/Contents/Developer
    • Xcode 13.0, Build version 13A233
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.62.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.28.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.4 20F71 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 94.0.4606.81

• No issues found!

The Flutter project does not control Play Store policies. Closing as this does not appear to be related to Flutter itself, but with your application's use of a restricted permission.

Permission in play store.
android.permission.ACCESS_NETWORK_STATE,
android.permission.CAMERA,
android.permission.INTERNET,
android.permission.READ_EXTERNAL_STORAGE,
android.permission.RECEIVE_BOOT_COMPLETED,
android.permission.SCHEDULE_EXACT_ALARM,
android.permission.USE_FULL_SCREEN_INTENT,
android.permission.VIBRATE,
android.permission.WAKE_LOCK,
com.google.android.c2dm.permission.RECEIVE,
com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE

authors: stuartmorgan vietdhfpt


text:
Roll recipes to start running from python 3

https://flutter-review.googlesource.com/c/recipes/+/23943
This was reverted last week due to some unrelated issues. Handing off to the next oncall to rollout and monitor

https://flutter-review.googlesource.com/c/recipes/+/23943 was landed. Keep monitoring.

Things seem clear. Closing.

authors: CaseyHillers keyonghan


text:
Enable DeviceLab arm64 ios tests as bringup: true

This PR enables passing arm64 tests (staging) in prod. Initially as bringup: true, they will be marked as blocking when validated.
Context:
https://flutter-review.googlesource.com/c/infra/+/26927 enabled m1 tests in staging.
https://chrome-internal-review.googlesource.com/c/infradata/config/+/4680019 brought up 4 m1/ios testbeds in prod.
These tests have been passing consistently in staging:
https://ci.chromium.org/p/flutter/builders/staging/Mac_arm64_staging hot_mode_dev_cycle_macos_target__benchmark
https://ci.chromium.org/p/flutter/builders/staging/Mac_arm64_staging flutter_gallery_ios__compile
https://ci.chromium.org/p/flutter/builders/staging/Mac_arm64_staging hello_world_ios__compile
https://ci.chromium.org/p/flutter/builders/staging/Mac_arm64_staging native_ui_tests_ios
https://ci.chromium.org/p/flutter/builders/staging/Mac_arm64_staging build_ios_framework_module_test
https://ci.chromium.org/p/flutter/builders/staging/Mac_arm64_staging run_release_test_macos
https://ci.chromium.org/p/flutter/builders/staging/Mac_arm64_staging ios_app_with_extensions_test
https://ci.chromium.org/p/flutter/builders/staging/Mac_arm64_staging ios_content_validation_test
https://ci.chromium.org/p/flutter/builders/staging/Mac_arm64_staging macos_chrome_dev_mode
Issue: https://github.com/flutter/flutter/issues/87508

A friendly ping.

source: gharchive/pull-request