text:
Problem using openSans Google Font in Firefox

I use the google_fonts plugin to provide my app with the OpenSans font.
In the firefox console, I see the following:
downloadable font: kern: Too large subtable (font-family: "OpenSans_300" style:normal weight:400 stretch:100 src index:0) source: (invalid URI)

@biancashouse
Can you provide flutter doctor -v and a complete minimal reproducible code sample ?
Also check out this issue from Mozilla Firefox itself for further reference. https://github.com/mozilla/addons/issues/233#issuecomment-620068728

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.

source: gharchive/issue

repo: flutter/flutter

license_type: permissive

license_source: github-api


text:
Flutter letters not the same size even if the fontSize is specified for each TextSpan element.

Unfortunately, this happens on my client's device, so no logs. Please let me know how I could be of help considering this fact.
What happens on his device:

What should happen (and is happening on 2 other devices and simulator):
Letters should have the same size if the same size is specified.
My code:
import 'package:baby_sleep_scheduler/theme/theme.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';

class ExpandableInfo extends StatefulWidget {
  final String label, main, further;
  final List<String> points;

  ExpandableInfo({
    @required this.label,
    this.main,
    this.points,
    this.further,
  });

  @override
  State<StatefulWidget> createState() {
    return _ExpandableInfoState();
  }
}

class _ExpandableInfoState extends State<ExpandableInfo> {
  List<InlineSpan> _children;

  void _expand() => _children = <InlineSpan>[
        TextSpan(
          text: widget.main,
          style: TextStyle(
            fontFamily: 'Oswald',
            color: CustomTheme.nightTheme ? Colors.white : Colors.black,
            fontSize: 14,
          ),
        ),
        TextSpan(
          text: '\n\n' + widget.further,
          style: TextStyle(
            fontFamily: 'Oswald',
            color: CustomTheme.nightTheme ? Colors.white : Colors.black,
            fontSize: 14,
          ),
        )
      ];

  @override
  void initState() {
    super.initState();
    _children = <InlineSpan>[
      TextSpan(
        text: widget.main,
        style: TextStyle(
          fontFamily: 'Oswald',
          fontSize: 14,
          color: CustomTheme.nightTheme ? Colors.white : Colors.black,
        ),
      ),
      if (widget.further != null)
        TextSpan(
          text: '\n\nSee more',
          style: const TextStyle(
            fontFamily: 'Oswald',
            color: Color(0xff9d8bc4),
            fontWeight: FontWeight.bold,
            fontSize: 14,
          ),
          recognizer: TapGestureRecognizer()
            ..onTap = () => setState(() => _expand()),
        ),
    ];
  }

  Key _key = UniqueKey();

  @override
  Widget build(BuildContext context) {
    return ExpansionTile(
      title: Text(
        widget.label,
        style: TextStyle(
          fontSize: 16,
          fontFamily: 'Oswald',
          fontWeight: FontWeight.w500,
          color: CustomTheme.nightTheme ? Colors.white : Colors.black,
        ),
      ),
      children: widget.points == null
          ? [
              Padding(
                key: _key,
                padding: const EdgeInsets.fromLTRB(16, 0, 16, 16),
                child: RichText(
                  text: TextSpan(
                    children: _children,
                    style: const TextStyle(
                      fontFamily: 'Oswald',
                      fontSize: 14,
                    ),
                  ),
                ),
              ),
            ]
          : [
              if (widget.main != null)
                SizedBox(
                  width: MediaQuery.of(context).size.width,
                  child: Padding(
                    padding: const EdgeInsets.only(left: 16, bottom: 12),
                    child: Text(
                      widget.main,
                      style: const TextStyle(
                        fontFamily: 'Oswald',
                        fontSize: 14,
                      ),
                    ),
                  ),
                ),
              for (int i = 0; i < widget.points.length; i++)
                Padding(
                  padding: const EdgeInsets.fromLTRB(16, 0, 16, 6),
                  child: DefaultTextStyle(
                    style: TextStyle(
                      fontFamily: 'Oswald',
                      fontSize: 14,
                      color:
                          CustomTheme.nightTheme ? Colors.white : Colors.black,
                    ),
                    child: Row(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        SizedBox(
                          width: 30,
                          child: Center(
                            child: Text(
                              '${i + 1}.',
                              style: const TextStyle(
                                fontSize: 14,
                              ),
                            ),
                          ),
                        ),
                        Flexible(
                          child: Text(
                            widget.points[i],
                            style: const TextStyle(
                              fontSize: 14,
                            ),
                          ),
                        ),
                      ],
                    ),
                  ),
                ),
              if (widget.further != null)
                Padding(
                  padding: const EdgeInsets.fromLTRB(16, 10, 16, 16),
                  child: Text(
                    widget.further,
                    style: const TextStyle(
                      fontFamily: 'Oswald',
                      fontSize: 14,
                    ),
                  ),
                ),
            ],
    );
  }
}

This issue happens on both stable as well as the latest master. A custom font is used.

Hi @ljmatan
Could you please provide your flutter doctor -v and the device details
Thank you

Hi mr. Tesser.
Phone model is Samsung Galaxy On8. Unfortunately, as the device is not mine, and the same issue does not replicate on my device, I'm unable to provide you with any logs.
Here's which version was used to build the app with however:
[✓] Flutter (Channel master, 1.27.0-9.0.pre.85, on Linux, locale en_US.UTF-8)
    • Flutter version 1.27.0-9.0.pre.85 at /home/user/Development/flutter
    • Framework revision 71b2b4d6e0 (7 days ago), 2021-02-25 00:01:01 -0500
    • Engine revision 867e51b762
    • Dart version 2.13.0 (build 2.13.0-73.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /home/user/Android/Sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /home/user/Documents/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

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

[✓] Android Studio (version 3.5)
    • Android Studio at /home/user/Documents/android-studio
    • Flutter plugin version 44.0.1
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build
      1.8.0_202-release-1483-b49-5587405)

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

[✓] Connected device (3 available)
    • M2006C3LVG (mobile)         • BA6H5LVWDAROW4V4 • android-arm    • Android
      10 (API 29)
    • sdk gphone x86 arm (mobile) • emulator-5554    • android-x86    • Android
      11 (API 30) (emulator)
    • Chrome (web)                • chrome           • web-javascript • Google
      Chrome 88.0.4324.182

• No issues found!

Hi @ljmatan
Here I created a minimal code sample with text included
I ran this sample on a Samsung device with Android 10 (Samsung M02s), can you notice any difference?

Can you get what Android versions your client is running? Is it possible run this code sample on that device?

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Material App',
      home: Home(),
    );
  }
}

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Material App Bar'),
      ),
      body: Center(
        child: SingleChildScrollView(
          child: Column(
            children: [
              ExpandableInfo(
                label: "Lorem Ipsum",
                main:
                    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae dui sed ipsum ornare ultricies. Maecenas enim dolor, finibus at mauris sed, aliquet gravida nulla. Etiam eget nunc accumsan, rutrum ligula ac, pulvinar quam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Proin a lacus at metus faucibus pretium quis sit amet metus. Donec sollicitudin sapien sit amet urna euismod interdum.",
                further:
                    "Etiam feugiat nec ante nec commodo. Sed hendrerit leo non mi placerat, imperdiet condimentum risus molestie. Sed id massa egestas, porta odio sit amet, pharetra nibh. Integer odio sapien, varius vel venenatis at, laoreet sit amet elit. Morbi porttitor eu est eu dignissim. Integer sit amet laoreet diam, nec molestie ligula. Donec mattis, turpis at scelerisque tincidunt, tellus sem feugiat quam, a mattis ligula metus tristique arcu. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum facilisis iaculis sem vel mollis.\nEtiam sed mattis risus. Nulla a nisi eget sapien facilisis sagittis ac in urna. Vestibulum eu nisl eget velit convallis bibendum efficitur vitae massa. Nullam porta a dolor ut mollis. Pellentesque in malesuada augue. Ut vel dolor non sem sodales commodo. Nunc nec dui rhoncus libero laoreet ullamcorper vel id magna. Donec dictum eros nec ipsum consequat efficitur. Cras scelerisque lacus et hendrerit imperdiet. Vestibulum tincidunt ligula quis tortor euismod consequat. Fusce porttitor, leo nec euismod blandit, ligula nibh dapibus ante, imperdiet laoreet ipsum justo nec purus. Cras viverra blandit lectus vitae ornare.",
              ),
              ExpandableInfo(
                label: "Donec interdum massa",
                main:
                    "quam, semper molestie arcu iaculis convallis. Nam posuere, leo a euismod pretium, odio lacus dapibus mi, in aliquam lacus lectus luctus sem. Praesent semper erat sodales nunc hendrerit, sit amet blandit libero auctor. Praesent gravida magna velit, ut hendrerit arcu tempus sed. Nullam maximus orci ac laoreet vehicula. Donec eu augue vel massa varius finibus. Nullam nisl mauris, rutrum ac placerat bibendum, volutpat quis purus. ",
                further:
                    "Sed eu nulla elementum lectus dapibus eleifend sed in orci. Aenean condimentum nunc lorem, sed tempus velit auctor eu. Donec porta massa non lacus ullamcorper placerat. In eleifend, purus vel tincidunt dapibus, tortor erat lobortis nisl, eget molestie metus massa quis odio. Donec a erat leo. Aenean eget varius risus. Nam pharetra nibh ac tempor lobortis. Aenean venenatis nisi sit amet augue faucibus, eget tempor ante viverra. \nSed lobortis euismod ipsum, sed ornare justo pellentesque vel. Sed vitae faucibus neque, ac egestas ante. Integer sodales sem felis, et lacinia nisi fermentum vel. Nam viverra lobortis ex in rhoncus. Sed vitae massa interdum, placerat mi eu, egestas urna. Proin magna lacus, facilisis at massa vitae, tempus pulvinar ex. Cras pellentesque, odio nec venenatis laoreet, mi justo sodales diam, et commodo lorem arcu in justo. Aenean rhoncus malesuada justo condimentum pellentesque. Ut molestie dolor quis sodales finibus. Morbi diam est, pellentesque quis mollis ac, luctus ut ipsum.",
              ),
            ],
          ),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add),
        onPressed: () {},
      ),
    );
  }
}

class ExpandableInfo extends StatefulWidget {
  final String label, main, further;
  final List<String> points;

  ExpandableInfo({
    @required this.label,
    this.main,
    this.points,
    this.further,
  });

  @override
  State<StatefulWidget> createState() {
    return _ExpandableInfoState();
  }
}

class _ExpandableInfoState extends State<ExpandableInfo> {
  List<InlineSpan> _children;

  void _expand() => _children = <InlineSpan>[
        TextSpan(
          text: widget.main,
          style: TextStyle(
            fontFamily: 'Oswald',
            color: Colors.black,
            fontSize: 14,
          ),
        ),
        TextSpan(
          text: '\n\n' + widget.further,
          style: TextStyle(
            fontFamily: 'Oswald',
            color: Colors.black,
            fontSize: 14,
          ),
        )
      ];

  @override
  void initState() {
    super.initState();
    _children = <InlineSpan>[
      TextSpan(
        text: widget.main,
        style: TextStyle(
          fontFamily: 'Oswald',
          fontSize: 14,
          color: Colors.black,
        ),
      ),
      if (widget.further != null)
        TextSpan(
          text: '\n\nSee more',
          style: const TextStyle(
            fontFamily: 'Oswald',
            color: Color(0xff9d8bc4),
            fontWeight: FontWeight.bold,
            fontSize: 14,
          ),
          recognizer: TapGestureRecognizer()
            ..onTap = () => setState(() => _expand()),
        ),
    ];
  }

  Key _key = UniqueKey();

  @override
  Widget build(BuildContext context) {
    return ExpansionTile(
      title: Text(
        widget.label,
        style: TextStyle(
          fontSize: 16,
          fontFamily: 'Oswald',
          fontWeight: FontWeight.w500,
          color: Colors.black,
        ),
      ),
      children: widget.points == null
          ? [
              Padding(
                key: _key,
                padding: const EdgeInsets.fromLTRB(16, 0, 16, 16),
                child: RichText(
                  text: TextSpan(
                    children: _children,
                    style: const TextStyle(
                      fontFamily: 'Oswald',
                      fontSize: 14,
                    ),
                  ),
                ),
              ),
            ]
          : [
              if (widget.main != null)
                SizedBox(
                  width: MediaQuery.of(context).size.width,
                  child: Padding(
                    padding: const EdgeInsets.only(left: 16, bottom: 12),
                    child: Text(
                      widget.main,
                      style: const TextStyle(
                        fontFamily: 'Oswald',
                        fontSize: 14,
                      ),
                    ),
                  ),
                ),
              for (int i = 0; i < widget.points.length; i++)
                Padding(
                  padding: const EdgeInsets.fromLTRB(16, 0, 16, 6),
                  child: DefaultTextStyle(
                    style: TextStyle(
                      fontFamily: 'Oswald',
                      fontSize: 14,
                      color: Colors.black,
                    ),
                    child: Row(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        SizedBox(
                          width: 30,
                          child: Center(
                            child: Text(
                              '${i + 1}.',
                              style: const TextStyle(
                                fontSize: 14,
                              ),
                            ),
                          ),
                        ),
                        Flexible(
                          child: Text(
                            widget.points[i],
                            style: const TextStyle(
                              fontSize: 14,
                            ),
                          ),
                        ),
                      ],
                    ),
                  ),
                ),
              if (widget.further != null)
                Padding(
                  padding: const EdgeInsets.fromLTRB(16, 10, 16, 16),
                  child: Text(
                    widget.further,
                    style: const TextStyle(
                      fontFamily: 'Oswald',
                      fontSize: 14,
                    ),
                  ),
                ),
            ],
    );
  }
}

flutter doctor -v
[✓] Flutter (Channel master, 2.1.0-11.0.pre.97, on macOS 11.2.2 20D80 darwin-x64, locale en-GB)
    • Flutter version 2.1.0-11.0.pre.97 at /Users/tahatesser/Code/flutter_master
    • Framework revision c14c8d8177 (3 hours ago), 2021-03-03 21:40:34 -0800
    • Engine revision 72bbc5d92c
    • Dart version 2.13.0 (build 2.13.0-93.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Volumes/Extreme/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Volumes/Extreme/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 /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.10.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-6915495)

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

[✓] Connected device (5 available)
    • SM M025F (mobile)    • R9ZR205XX0A                          • android-arm    • Android 10 (API 29)
    • Taha’s iPad (mobile) • 00008020-000255113EE8402E            • ios            • iOS 14.4
    • iPhone 12 (mobile)   • BD94A45F-A994-4FC3-BAD9-448D8D2E0F1B • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
    • macOS (desktop)      • macos                                • darwin-x64     • macOS 11.2.2 20D80
      darwin-x64
    • Chrome (web)         • chrome                               • web-javascript • Google Chrome
      88.0.4324.192

• No issues found!

Thank you

Hi @TahaTesser
Can you clarify what exactly do you mean when you ask me can I notice any difference? I sure hope both of us can if you're referring to the screenshots.
I'm afraid my client is a a very busy man and he would not be able to test the example. He uses API 29.
I can confirm that this doesn't happen with my API 28 Samsung and API 29 Xiaomi device, as well as with an emulator.
Could #73214 and this one be related due to the custom font?

Hi @ljmatan
I cannot big notice a difference when running the code sample I created with sample text. Tried again with the exact font running Samsung device with API 29

I was hoping you can somehow test the code sample I provided

flutter doctor -v
[✓] Flutter (Channel stable, 2.0.1, on macOS 11.2.2 20D80 darwin-x64, locale
    en-GB)
    • Flutter version 2.0.1 at /Users/tahatesser/Code/flutter_stable
    • Framework revision c5a4b4029c (14 hours ago), 2021-03-04 09:47:48 -0800
    • Engine revision 40441def69
    • Dart version 2.12.0

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Volumes/Extreme/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Volumes/Extreme/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 /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.10.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-6915495)

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

[✓] Connected device (3 available)
    • SM M025F (mobile) • R9ZR205XX0A • android-arm    • Android 10 (API 29)
    • macOS (desktop)   • macos       • darwin-x64     • macOS 11.2.2 20D80
      darwin-x64
    • Chrome (web)      • chrome      • web-javascript • Google Chrome
      88.0.4324.192

• No issues found!

Can you please provide sample text as in your screenshot for direct comparison? You can edit my code sample add the same text
Thank you

Hi @ljmatan
I have looked at your project and extracted the code that is necessary and minimal to reproduce the issue. This seems to b related to Samsung

Samsung M02s
S10
K20 Pro

code sample
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: Home(),
    );
  }
}

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Material App Bar'),
      ),
      body: Center(
        child: Container(
          child: Column(
            children: [
              Semantics(header: true, child: Text('Hello World')),
              Semantics(header: true, child: Text('Hello World')),
              Text('Hello World'),
              Semantics(header: true, child: Text('Hello World')),
              Text('Hello World'),
              Semantics(header: true, child: Text('Hello World')),
              Semantics(header: true, child: Text('Hello World')),
              Text('Hello World'),
              Semantics(header: true, child: Text('Hello World')),
            ],
          ),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add),
        onPressed: () {},
      ),
    );
  }
}

flutter doctor -v
[✓] Flutter (Channel stable, 2.0.1, on macOS 11.2.3 20D91 darwin-x64, locale
    en-GB)
    • Flutter version 2.0.1 at /Users/tahatesser/Code/flutter_stable
    • Framework revision c5a4b4029c (7 days ago), 2021-03-04 09:47:48 -0800
    • Engine revision 40441def69
    • Dart version 2.12.0

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Volumes/Extreme/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Volumes/Extreme/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 /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.10.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-6915495)

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

[✓] Connected device (3 available)
    • SM M025F (mobile) • R9ZR205XX0A • android-arm    • Android 10 (API 29)
    • macOS (desktop)   • macos       • darwin-x64     • macOS 11.2.3 20D91
      darwin-x64
    • Chrome (web)      • chrome      • web-javascript • Google Chrome
      89.0.4389.82

• No issues found!

Thanks for filing  the issue!

authors: TahaTesser ljmatan


text:
Widget for Performant Rendering of Static Pictures

An oft-made suggestion to quickly improve per frame rendering performance of widgets that specify their contents using complex pictures is to first render them to a texture and use that texture as the contents instead. A widget that makes this recommendation easy to adopt is desirable.
In Flutter, pictures usually become complex to render per frame when they involve a lot of render target switches, have too many draw calls, require complex fragment shaders, or necessitate operations like render buffer readbacks. On the other hand, once an image has been created, it requires no such operations to render.
Such complex pictures can be constructed in code but are usually generated from SVGs or from intermediate assets from tools (like After Effects) that assume a post production step.
The inclusion of many such pictures in a scene is detrimental to per frame performance. A widget very similar to the Image widget that takes a picture and converts it to an image before rendering that same image each frame in place of the picture works around these performance issues. This will not work for cases where each picture is one frame in an animation. This widget will also not be resilient to large changes in scale of the displayed picture. But, for performant rendering of static complex pictures at a specific resolution, such a widget would be a great fit and formalize the performance guidance given to numerous users already.

cc @goderbauer

Another idea is that such a widget could automatically background the rendering and render a loading indicator until it is ready, keeping the app responsive in the meantime.

authors: chinmaygarde flar


text:
How can OpenContainer not open a new page?

Use case
I'm gonna try OpenContainer as my dialog animation. I like the animation style that transition from initial container position to final container position tha the OpenContainer shows like the Hero animation does.
However, in my cognition, it can only transforms my little container to a full view page, as was mentioned as the link. https://stackoverflow.com/questions/62400397/opencontainer-flutter-how-to-set-size-of-open-container-default-it-is-opening
Even if my openBuilder returns an AlertDialog,  when I open the dialog,  the content in the original scene is gone. OpenContainer opens a new page.
As the gif below shows, when I click on the initial Container, the transition animation is correct and what I want to do.
However, when the animation ends, former content is gone. The dialog shows on a new page, not on the original page.

Proposal
What I would like to achieve is as the gif shows with OpenContainer.

Can I use OpenContainer to achieve the animation transition I need?
Or is there any other way to achieve the animation I need to click on the container to open the animation box? Just like the way the box from the former position to later postion.

PS D:\> flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.2.1, on Microsoft Windows [Version 10.0.19041.1052], locale zh-CN)
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.

[✓] Chrome - develop for the web
[✓] Visual Studio - develop for Windows (Visual Studio Community 2019 16.8.3)
[!] Android Studio (not installed)
[✓] VS Code, 64-bit edition (version 1.56.2)
[✓] Connected device (3 available)

import 'package:animations/animations.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(
    MaterialApp(
      home: OpenContainerTransformDemo(),
    ),
  );
}

class OpenContainerTransformDemo extends StatefulWidget {
  const OpenContainerTransformDemo({Key? key}) : super(key: key);
  @override
  _OpenContainerTransformDemoState createState() {
    return _OpenContainerTransformDemoState();
  }
}

class _OpenContainerTransformDemoState
    extends State<OpenContainerTransformDemo> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Container transform'),
      ),
      body: OpenContainer<bool>(
        transitionDuration: Duration(milliseconds: 1000),
        openColor: Colors.transparent,
        closedColor: Colors.transparent,
        transitionType: ContainerTransitionType.fade,
        // openBuilder: (BuildContext context, VoidCallback _) {
        //   return const _DetailsPage();
        // },
        openBuilder: (BuildContext context, VoidCallback _) {
          return AlertDialog(
            title: Text('You are my hero.'),
            content: Container(
              child: Hero(
                tag: 'developer-hero',
                child: Container(
                  // height: 200.0,
                  // width: 200.0,
                  child: FlutterLogo(),
                ),
              ),
            ),
            actions: <Widget>[
              MaterialButton(
                child: Text('RAD!'),
                onPressed: Navigator.of(context).pop,
              ),
            ],
          );
        },
        tappable: false,
        closedBuilder: (BuildContext _, VoidCallback openContainer) {
          return _ExampleCard(openContainer: openContainer);
        },
      ),
    );
  }
}

class _ExampleCard extends StatelessWidget {
  const _ExampleCard({required this.openContainer});

  final VoidCallback openContainer;

  @override
  Widget build(BuildContext context) {
    return SizedBox(
      height: 300,
      width: 300,
      child: InkWell(
        onTap: openContainer,
        child: FlutterLogo(),
      ),
    );
  }
}

class _DetailsPage extends StatelessWidget {
  const _DetailsPage({this.includeMarkAsDoneButton = true});

  final bool includeMarkAsDoneButton;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: FlutterLogo(),
    );
  }
}

@tsuiwade
Are you looking for solutions or proposing a feature / functionality to solve your issue ?
What exactly are you trying to achieve can you elaborate on that using a code sample, issue you are facing along with what would you like to achieve using OpenContainer ?
Thanks.

@darshankawar
I am sorry that the previous question could not be expressed clearly. Now the question has been updated, please take the time to answer it for me. Thanks!

I have tried another method Hero dialog transition. Can I add the PositionedTransition to set the path?
However, as the gif shows, when I close the dialog, the closed content will become the biggest, then got smaller.

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    home: HomePage(),
  ));
}

class HeroDialogRoute<T> extends PageRoute<T> {
  HeroDialogRoute({required this.builder}) : super();

  WidgetBuilder builder;

  @override
  bool get opaque => false;
  @override
  bool get barrierDismissible => true;
  @override
  Duration get transitionDuration => const Duration(milliseconds: 600);
  @override
  bool get maintainState => true;
  @override
  Color get barrierColor => Colors.black54;
  @override
  String get barrierLabel => "I don't know how to use it.";

  @override
  Widget buildTransitions(BuildContext context, Animation<double> animation,
      Animation<double> secondaryAnimation, Widget child) {
    return FadeTransition(
        opacity: CurvedAnimation(parent: animation, curve: Curves.easeOut),
        child: child);
  }

  @override
  Widget buildPage(BuildContext context, Animation<double> animation,
      Animation<double> secondaryAnimation) {
    return builder(context);
  }
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Hero demo'),
      ),
      body: Align(
        alignment: FractionalOffset.topLeft,
        child: Card(
          child: InkWell(
            onTap: () {
              Navigator.push(
                context,
                HeroDialogRoute(
                  builder: (BuildContext context) {
                    return Hero(
                      tag: 'developer-hero',
                      child: AlertDialog(
                        title: Text('You are my hero.'),
                        content: Container(
                          child: Container(
                            height: 200.0,
                            width: 200.0,
                            child: FlutterLogo(),
                          ),
                        ),
                      ),
                    );
                  },
                ),
              );
            },
            child: Hero(
              tag: 'developer-hero',
              child: Container(
                width: 300.0,
                height: 300.0,
                child: FlutterLogo(),
              ),
            ),
          ),
        ),
      ),
    );
  }
}

@darshankawar
Thanks for the details and code sample. I ran it and see below:
https://user-images.githubusercontent.com/67046386/124080182-b3534e80-da67-11eb-9019-8c3f60500c8c.mov
What exactly is the issue are we talking here ?

@darshankawar  Thank you!
Yes, I have provided two pieces of code, and you are running my first piece of code.
I just need the animation form presented by this code, which expands from the original container.
However, the dialog box opened is on a new page, and the original page is gone.  Just as the background of the previous page was white, then it became black.
What I want to ask is whether the dialog box can be displayed on the original page in the animation form I just mentioned. As shown in the gif below.

Thanks!

@tsuiwade
Thanks for the details. OpenContainer actually uses PageRoute under the hood and hence you see it opening the content in new page. I think you can ask this question on StackOverflow to see if there are any solutions to make the page not open in new route.

authors: darshankawar tsuiwade


text:
Unable to build an UWP app with Flutter 2.5.0-1.0-pre

Hello,
I have exactly the same issue as #82967, and it seems it's not fixed.
Here is the error log :
flutter run -d winuwp
Launching lib\main.dart on Windows (UWP) in debug mode...
LINK : warning LNK4075: ' /INCREMENTAL' ignoré à cause de la spécification '/OPT:ICF' [C:\Users\anima\StudioProjects\untitled\build\winuwp\runner_uwp\app.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VisualStudio\v16.0\AppxPackage\Microsoft.AppXPackage.Targets(3327,5): warning : APPX4
001: Build property AppxBundlePlatforms is not explicitly set and is calculated based on currently building architecture. Use 'Create App Package' wizard or edit pro
ject file to set it. [C:\Users\anima\StudioProjects\untitled\build\winuwp\runner_uwp\app.vcxproj]
Building Windows UWP application...
Failed to install file:///C:/Users/anima/StudioProjects/untitled/build/winuwp/runner_uwp/AppPackages/app/app_1.1.0.0_Debug_Test/app_1.1.0.0_x64_Debug.msixbundle
Failed to install app package
Error launching application on Windows (UWP).

Here is my flutter doctor:
>flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel dev, 2.5.0-1.0.pre, on Microsoft Windows [version 10.0.19042.1151], locale fr-FR)
[√] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
[√] Chrome - develop for the web
[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.10.4)
[√] Android Studio (version 2020.3)
[√] VS Code (version 1.58.2)
[√] Connected device (5 available)

What should I do to fix this?

I have exactly the same issue as #82967

I'm not sure how you reached this conclusion, but your error doesn't appear to be at all related to that one. That was a specific compile failure which doesn't show up anywhere in your log. Your issue is:

Failed to install file:///C:/Users/anima/StudioProjects/untitled/build/winuwp/runner_uwp/AppPackages/app/app_1.1.0.0_Debug_Test/app_1.1.0.0_x64_Debug.msixbundle
Failed to install app package

Hi @g123k
Currently, when we rerun the app, we run to this issue
If you uninstall uwp app from Start, it should run again
This is a duplicate of https://github.com/flutter/flutter/issues/86996

authors: TahaTesser g123k stuartmorgan


text:
Can't gather performance timeline using flutter drive

I am trying to write a test that uses watchPerformance to write the correct build/integration_response_data.json file for reading in chrome://tracing.
The test passes when using flutter test integration_test/app_test.dart, but not when I run flutter drive to specify a custom integrationDriver from the integration_test_driver package.
I also wonder if it's possible to specify the custom integrationDriver using the flutter test command, not flutter drive, since this seems to be the new way to run integration_test tests.
cc: @dnfield @csells
Steps to Reproduce

Create the scrolling app from the Handle scrolling cookbook article:

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp(
    items: List<String>.generate(10000, (i) => "Item $i"),
  ));
}

class MyApp extends StatelessWidget {
  final List<String> items;

  const MyApp({Key? key, required this.items}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    const title = 'Long List';

    return MaterialApp(
      title: title,
      home: Scaffold(
        appBar: AppBar(
          title: const Text(title),
        ),
        body: ListView.builder(
          // Add a key to the ListView. This makes it possible to
          // find the list and scroll through it in the tests.
          key: const Key('long_list'),
          itemCount: items.length,
          itemBuilder: (context, index) {
            return ListTile(
              title: Text(
                items[index],
                // Add a key to the Text widget for each item. This makes
                // it possible to look for a particular item in the list
                // and verify that the text is correct
                key: Key('item_${index}_text'),
              ),
            );
          },
        ),
      ),
    );
  }
}

Create a file, integration_test/app_test.dart:

import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';

import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';

// The application under test.
import 'package:integration_test_experiments/main.dart';

void main() {
  final binding = IntegrationTestWidgetsFlutterBinding.ensureInitialized()
      as IntegrationTestWidgetsFlutterBinding;

  testWidgets('Scroll to item 50', (WidgetTester tester) async {
    // Build our app and trigger a frame.
    await tester.pumpWidget(MyApp(
      items: List<String>.generate(10000, (i) => "Item $i"),
    ));

    final listFinder = find.byType(Scrollable);
    final itemFinder = find.byKey(const ValueKey('item_50_text'));

    await binding.watchPerformance(
      () async {
        // Scroll until the item to be found appears.
        await tester.scrollUntilVisible(
          itemFinder,
          500.0,
          scrollable: listFinder,
        );
      },
      reportKey: 'scrolling_summary',
    );

    // Verify that the item contains the correct text.
    expect(itemFinder, findsOneWidget);
  });
}

Add a file, test_driver/perf_driver.dart that writes the response data in separate timeline files (https://github.com/flutter/flutter/pull/88604):

import 'package:integration_test/integration_test_driver.dart';

Future<void> main() {
  return integrationDriver(
    responseDataCallback: (data) async {
      if (data != null) {
        for (var entry in data.entries) {
          print('Writing ${entry.key} to the disk.');
          await writeResponseData(
            entry.value as Map<String, dynamic>,
            testOutputFilename: entry.key,
          );
        }
      }
    },
  );
}

Run the integration test using the perf_driver.dart driver configuration:
flutter drive \
  --driver=test_driver/perf_driver.dart \
  --target=integration_test/app_test.dart \
  -d <DEVICE_ID>

Observe exception:
flutter drive \
  --driver=test_driver/integration_driver.dart \
  --target=integration_test/app_test.dart -d 13181FDD400226
Running "flutter pub get" in integration_test_experiments...        808ms
Running Gradle task 'assembleDebug'...                              4.5s
✓  Built build/app/outputs/flutter-apk/app-debug.apk.
Installing build/app/outputs/flutter-apk/app.apk...                 3.6s
VMServiceFlutterDriver: Connecting to Flutter application at http://127.0.0.1:60052/Z7lQhlgRbYw=/
VMServiceFlutterDriver: Isolate found with number: 3018735296192043
VMServiceFlutterDriver: Isolate is paused at start.
VMServiceFlutterDriver: Attempting to resume isolate
I/flutter (16092): 00:00 +0: Scroll to item 50
VMServiceFlutterDriver: Connected to Flutter application.
I/flutter (16092): ══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
I/flutter (16092): The following SocketException was thrown running a test:
I/flutter (16092): OS Error: Connection refused, errno = 111, address = localhost, port = 41680
I/flutter (16092):
I/flutter (16092): When the exception was thrown, this was the stack:
I/flutter (16092): #0      _NativeSocket.startConnect (dart:io-patch/socket_patch.dart:677:35)
I/flutter (16092): #1      _RawSocket.startConnect (dart:io-patch/socket_patch.dart:1680:26)
I/flutter (16092): #2      RawSocket.startConnect (dart:io-patch/socket_patch.dart:27:23)
I/flutter (16092): #3      Socket._startConnect (dart:io-patch/socket_patch.dart:1891:22)
I/flutter (16092): #4      Socket.startConnect (dart:io/socket.dart:738:21)
I/flutter (16092): #5      _ConnectionTarget.connect (dart:_http/http_impl.dart:2439:18)
I/flutter (16092): #6      _HttpClient._getConnection.connect (dart:_http/http_impl.dart:2805:12)
I/flutter (16092): #7      _HttpClient._getConnection (dart:_http/http_impl.dart:2810:12)
I/flutter (16092): #8      _HttpClient._openUrl (dart:_http/http_impl.dart:2694:12)
I/flutter (16092): #9      _HttpClient.openUrl (dart:_http/http_impl.dart:2568:7)
I/flutter (16092): #10     _WebSocketImpl.connect (dart:_http/websocket_impl.dart:1027:24)
I/flutter (16092): #11     WebSocket.connect (dart:_http/websocket.dart:379:22)
I/flutter (16092): #12     vmServiceConnectUri (package:vm_service/vm_service_io.dart:32:44)
I/flutter (16092): #13     IntegrationTestWidgetsFlutterBinding.enableTimeline
(package:integration_test/integration_test.dart:244:26)
I/flutter (16092): <asynchronous suspension>
I/flutter (16092): #14     IntegrationTestWidgetsFlutterBinding.traceTimeline
(package:integration_test/integration_test.dart:269:5)
I/flutter (16092): <asynchronous suspension>
I/flutter (16092): #15     IntegrationTestWidgetsFlutterBinding._runAndGetGCInfo
(package:integration_test/integration_test.dart:321:34)
I/flutter (16092): <asynchronous suspension>
I/flutter (16092): #16     IntegrationTestWidgetsFlutterBinding.watchPerformance
(package:integration_test/integration_test.dart:376:43)
I/flutter (16092): <asynchronous suspension>
I/flutter (16092): #17     main.<anonymous closure>
(file:///Users/ryjohn/code/github/johnpryan/integration_test_experiments/integration_test/app_test.dart:23:5)
I/flutter (16092): <asynchronous suspension>
I/flutter (16092): #18     testWidgets.<anonymous closure>.<anonymous closure>
(package:flutter_test/src/widget_tester.dart:176:15)
I/flutter (16092): <asynchronous suspension>
I/flutter (16092): #19     TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:817:5)
I/flutter (16092): <asynchronous suspension>
I/flutter (16092):
I/flutter (16092): The test description was:
I/flutter (16092):   Scroll to item 50
I/flutter (16092): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (16092): 00:03 +0: Scroll to item 50 [E]
I/flutter (16092):   Test failed. See exception logs above.
I/flutter (16092):   The test description was: Scroll to item 50
I/flutter (16092):
I/flutter (16092): Consider enabling the flag chain-stack-traces to receive more detailed exceptions.
I/flutter (16092): For example, 'dart test --chain-stack-traces'.
I/flutter (16092): 00:03 +0 -1: (tearDownAll)
I/flutter (16092): 00:03 +1 -1: Some tests failed.
Failure Details:
Failure in method: Scroll to item 50
══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞═════════════════
The following SocketException was thrown running a test:
OS Error: Connection refused, errno = 111, address = localhost,
port = 41680

When the exception was thrown, this was the stack:
#0      _NativeSocket.startConnect (dart:io-patch/socket_patch.dart:677:35)
#1      _RawSocket.startConnect (dart:io-patch/socket_patch.dart:1680:26)
#2      RawSocket.startConnect (dart:io-patch/socket_patch.dart:27:23)
#3      Socket._startConnect (dart:io-patch/socket_patch.dart:1891:22)
#4      Socket.startConnect (dart:io/socket.dart:738:21)
#5      _ConnectionTarget.connect (dart:_http/http_impl.dart:2439:18)
#6      _HttpClient._getConnection.connect (dart:_http/http_impl.dart:2805:12)
#7      _HttpClient._getConnection (dart:_http/http_impl.dart:2810:12)
#8      _HttpClient._openUrl (dart:_http/http_impl.dart:2694:12)
#9      _HttpClient.openUrl (dart:_http/http_impl.dart:2568:7)
#10     _WebSocketImpl.connect (dart:_http/websocket_impl.dart:1027:24)
#11     WebSocket.connect (dart:_http/websocket.dart:379:22)
#12     vmServiceConnectUri (package:vm_service/vm_service_io.dart:32:44)
#13     IntegrationTestWidgetsFlutterBinding.enableTimeline (package:integration_test/integration_test.dart:244:26)
<asynchronous suspension>
#14     IntegrationTestWidgetsFlutterBinding.traceTimeline (package:integration_test/integration_test.dart:269:5)
<asynchronous suspension>
#15     IntegrationTestWidgetsFlutterBinding._runAndGetGCInfo (package:integration_test/integration_test.dart:321:34)
<asynchronous suspension>
#16     IntegrationTestWidgetsFlutterBinding.watchPerformance (package:integration_test/integration_test.dart:376:43)
<asynchronous suspension>
#17     main.<anonymous closure> (file:///Users/ryjohn/code/github/johnpryan/integration_test_experiments/integration_test/app_test.dart:23:5)
<asynchronous suspension>
#18     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:176:15)
<asynchronous suspension>
#19     TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:817:5)
<asynchronous suspension>

The test description was:
  Scroll to item 50
═════════════════════════════════════════════════════════════════

end of failure 1

If you want to use the driver protocol, you have to have a call to enableFlutterDriverExtension in the application code running on the device.  It seems like that might be missing and causing a problem?
Although I wouldn't expect the socket error becuase of that. @jiahaog might have some idea here too.

This looks like an issue with the DDS and Flutter Tools integration, cc @bkonyi
The call to developer.Service.getInfo().serverUri in package:integration_test is returning the VM service that may not be accessible by devices that do not share the same network interface as the host (like on Android).
https://github.com/flutter/flutter/blob/a133306791fef464dcccd8e5417a0841fff35f3f/packages/integration_test/lib/integration_test.dart#L245
It can be reproduced with the following minimal example (below shows Android):
import 'dart:developer' as developer;

void main() async {
  await Future.delayed(Duration(seconds: 15));

  final vmServiceUri = await developer.Service.getInfo().serverUri;
  print('Service protocol info is $vmServiceUri');
}

In one terminal:
$ flutter run

...

Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h List all available interactive commands.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).

💪 Running with sound null safety 💪

An Observatory debugger and profiler on Pixel 4a is available at: http://127.0.0.1:59997/0PsllF9SAC0=/
I/flutter (21968): Service protocol info is http://127.0.0.1:59997/0PsllF9SAC0=/

And in another terminal
$ adb logcat | grep -e Observatory -e 'Service protocol info'

09-21 13:44:55.286 21968 22013 I flutter : Observatory listening on http://127.0.0.1:40505/iGx-Iik9aKs=/
09-21 13:45:10.353 21968 21994 I flutter : Service protocol info is http://127.0.0.1:59997/0PsllF9SAC0=/

http://127.0.0.1:40505/iGx-Iik9aKs=/ is the uri of the vm service, on the device
http://127.0.0.1:59997/0PsllF9SAC0=/ is the uri of the vm service, accessible from the host (after forwarding by adb forward and dds to the above)

The Service protocol info is http://127.0.0.1:59997/0PsllF9SAC0=/ printed above on the device via the logcat, is incorrect since this is not accessible by default from the device. http://127.0.0.1:40505/iGx-Iik9aKs=/ should be returned instead from developer.Service.getInfo().serverUri.
This is because when DDS starts, it sends a _yieldControlToDDS vm service call, which changes the value returned by developer.Service.getInfo().serverUri. Currently, this passes the URI of the vm service from the perspective of the host, which is incorrect when it is accessed via developer.Service.getInfo().serverUri for network calls originating from the device.

On a less related note, there is no need to use enableFlutterDriverExtension here, since the driver protocol isn't used to access the timeline in the test above. Integration tests automatically register a service extension that is sufficient for flutter drive to collect results with the IntegrationTestDriver.

logs
Running Gradle task 'assembleDebug'...                             21.2s
✓  Built build\app\outputs\flutter-apk\app-debug.apk.
Installing build\app\outputs\flutter-apk\app.apk...                 3.1s
W/DisplayEventDispatcher(21304): dispatcher 0xb400007c5bbf3610 ~ ignoring unknown event type 0x6d746f6e
W/DisplayEventDispatcher(21304): dispatcher 0xb400007c0bbd52d0 ~ ignoring unknown event type 0x6d746f6e
VMServiceFlutterDriver: Connecting to Flutter application at http://127.0.0.1:63813/Ox-Md4v26Jw=/
VMServiceFlutterDriver: Isolate found with number: 1371214840984515
VMServiceFlutterDriver: Isolate is paused at start.
VMServiceFlutterDriver: Attempting to resume isolate
I/flutter (21304): 00:00 +0: Scroll to item 50
VMServiceFlutterDriver: Connected to Flutter application.
D/ViewRootImpl[MainActivity](21304): windowFocusChanged hasFocus=false inTouchMode=true
D/OpScreenModeManager(21304): setRefreshRate parent io.flutter.embedding.android.FlutterView{3dd8fe5 VFED.....
........ 0,0-1080,2355 #1} parent width 1080 parent height 2355 mRatio 1.2
D/OpScreenModeManager(21304): setRefreshRate view io.flutter.embedding.android.FlutterSurfaceView{7e07a29
V.E...... ........ 0,0-1080,2355} viewRate 1 width 1080 height 2355
D/OpScreenModeManager(21304): setRefreshRate parent io.flutter.embedding.android.FlutterView{3dd8fe5 VFED.....
......ID 0,0-1080,2400 #1} parent width 1080 parent height 2400 mRatio 1.2
D/OpScreenModeManager(21304): setRefreshRate view io.flutter.embedding.android.FlutterSurfaceView{7e07a29
V.E...... ......ID 0,0-1080,2400} viewRate 1 width 1080 height 2400
E/.example.triag(21304): Invalid ID 0x00000001.
D/OpScreenModeManager(21304): setRefreshRate parent io.flutter.embedding.android.FlutterView{3dd8fe5 VFED.....
........ 0,0-1080,2400 #1} parent width 1080 parent height 2400 mRatio 1.2
D/OpScreenModeManager(21304): setRefreshRate view io.flutter.embedding.android.FlutterSurfaceView{7e07a29
V.E...... ........ 0,0-1080,2400} viewRate 1 width 1080 height 2400
I/flutter (21304): ══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK
╞════════════════════════════════════════════════════
I/flutter (21304): The following SocketException was thrown running a test:
I/flutter (21304): OS Error: Connection refused, errno = 111, address = localhost, port = 41716
I/flutter (21304):
I/flutter (21304): When the exception was thrown, this was the stack:
I/flutter (21304): #0      _NativeSocket.startConnect (dart:io-patch/socket_patch.dart:681:35)
I/flutter (21304): #1      _RawSocket.startConnect (dart:io-patch/socket_patch.dart:1704:26)
I/flutter (21304): #2      RawSocket.startConnect (dart:io-patch/socket_patch.dart:27:23)
I/flutter (21304): #3      Socket._startConnect (dart:io-patch/socket_patch.dart:1915:22)
I/flutter (21304): #4      Socket.startConnect (dart:io/socket.dart:738:21)
I/flutter (21304): #5      _ConnectionTarget.connect (dart:_http/http_impl.dart:2440:18)
I/flutter (21304): #6      _HttpClient._getConnection.connect (dart:_http/http_impl.dart:2806:12)
I/flutter (21304): #7      _HttpClient._getConnection (dart:_http/http_impl.dart:2811:12)
I/flutter (21304): #8      _HttpClient._openUrl (dart:_http/http_impl.dart:2695:12)
I/flutter (21304): #9      _HttpClient.openUrl (dart:_http/http_impl.dart:2569:7)
I/flutter (21304): #10     _WebSocketImpl.connect (dart:_http/websocket_impl.dart:1027:42)
I/flutter (21304): #11     WebSocket.connect (dart:_http/websocket.dart:380:22)
I/flutter (21304): #12     vmServiceConnectUri (package:vm_service/vm_service_io.dart:32:44)
I/flutter (21304): #13     IntegrationTestWidgetsFlutterBinding.enableTimeline
(package:integration_test/integration_test.dart:247:32)
I/flutter (21304): <asynchronous suspension>
I/flutter (21304): #14     IntegrationTestWidgetsFlutterBinding.traceTimeline
(package:integration_test/integration_test.dart:272:5)
I/flutter (21304): <asynchronous suspension>
I/flutter (21304): #15     IntegrationTestWidgetsFlutterBinding._runAndGetGCInfo
(package:integration_test/integration_test.dart:347:34)
I/flutter (21304): <asynchronous suspension>
I/flutter (21304): #16     IntegrationTestWidgetsFlutterBinding.watchPerformance
(package:integration_test/integration_test.dart:402:43)
I/flutter (21304): <asynchronous suspension>
I/flutter (21304): #17     main.<anonymous closure>
(file:///C:/Users/Taha/StudioProjects/triage/integration_test/app_test.dart:23:5)
I/flutter (21304): <asynchronous suspension>
I/flutter (21304): #18     testWidgets.<anonymous closure>.<anonymous closure>
(package:flutter_test/src/widget_tester.dart:170:15)
I/flutter (21304): <asynchronous suspension>
I/flutter (21304): #19     TestWidgetsFlutterBinding._runTestBody
(package:flutter_test/src/binding.dart:803:5)
I/flutter (21304): <asynchronous suspension>
I/flutter (21304):
I/flutter (21304): The test description was:
I/flutter (21304):   Scroll to item 50
I/flutter (21304):
════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (21304): 00:04 +0: Scroll to item 50 [E]
I/flutter (21304):   Test failed. See exception logs above.
I/flutter (21304):   The test description was: Scroll to item 50
I/flutter (21304):
I/flutter (21304): Consider enabling the flag chain-stack-traces to receive more detailed exceptions.
I/flutter (21304): For example, 'dart test --chain-stack-traces'.
I/flutter (21304): 00:04 +0 -1: (tearDownAll)
I/flutter (21304): 00:04 +1 -1: Some tests failed.
Failure Details:
Failure in method: Scroll to item 50
══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞═════════════════
The following SocketException was thrown running a test:
OS Error: Connection refused, errno = 111, address = localhost,
port = 41716

When the exception was thrown, this was the stack:
#0      _NativeSocket.startConnect (dart:io-patch/socket_patch.dart:681:35)
#1      _RawSocket.startConnect (dart:io-patch/socket_patch.dart:1704:26)
#2      RawSocket.startConnect (dart:io-patch/socket_patch.dart:27:23)
#3      Socket._startConnect (dart:io-patch/socket_patch.dart:1915:22)
#4      Socket.startConnect (dart:io/socket.dart:738:21)
#5      _ConnectionTarget.connect (dart:_http/http_impl.dart:2440:18)
#6      _HttpClient._getConnection.connect (dart:_http/http_impl.dart:2806:12)
#7      _HttpClient._getConnection (dart:_http/http_impl.dart:2811:12)
#8      _HttpClient._openUrl (dart:_http/http_impl.dart:2695:12)
#9      _HttpClient.openUrl (dart:_http/http_impl.dart:2569:7)
#10     _WebSocketImpl.connect (dart:_http/websocket_impl.dart:1027:42)
#11     WebSocket.connect (dart:_http/websocket.dart:380:22)
#12     vmServiceConnectUri (package:vm_service/vm_service_io.dart:32:44)
#13     IntegrationTestWidgetsFlutterBinding.enableTimeline (package:integration_test/integration_test.dart:247:32)
<asynchronous suspension>
#14     IntegrationTestWidgetsFlutterBinding.traceTimeline (package:integration_test/integration_test.dart:272:5)
<asynchronous suspension>
#15     IntegrationTestWidgetsFlutterBinding._runAndGetGCInfo (package:integration_test/integration_test.dart:347:34)
<asynchronous suspension>
#16     IntegrationTestWidgetsFlutterBinding.watchPerformance (package:integration_test/integration_test.dart:402:43)
<asynchronous suspension>
#17     main.<anonymous closure> (file:///C:/Users/Taha/StudioProjects/triage/integration_test/app_test.dart:23:5)
<asynchronous suspension>
#18     testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:170:15)
<asynchronous suspension>
#19     TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:803:5)
<asynchronous suspension>

The test description was:
  Scroll to item 50
═════════════════════════════════════════════════════════════════

end of failure 1

stable
master

❗
❗

Check flutter doctor -v outputs for each channel below

flutter doctor -v
[✓] Flutter (Channel stable, 2.5.1, on Microsoft Windows [Version 10.0.22000.194], locale en-US)
    • Flutter version 2.5.1 at C:\Users\Taha\Code\flutter_stable
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision ffb2ecea52 (4 days ago), 2021-09-17 15:26:33 -0400
    • Engine revision b3af521a05
    • Dart version 2.14.2

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at C:\Users\Taha\Code\android-sdk
    • Platform android-31, build-tools 31.0.0
    • ANDROID_SDK_ROOT = C:\Users\Taha\Code\android-sdk
    • Java binary at: C:\Users\Taha\Code\android-studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
    • 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.11.3)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.11.31702.278
    • Windows 10 SDK version 10.0.19041.0

[✓] Android Studio (version 2020.3)
    • 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.10+0-b96-7249189)

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

[✓] Connected device (4 available)
    • IN2011 (mobile)   • c9d8ee0c • android-arm64  • Android 11 (API 30)
    • Windows (desktop) • windows  • windows-x64    • Microsoft Windows [Version 10.0.22000.194]
    • Chrome (web)      • chrome   • web-javascript • Google Chrome 93.0.4577.82
    • Edge (web)        • edge     • web-javascript • Microsoft Edge 93.0.961.47

• No issues found!

[✓] Flutter (Channel master, 2.6.0-6.0.pre.161, on Microsoft Windows [Version 10.0.22000.194], locale en-US)
    • Flutter version 2.6.0-6.0.pre.161 at C:\Users\Taha\Code\flutter_master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 89123e8489 (2 hours ago), 2021-09-21 00:18:03 -0700
    • Engine revision 7e94275f73
    • Dart version 2.15.0 (build 2.15.0-126.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at C:\Users\Taha\Code\android-sdk
    • Platform android-31, build-tools 31.0.0
    • ANDROID_SDK_ROOT = C:\Users\Taha\Code\android-sdk
    • Java binary at: C:\Users\Taha\Code\android-studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
    • 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.11.3)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.11.31702.278
    • Windows 10 SDK version 10.0.19041.0

[✓] Android Studio (version 2020.3)
    • 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.10+0-b96-7249189)

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

[✓] Connected device (5 available)
    • IN2011 (mobile)         • c9d8ee0c • android-arm64   • Android 11 (API 30)
    • Windows (desktop)       • windows  • windows-x64     • Microsoft Windows [Version 10.0.22000.194]
    • Windows (UWP) (desktop) • winuwp   • windows-uwp-x64 •
    • Chrome (web)            • chrome   • web-javascript  • Google Chrome 93.0.4577.82
    • Edge (web)              • edge     • web-javascript  • Microsoft Edge 93.0.961.47

• No issues found!

✅: No Issue ❗: Issue reproduced
Thanks for filing the issue

Ah!  Yes you have to run with --no-dds

@dnfield Could you tell Flutter team to give E2E testing more attention?
As now if we support different screens sizes and platforms then E2E testing is essential for more developers

authors: TahaTesser amrgetment dnfield jiahaog johnpryan


text:
Provide hints on the type of mappings provided to the Dart VM.

The Flutter Engine creates multiple mappings on Dart VM and Isolates initialization. However, not all regions in these mappings have the same usage and lifecycle requirements. Some are read-only while others are executable. Some are needed for the entire lifetime of the VM or Isolate while others can be freed immediately.
Ideally, the engine would have discrete mappings for each usage and precisely manage the lifecycle of each mapping on its own. However the number, size, and mechanism to generate these mappings is not fixed. This significantly complicates application packaging. These mappings are also internal implementation details in the VM.
The VM would like to provide advice to the operating system on how it intends to use various regions within the larger mappings. This is primarily done with platform specific calls like madvise. However, this is currently not possible today because VM doesn’t know how the mapping was created. All the engine gives the VM today is a pointer to the mapping and its size. With just this information, the VM cannot guarantee that the advice it gives the operating system is sound.
For instance, in the case of madvise and MADV_DONTNEED on Linux & Darwin, anonymous private mappings will be zero-filled. This will mess up subsequent uses of the mapping.
The engine already has knowledge about the types of mappings it gives the VM. This is done via subclasses of the pure virtual fml::Mapping in the engine. The engine and the VM should coordinate on a mechanism for tagging these mappings when they are provided to the the VM.
This approach should yield observable reductions in the memory usage of Flutter applications on platforms where the madvise call (or its platform specific implementation) is supported and implemented.

@rmacnak-google @a-siva: Let me know if I missed something from our conversation yesterday. cc @jason-simmons @zanderso who are looking into similar issues with engine managed snapshots.

Is there anything left to do on this? Should we close it?

I believe we can close it.

authors: a-siva chinmaygarde zanderso


text:
Intermittent failure to connect to chrome tabs on test bots

Part of issues causing web_tool_tests bot failures. See parent issue: https://github.com/flutter/flutter/issues/93256
From build https://ci.chromium.org/ui/p/flutter/builders/prod/Linux web_tool_tests/4272/overview
01:36 +3 -1: test/web.shard/vm_service_web_test.dart: Clients of flutter run on web with DDS enabled can validate flutter version in parallel [E]
  Exception: Received app.stop event while waiting for app.started event

  [+1795 ms] FormatException: Unexpected character (at character 1)
         <html>
         ^

         #0      _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1405:5)
         #1      _ChunkedJsonParser.parseNumber (dart:convert-patch/convert_patch.dart:1272:9)
         #2      _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:937:22)
         #3      _parseJson (dart:convert-patch/convert_patch.dart:40:10)
         #4      JsonDecoder.convert (dart:convert/json.dart:612:36)
         #5      JsonCodec.decode (dart:convert/json.dart:216:41)
         #6      jsonDecode (dart:convert/json.dart:155:10)
         #7      ChromeConnection.getTabs (package:webkit_inspection_protocol/webkit_inspection_protocol.dart:44:10)
         <asynchronous suspension>
         #8      ChromeConnection.getTab (package:webkit_inspection_protocol/webkit_inspection_protocol.dart:57:25)
         <asynchronous suspension>
         #9      ChromiumLauncher._connect (package:flutter_tools/src/web/chrome.dart:401:9)
         <asynchronous suspension>
         #10     ChromiumDevice.startApp (package:flutter_tools/src/web/web_device.dart:134:17)
         <asynchronous suspension>
         #11     ResidentWebRunner.run.<anonymous closure> (package:flutter_tools/src/isolated/resident_web_runner.dart:307:9)
         <asynchronous suspension>
         #12     asyncGuard.<anonymous closure> (package:flutter_tools/src/base/async_guard.dart:111:24)
         <asynchronous suspension>

  Unable to connect to Chrome debug port: 40881

@christopherfujino @yjbanov would you be able to help with this? It seems that the http://localhost:<chrome devtools port>/json returns an html page instead of json. This is not related to dwds, could it be an issue in  chrome or flutter tools?
Note that this issue seem to cause about 1% flakiness in web_tool_tests bots.

@christopherfujino assigning this to you per our chat.

This was flagged again in https://github.com/flutter/flutter/issues/97526 on the same tests.
@annagrin @yjbanov @christopherfujino Please evaluate the value of this test and consider whether we should just delete it.

Bumping the priority to P1 considering high flaky percentage.

Another instance: https://ci.chromium.org/ui/p/flutter/builders/prod/Linux web_tool_tests/4893/overview

/cc @bkonyi this test was testing a simultaneous connection to dds - maybe we should consider adding a similar test to dds itself to prevent regressions?

Another one: https://ci.chromium.org/ui/p/flutter/builders/prod/Linux web_tool_tests/5556/overview

Another two:
https://ci.chromium.org/ui/p/flutter/builders/prod/Linux web_tool_tests/5869/overview
https://ci.chromium.org/ui/p/flutter/builders/prod/Linux web_tool_tests/6010/overview

filed an issue https://github.com/google/webkit_inspection_protocol.dart/issues/85 to retry getting the tab list. Not sure why chrome sometimes returns an html page instead of json.

Fix is in https://github.com/flutter/flutter/pull/104218

authors: annagrin keyonghan zanderso


text:
Error: Unhandled Exception: 'package:flutter/src/widgets/navigator.dart': Failed assertion: line 2845 pos 18: '!navigator._debugLocked': is not true

I am new in Flutter. I face a problem about Unhandled Exception: 'package:flutter/src/widgets/navigator.dart': Failed assertion: line 2845 pos 18: '!navigator._debugLocked': is not true.
This is my Debug Console:
E/flutter ( 5236): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: 'package:flutter/src/widgets/navigator.dart': Failed assertion: line 2845 pos 18: '!navigator._debugLocked': is not true.
package:flutter/…/widgets/navigator.dart:2845
E/flutter ( 5236): #0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:51:61)
E/flutter ( 5236): #1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:40:5)
E/flutter ( 5236): #2      _RouteEntry.handlePush.<anonymous closure>
package:flutter/…/widgets/navigator.dart:2845
E/flutter ( 5236): #3      TickerFuture.whenCompleteOrCancel.thunk
package:flutter/…/scheduler/ticker.dart:407
E/flutter ( 5236): #4      _rootRunUnary (dart:async/zone.dart:1434:47)
E/flutter ( 5236): #5      _CustomZone.runUnary (dart:async/zone.dart:1335:19)
E/flutter ( 5236): <asynchronous suspension>
E/flutter ( 5236): #6      TickerFuture.whenCompleteOrCancel.thunk
package:flutter/…/scheduler/ticker.dart:406
E/flutter ( 5236): <asynchronous suspension>
E/flutter ( 5236):

I would appreciate any help.

Hi @mycar98765, Thanks for filing the issue. Please share output of flutter doctor -v and a minimal and complete reproducible code sample to investigate the issue further.
Additionally, Please refer to this SO answer and see if this helps solve your issue

This answer didn't help me.

Thanks for the update, In order to investigate further we would need a minimal and complete sample code.
Thanks

onPressed: () {
                      Navigator.pop(context);
                    },

@mycar98765 The above piece of code wouldn't help us to find the cause of the issue. We would need a minimal and complete reproducible code  which we can directly copy and run and it should reproduce the same error as reported in the original post.

On my own, I finally found a solution.

On my own, I finally found a solution. I've been testing my widget to see what's causing the problem. Finally, I found it.

what solution did you find? please share

authors: maheshmnj mycar98765 slimpotatoboy


text:
More missing clipBehavior respects

Very related to #103748
These are more RO implementations that are ignoring Clip.none.
I've added a framework assertion so that if someone tries to call PaintingContext.pushClipFoo and incorrectly implements describeApproximatePaintClip, they'll get an error now. That makes some of these ROs fail without new tests. However, some ROs already try to check for this case in their own paint methods and bypass pushClipFoo when their clip behavior is Clip.none anyway, so it's not foolproof.
Another one for the visibility_detector refactor.

The previous patch led to some internal tests breaking for two reasons:

Some tests are doing image diffing based on a graphical representation of the semantics tree. They will likely need to be updated for these cases too.
Some tests were asserting a11y guidelines around now larger areas because of a newly expanded clip. They may need updating.

(I removed the merge label pending my question above)

Removed the assert. I think it may be worth seeing if we can put some kind of restriction like this on render objects, but don't want this to get held up by that.

source: gharchive/pull-request

authors: dnfield goderbauer


text:
[flutter_releases] Flutter stable 3.0.2 Framework Cherrypicks

Flutter stable 3.0.2 Framework
Scheduled Cherrypicks

https://github.com/flutter/flutter/pull/105153
https://github.com/flutter/flutter/pull/105162
https://github.com/flutter/flutter/pull/105144
https://github.com/flutter/flutter/pull/105141

It should be safe to ignore the cirrus failures, but to fix them we need to CP 4c7384c into this branch

Cherry-picked


text:
Stable

Replace this paragraph with a description of what this PR is changing or adding, and why. Consider including before/after screenshots.
List which issues are fixed by this PR. You must list at least one issue.
If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.
Pre-launch Checklist

[ ] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[ ] I read the Tree Hygiene wiki page, which explains my responsibilities.
[ ] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[ ] I signed the CLA.
[ ] I listed at least one issue that this PR fixes in the description above.
[ ] I updated/added relevant documentation (doc comments with ///).
[ ] I added new tests to check the change I am making, or this PR is test-exempt.
[ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

jhhjj


text:
Ensure that a frame is scheduled when a RenderObject calls markNeedsSemanticsUpdate

Fixes issue 2 described in https://github.com/flutter/flutter/issues/10971
Previously, an object could call markNeedsSemanticsUpdate and its wish would never be granted because no frame was scheduled that would actually update the semantics. This caused an issue during scrolling on Android where at the end of the scroll the RenderIgnorePointer would stop blocking the semantics of the scrolled view, call markNeedsSemanticsUpdate, but then no frame was scheduled to actually put the semantics of the scrolled view back into the semantics tree. That made the scrolled view after the scroll unusable for a11y users.
At first I was a bit wary to call requestVisualUpdate within markNeedsSemanticsUpdate because technically the visual is fine, we only need the frame it schedules to update the semantics. However, it seems like we are using requestVisualUpdate for exactly that purpose in other places already where we just need an update to the semantics (e.g. https://github.com/flutter/flutter/blob/76a50fe0ca9641a835517ca020f9089453989011/packages/flutter/lib/src/rendering/object.dart#L2408).

test?

This is actually a pain to unit test because of the close coupling between PipelineOwner and RenderObject (where the later calls private methods on the former). Anyhow, I added a test that would have prevented this specific bug.

authors: Hixie goderbauer


text:
ignore PausePostRequest when reloading

ignore PausePostRequest  events when reloading (fix https://github.com/flutter/flutter/issues/11336)

This happens when a flutter_tools client - typically an IDE - requests a reload with the pause-after-reload flag set. This gives IDEs a changes to re-set breakpoints for the new scripts before the isolate starts executing again. In this case, we still want to request a reassemble of the app The IDE client will resume the isolate, and without the reassemble, the hot reload is performed, but the app UI doesn't update.

@a-siva, could you or @B3rn475 review? I think this is a result of fixing the PausePostRequest event handling.

This will make it difficult to set breakpoints in build methods. It will also expose the developer to an indeterminate state of which breakpoints are still active.

Due to https://github.com/dart-lang/sdk/commit/ba5fe22984ee46192f3a08a557f916794f7f2d99 when editors request sourceReload with pause: true.

If the application was idle, it reloads the source code and pauses, the reassemble request gets queued in the VM, the editor has time to reset all the requested breakpoints and send the resume command when they are all in place. The  reassemble is executed.
If the application was at a breakpoint, it reloads the source code and still pauses, the reassemble request gets queued in the VM, the editor has time to reset all the requested breakpoints and will not send the resume command when they are all in place, remaining at the same breakpoint. The  reassemble will remain in the queue till the stack empties.

Before https://github.com/dart-lang/sdk/commit/ba5fe22984ee46192f3a08a557f916794f7f2d99 the isolate was resuming in both pause: true and pause: false situations https://github.com/flutter/flutter/issues/10934
IntelliJ due to good timing was still able to reset breakpoints.

authors: B3rn475 devoncarew johnmccutchan


text:
Reland: [macos] add flavor options to tool commands

Adds --flavor option to flutter run and flutter build. Running against preexisting devicelab flavor tests for feature parity between macOS, iOS, and Android.
This relands #118421 by alex-wallen which was reverted in #118858 due to the following test failures:
The bail-out with "Host and target are the same. Nothing to install." added in packages/flutter_tools/lib/src/commands/install.dart triggered failures in the following tests, which unconditionally attempt to install the built app, which is unsupported on desktop since the host and target are the same:

https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8791495589540422465/+/u/run_flutter_view_macos__start_up/test_stdout
https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8791496218824259121/+/u/run_complex_layout_win_desktop__start_up/test_stdout
https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8791496218165602641/+/u/run_flutter_gallery_win_desktop__start_up/test_stdout

In order to fix the failure, the StartupTest has been updated to not install on desktop operating systems.
Fixes #64088
Pre-launch Checklist

[X] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[X] I read the Tree Hygiene wiki page, which explains my responsibilities.
[X] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[X] I signed the CLA.
[X] I listed at least one issue that this PR fixes in the description above.
[X] I updated/added relevant documentation (doc comments with ///).
[X] I added new tests to check the change I am making, or this PR is test-exempt.
[X] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Summary of discussion: I'm going to yank the changes to the install command that were part of the original PR since they're orthogonal to flavour support. We can deal with that and figure out expected behaviour in a separate PR.

The flavors_test_macos test isn't passing: https://github.com/flutter/flutter/issues/119782

authors: cbracken jmagman


text:
MultiDragPointerState should dispatch creation and disposal events.

Description

Adds MultiDragPointerState creation and disposal events dispatching for memory leak tracking as part of https://github.com/flutter/flutter/issues/137311

Tests

Updates multidrag_test.dart to test MultiDragPointerState object creation and disposal events dispatching.

Pre-launch Checklist

[X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
[X] I read the [Tree Hygiene] wiki page, which explains my responsibilities.
[X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
[X] I signed the [CLA].
[X] I listed at least one issue that this PR fixes in the description above.
[ ] I updated/added relevant documentation (doc comments with ///).
[X] I added new tests to check the change I am making, or this PR is [test-exempt].
[X] All existing and new tests are passing.

cc @polina-c

This PR should hold till design discussion for leak_tracker (early December)

authors: ksokolovskyi polina-c


text:
Roll Flutter Engine from f03f11300a9d to ebb5adaa887d (2 revisions)

https://github.com/flutter/engine/compare/f03f11300a9d...ebb5adaa887d
2024-11-06 skia-flutter-autoroll@skia.org Roll Fuchsia Test Scripts from _fkA2GjLQH4bc_n2p... to 6FgM4KTbxxmyYoiOs... (flutter/engine#56392)
2024-11-05 skia-flutter-autoroll@skia.org Manual roll Dart SDK from 3e840340c412 to 1c1d0420539f (2 revisions) (flutter/engine#56391)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jsimmons@google.com,zra@google.com on the revert to ensure that a human
is aware of the problem.
To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Commit queue failed; closing this roll.


text:
Roll engine 2586e9412257..a6e816b2a67c (14 commits)

https://github.com/flutter/engine/compare/2586e9412257...a6e816b2a67c
git log 2586e9412257..a6e816b2a67c --no-merges --oneline
a6e816b2a Roll src/third_party/skia 4f598e8c829a..dfca8f6adb6b (7 commits) (flutter/engine#6658)
ff0525f59 Add missing entry-points. (flutter/engine#6634)
08771fe14 Revert dart before engine commit 26e8840de5d6fe801378301dd36d54c92b25bd3b (flutter/engine#6656)
914551bfa Dart SDK roll for 2018-10-24
9f2e2ba7b Add/expose API for Paragraph.getBoxesForRange BoxHeightStyle and BoxWidthStyle. (flutter/engine#6644)
9669b70e1 Add an iOS PlatformViewsController for creating/disposing UIViews. (flutter/engine#6569)
6c2477bd2 fix setter for viewOpaque (flutter/engine#6653)
2bd8c94fc Roll src/third_party/skia a7682c8c73e4..4f598e8c829a (8 commits) (flutter/engine#6654)
e1e60933b Realize kernel asset mappings on a worker thread if one is available. (flutter/engine#6648)
d3874a9ca Roll src/third_party/skia 3b57279fd65a..a7682c8c73e4 (9 commits) (flutter/engine#6652)
3dddf4d5b Roll src/third_party/skia 8429c7930291..3b57279fd65a (2 commits) (flutter/engine#6650)
7b3bb62a8 Roll src/third_party/skia 3aca39df7b22..8429c7930291 (5 commits) (flutter/engine#6647)
26e8840de Dart SDK roll for 2018-10-23
9829c51a9 Roll src/third_party/skia b46c4d0925ad..3aca39df7b22 (12 commits) (flutter/engine#6643)
The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

@liyuqian : New roll has been created by https://autoroll.skia.org/r/flutter-engine-flutter-autoroll

Auto-roller completed checks. About to merge.


text:
reduce mac workload

We need to reduce the workload that the macs are doing at least temporarily.
/cc @tvolkert

So this:

Makes the MacOS integration tests only run on master (not pre-commit)
Skips running the widget tests on MacOS entirely -- presumably because they provide less value when compared to other tests we run on Macs?

What's the story with the removal of the "*_cache" lines?

We run the widget tests on LUCI on post submit.
The caches turned out to be frequently taking longer to create/upload/download than if we just download directly AFAICT, at least on mac.  On Linux and Windows they seem better.

Redness is not real - going ot land this to kick the bots.  Should also help us be less red for flakes.

Filed https://github.com/flutter/flutter/issues/41940 to track this.

authors: Hixie dnfield tvolkert


text:
Roll engine ff49ca1c6e5b..4099cb14683f (25 commits)

git@github.com:flutter/engine.git/compare/ff49ca1c6e5b...4099cb14683f
git log ff49ca1c6e5b..4099cb14683f --no-merges --oneline
2019-08-11 skia-flutter-autoroll@skia.org Roll src/third_party/skia 5e7271a4598e..9c23a9e790b2 (1 commits) (flutter/engine#10838)
2019-08-11 skia-flutter-autoroll@skia.org Roll src/third_party/skia 3e7fa79f2c79..5e7271a4598e (1 commits) (flutter/engine#10827)
2019-08-10 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/linux-amd64 from bvUCO... to xqsy5... (flutter/engine#10826)
2019-08-10 skia-flutter-autoroll@skia.org Roll src/third_party/skia 89e43889afd9..3e7fa79f2c79 (1 commits) (flutter/engine#10825)
2019-08-10 skia-flutter-autoroll@skia.org Roll src/third_party/skia fe19203eb7d7..89e43889afd9 (1 commits) (flutter/engine#10824)
2019-08-10 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/linux-amd64 from HsuAH... to bvUCO... (flutter/engine#10822)
2019-08-10 bkonyi@google.com Roll src/third_party/dart ffefa124a7..e29d6d0ecb (4 commits)
2019-08-10 skia-flutter-autoroll@skia.org Roll src/third_party/skia af89d3972e0b..fe19203eb7d7 (5 commits) (flutter/engine#10819)
2019-08-10 bkonyi@google.com Roll src/third_party/dart 15a3bf82cb..ffefa124a7 (11 commits)
2019-08-09 chris@bracken.jp Roll Dart SDK 78ce916d82..15a3bf82cb (flutter/engine#10810)
2019-08-09 skia-flutter-autoroll@skia.org Roll src/third_party/skia b7b0b3ad538c..af89d3972e0b (7 commits) (flutter/engine#10812)
2019-08-09 jonahwilliams@google.com Revert "Remove flutter_kernel_sdk dart script (#10808)" (flutter/engine#10811)
2019-08-09 iska.kaushik@gmail.com [dart:zircon] Porting Cache re-usable handle wait objects (flutter/engine#10809)
2019-08-09 jonahwilliams@google.com Remove flutter_kernel_sdk dart script (flutter/engine#10808)
2019-08-09 cfontas@google.com change add part to add child (flutter/engine#10787)
2019-08-09 yjbanov@google.com rename stub_ui to web_ui (flutter/engine#10776)
2019-08-09 kpozin@google.com [fuchsia] Migrate from custom FuchsiaFontManager to SkFontMgr_fuchsia (flutter/engine#10700)
2019-08-09 skia-flutter-autoroll@skia.org Roll src/third_party/skia 26cedb4c603b..b7b0b3ad538c (11 commits) (flutter/engine#10807)
2019-08-09 egarciad@google.com Rename flutter_java.jar and flutter_engine.jar so they match the Maven comvention (flutter/engine#10797)
2019-08-09 skia-flutter-autoroll@skia.org Roll fuchsia/sdk/core/linux-amd64 from 9xVXx... to HsuAH... (flutter/engine#10806)
2019-08-09 bkonyi@google.com Roll src/third_party/dart 3d9a356f6e..78ce916d82 (7 commits)
2019-08-09 skia-flutter-autoroll@skia.org Roll src/third_party/skia b2151310068b..26cedb4c603b (1 commits) (flutter/engine#10804)
2019-08-09 skia-flutter-autoroll@skia.org Roll src/third_party/skia 059bf776c184..b2151310068b (3 commits) (flutter/engine#10803)
2019-08-09 bkonyi@google.com Roll src/third_party/dart f29f41f1a5..3d9a356f6e (65 commits)
2019-08-09 skia-flutter-autoroll@skia.org Roll src/third_party/skia 4d557e3df433..059bf776c184 (1 commits) (flutter/engine#10801)
The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
If the roll is causing failures, please contact the current sheriff (jimgraham@google.com), and stop
the roller if necessary.

Trybots failed. These were the failed builds: https://cirrus-ci.com/task/5517164075810816 , https://cirrus-ci.com/task/5798639052521472

Commit queue failed; closing this roll.


text:
Move Material page animations to Material layer.

PageRoute is now MaterialPageRoute.
This also changes the following:

Now the HeroController is a Navigator observer, rather than a feature
of HeroPageRoutes, which are gone. This means heroes can work between
any kind of ModalRoute now.

ModalPageRoute is moved from modal_barrier.dart to routes.dart.

It allows routes to opt-out of their modal barrier being a shortcut to
popping the route.

Features of PageRoute that aren't Material-specific get promoted to
ModalRoute features: storage, the subtree key, offstageness...

The AnimatedModalBarrier is still a ModalRoute feature.

LGTM!

authors: Hixie abarth


text:
Firebase hosting for docs

Not yet for review.

cc @abarth

Looks like Travis failed on something flaky? The PR bot succeeded.

authors: abarth sethladd


text:
Roll engine 6991dd981bf7..04fa001d2808 (1 commits)

https://github.com/flutter/engine/compare/6991dd981bf7...04fa001d2808
git log 6991dd981bf7..04fa001d2808 --first-parent --oneline
2020-03-03 skia-flutter-autoroll@skia.org Roll src/third_party/skia 8121d27b297c..73ae40a424fa (1 commits) (flutter/engine#16900)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC chinmaygarde@google.com on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

Commit queue failed; closing this roll.


text:
Roll Engine from b58dbc88fce9 to f205ceda2543 (7 revisions)

https://github.com/flutter/engine/compare/b58dbc88fce9...f205ceda2543
2021-01-20 skia-flutter-autoroll@skia.org Roll Skia from f3087d8297fe to e0fe62adaa3e (9 revisions) (flutter/engine#23781)
2021-01-20 gspencergoog@users.noreply.github.com Implement handling of framework-handled key events (flutter/engine#23655)
2021-01-19 30870216+gaaclarke@users.noreply.github.com block thread merging with shared engines (flutter/engine#23733)
2021-01-19 dnfield@google.com skip flaky test (flutter/engine#23775)
2021-01-19 skia-flutter-autoroll@skia.org Roll Skia from bde06cc511d2 to f3087d8297fe (7 revisions) (flutter/engine#23772)
2021-01-19 mouad.debbar@gmail.com [web] Add --watch flag to 'felt test' (flutter/engine#23727)
2021-01-19 skia-flutter-autoroll@skia.org Roll Dart SDK from c4214e6daaac to 4a6764bf28c2 (4 revisions) (flutter/engine#23770)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC zra@google.com on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Commit queue failed; closing this roll.

Commit queue failed; closing this roll.


text:
Move globals.artifacts to globals_null_migrated, update imports

Follow up to https://github.com/flutter/flutter/pull/83073.  Update imports where possible.
Part of #71511

Tasks show queued but actually finished: https://chromium-swarm.appspot.com/tasklist?c=name&c=created_ts&c=pending_time&c=duration&c=bot&c=pool-tag&c=state&d=desc&et=1621638227565&f=buildset-tag%3Apr%2Fgit%2F83137&s=created_ts&st=1621551828000
Two failures look like unrelated infra issues:
✗ ProcessException: Failed to find "clang++" in the search path.

Google testing failing because artifacts null safety #83073 hasn't yet rolled.


text:
[url_launcher_macos] add a no-op android implementation

Adding an android/ folder as a temporary mitigation for:
https://github.com/flutter/flutter/issues/46304
https://github.com/flutter/flutter/issues/46790

Could not determine the dependencies of task ':shared_preferences:compileDebugAidl'.

Could not resolve all task dependencies for configuration ':shared_preferences:debugCompileClasspath'.
Could not resolve project :shared_preferences_macos.
Required by:
project :shared_preferences
Unable to find a matching configuration of project :shared_preferences_macos:
- None of the consumable configurations have attributes.
Could not resolve project :shared_preferences_web.
Required by:
project :shared_preferences
Unable to find a matching configuration of project :shared_preferences_web:
- None of the consumable configurations have attributes.

repo: flutter/plugins


text:
SmartDialog.show之后，调用showModalBottomSheet，会使弹窗消失

版本信息

Flutter版本：[v3.3.4]
flutter_smart_dialog版本：[v4.6.1]

描述bug/需求
我用SmartDialog.show弹出了一个弹框，并且需要开启可穿透，然后再点击另一个按钮调用showModalBottomSheet显示bottom sheet，这时候弹窗会消失，关掉bottom sheet，弹窗又显示出来了。
另：因为我开启了permanent(需要关不掉)，退回上级界面后再回到此界面，然后显示bottom sheet，弹窗就不会消失了

SmartDialog.show(builder: (ctx) {
return CallPage(toUserInfo: toUserInfo, callType: type);
},
useAnimation: false,
usePenetrate: true,
clickMaskDismiss: false,
keepSingle: true,
permanent: true,
debounce: true,
alignment: Alignment.centerRight,
);
}
弹窗代码如上

这确实是个bug，设置了permanent参数，变换路由的时候，不应该隐藏弹窗

已经解决了，升级下版本吧

dependencies:
  flutter_smart_dialog: ^4.6.1+1

debounce这种参数有全局配置，全局配置下就行了，不用每次都是设置哈

谢谢！问题解决。这几天github打不开，囧

license: MIT