text:
Flutter requirements for code size tooling

We are adding code size tooling to DevTools that will allow a user to analyze AOT snapshots and APKs.
To generate a snapshot a user can run flutter build aot --release --extra-gen-snapshot-options=--write-v8-snapshot-profile-to=./profile.json. This output can be analyzed in DevTools with visualization tools @peterdjlee has built.
We also need to be able to generate an APK and include AOT snapshot information in the APK analysis. Peter has a draft cl to add a --analyze flag that will show the APK breakdown with the AOT data included when running flutter build apk --analyze. This CL also generates a json file that DevTools can use to visualize the APK / AOT data.
An APK will include multiple libapp.so files (where we inject the AOT snapshot data in the analysis output) for different platforms (arm64-v8a, armeabi-v7a, x86_64, are there more?). Therefore, we need to be able to generate an AOT snapshot for each of the platforms built in an APK. The flutter build aot command looks like it has the option flag --target-platform-build=[android-arm, android-arm64, android-x86, android-x64], but it is unclear how those target platforms directly correlate to the platforms in the APK.
(1) From talking with @jonahwilliams, it appears that:
--target-platform-build=android-arm =>  armeabi-v7a
--target-platform-build=android-arm64 => arm64-v8a
--target-platform-build=android-x64 => x86_64
and
--target-platform-build=android-x86 => ??
We need some clarification / confirmation on this.
(2) @jonahwilliams also said that flutter build aot is deprecated. Is there a newer API we should be using that meets our requirements and use case? Should one be created?
CC @jacob314

arm64-v8a, armeabi-v7a, x86_64 are the only android ABIs. For flutter build apk, you could also produce individual ABIs with the --target-platform=android-arm/android-arm64/android-x64 flags.
Do you specifically need a separate command to produce the AOT artifacts? or could --analyze be added to the existing build android/ios/macos/linux/windows commands

This is done and implemented

source: gharchive/issue

authors: jonahwilliams kenzieschmoll

repo: flutter/flutter

license_type: permissive

license_source: github-api


text:
InkWell ripple effect does not working properly on initial tapping

I was used the inkwell widget on flutter application to show and hide some widgets through inkwell interaction(tap, longpress). But the inkwell ripple effect have not working properly on initial tap interaction. I was added the sample and replicated video as below,
Issue replicated video:
InkWell initial ripple animation issue.mov.zip
Sample:
inkwell_initial_ripple.zip
Steps to Reproduce

Run the attached sample
Tap the show/hide button(inkwell)
Initial tap ripple effect not working correctly.

Expected results:

Initial tap ripple animation will look like the next time tap ripple animation

Actual results:

Initial tap ripple animation does not look like the next time tap ripple animation

Note: The issue reproduced on flutter stable branch also.

I was able to reproduce this issue on latest stable and master channel. On initial tap the ripple effect is a little bit invisible.
Possibly I found a similar issue (video on the right) where touch and press are handled differently by the InkWell widget.
Cc @HansMuller

Actual issue
Maybe a similar issue (tap vs press)

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final style = TextStyle(fontSize: 18);
    return MaterialApp(
      title: 'Flutter InkWell Issue',
      home: Scaffold(
        appBar: AppBar(),
        body: Center(
          child: Column(
            children: [
              Text('Trackpad touch', style: style,),
              Expanded(
                child: InkWell(onTap: () {}),
              ),
              Divider(),
              Text('Trackpad press', style: style,),
              Expanded(
                child: InkWell(onTap: () {}),
              ),
            ],
          ),
        ), // This trailing comma makes auto-formatting nicer for build methods.
      ),
    );
  }
}

flutter doctor -v
[✓] Flutter (Channel stable, 1.20.4, on Mac OS X 10.15.6 19G2021, locale en)
    • Flutter version 1.20.4 at /Users/pedromassango/dev/SDKs/flutter_stable
    • Framework revision fba99f6cf9 (2 weeks ago), 2020-09-14 15:32:52 -0700
    • Engine revision d1bc06f032
    • Dart version 2.9.2

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
    • Android SDK at /Users/pedromassango/Library/Android/sdk
    • Platform android-30, build-tools 30.0.1
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0, Build version 12A7209
    • CocoaPods version 1.9.3

[!] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] IntelliJ IDEA Community Edition (version 2020.2.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 49.0.4
    • Dart plugin version 202.7319.5

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

[✓] Connected device (1 available)
    • iPhone 11 Pro Max (mobile) • 7A82F29E-E49E-4B3C-8609-1570361DBC17 • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-0 (simulator)

! Doctor found issues in 1 category.
Process finished with exit code 0

Hi @pedromassangocode ,
I was validated the issue and the issue only occurred when add a new widget on inkwell interaction(tap). In the above mentioned sample, i was add new list view when the inkwell tapped, if does not add the new widget then it works fine and the ripple effects delayed or not visible based on the newly added widget depth or weight.
Thanks in advance.

Hi @Sasikumar3595, I tried to reproduce the issue and I see the Inkwell ripple effect is shown on every tap (including the first), I can no longer reproduce the issue. I am going to close tihs issue since its not reproducible. In case you still encounter the bug, feel free to leave a comment on this issue and we will reopen it.

flutter doctor -v (mac)
[✓] Flutter (Channel master, 3.6.0-6.0.pre.33, on macOS 12.6 21G115 darwin-arm64,
    locale en-IN)
    • Flutter version 3.6.0-6.0.pre.33 on channel master at
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision a9858ec524 (72 minutes ago), 2022-11-21 10:58:11 -0500
    • Engine revision 46a6b54295
    • Dart version 2.19.0 (build 2.19.0-406.0.dev)
    • DevTools version 2.19.0
    • If those were intentional, you can disregard the above warnings; however it is
      recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc4)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0-rc4
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14A400
    • CocoaPods version 1.11.3

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

[✓] Android Studio (version 2021.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

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

[✓] Connected device (3 available)
    • iPhone 12 Pro (mobile) • 026D5789-9E78-4AD5-B1B2-3F8D4E7F65E4 • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64
      • macOS 12.6 21G115 darwin-arm64
    • Chrome (web)           • chrome                               • web-javascript
      • Google Chrome 107.0.5304.110

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

[✓] Flutter (Channel stable, 3.3.9, on macOS 12.6 21G115 darwin-arm, locale en-IN)
    • Flutter version 3.3.9 on channel stable at /Users/mahesh/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b8f7f1f986 (24 hours ago), 2022-11-23 06:43:51 +0900
    • Engine revision 8f2221fbef
    • Dart version 2.18.5
    • DevTools version 2.15.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc4)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0-rc4
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14A400
    • CocoaPods version 1.11.3

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

[✓] Android Studio (version 2021.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

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

[✓] Connected device (3 available)
    • iPhone 12 Pro (mobile) • 026D5789-9E78-4AD5-B1B2-3F8D4E7F65E4 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64   • macOS 12.6 21G115 darwin-arm
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 107.0.5304.110

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

Thank you.


text:
DropDownButton Error

I use DropDownButton in bottom navi screen, the DropDownButton is not work(Screenshot 1).

When I click the dropdown, the error occurs.
I/flutter ( 3403): ══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
I/flutter ( 3403): The following assertion was thrown while handling a gesture:
I/flutter ( 3403): 'package:flutter/src/material/dropdown.dart': Failed assertion: line 1209 pos 12: '_dropdownRoute ==
I/flutter ( 3403): null': is not true.
I/flutter ( 3403):
I/flutter ( 3403): Either the assertion indicates an error in the framework itself, or we should provide substantially
I/flutter ( 3403): more information in this error message to help you determine and fix the underlying cause.
I/flutter ( 3403): In either case, please report this assertion by filing a bug on GitHub:
I/flutter ( 3403):   https://github.com/flutter/flutter/issues/new?template=BUG.md
I/flutter ( 3403):
I/flutter ( 3403): When the exception was thrown, this was the stack:
I/flutter ( 3403): #2      _DropdownButtonState._handleTap
package:flutter/…/material/dropdown.dart:1209
I/flutter ( 3403): #3      GestureRecognizer.invokeCallback
package:flutter/…/gestures/recognizer.dart:183
I/flutter ( 3403): #4      TapGestureRecognizer.handleTapUp
package:flutter/…/gestures/tap.dart:598
I/flutter ( 3403): #5      BaseTapGestureRecognizer._checkUp
package:flutter/…/gestures/tap.dart:287
I/flutter ( 3403): #6      BaseTapGestureRecognizer.acceptGesture
package:flutter/…/gestures/tap.dart:259
I/flutter ( 3403): #7      GestureArenaManager.sweep
package:flutter/…/gestures/arena.dart:157
I/flutter ( 3403): #8      GestureBinding.handleEvent
package:flutter/…/gestures/binding.dart:362
I/flutter ( 3403): #9      GestureBinding.dispatchEvent
package:flutter/…/gestures/binding.dart:338
I/flutter ( 3403): #10     RendererBinding.dispatchEvent
package:flutter/…/rendering/binding.dart:267
I/flutter ( 3403): #11     GestureBinding._handlePointerEvent
package:flutter/…/gestures/binding.dart:295
I/flutter ( 3403): #12     GestureBinding._flushPointerEventQueue
package:flutter/…/gestures/binding.dart:240
I/flutter ( 3403): #13     GestureBinding._handlePointerDataPacket
package:flutter/…/gestures/binding.dart:213
I/flutter ( 3403): #17     _invoke1 (dart:ui/hooks.dart:265:10)
I/flutter ( 3403): #18     _dispatchPointerDataPacket (dart:ui/hooks.dart:174:5)
I/flutter ( 3403): (elided 5 frames from class _AssertionError and dart:async)
I/flutter ( 3403):
I/flutter ( 3403): Handler: "onTap"
I/flutter ( 3403): Recognizer:
I/flutter ( 3403):   TapGestureRecognizer#e5d7b
I/flutter ( 3403): ════════════════════════════════════════════════════════════════════════════════════════════════════
But if I use this in the normal widget, it runs well(Screenshot 2).

@Darkhorse07232020 Can you provide some demo or code to see what's wrong?

import 'dart:math';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:repeat_native/constants/colors.dart';
import 'package:repeat_native/providers/settings.dart';
import 'package:repeat_native/constants/assets.dart';
import 'package:repeat_native/helpers/localization.dart';
import 'package:repeat_native/ui/checkbox.dart';
import 'package:swipedetector/swipedetector.dart';
_FilterComponent _lastState;
class FilterComponent extends StatefulWidget {
const FilterComponent._(
this.filterComponent,
this._entry,
this.controller,
this.context,
this.isCourse,
);
@override
_FilterComponent createState() => _FilterComponent();
final Widget filterComponent;
final OverlayEntry _entry;
final FilterController controller;
final BuildContext context;
final bool isCourse;
static void show(
BuildContext context,
bool isCourse, {
Widget filterComponent,
FilterController controller,
NavigatorState navigatorState,
}) {
FilterComponent filter;
_lastState?.hide();
final entry = OverlayEntry(
  builder: (context) => filter,
);

filter = FilterComponent._(
    filterComponent, entry, controller, context, isCourse);

(navigatorState ??
        Navigator.of(
          context,
          rootNavigator: true,
        ))
    .overlay
    .insert(entry);

}
}
class _FilterComponent extends State
with TickerProviderStateMixin {
bool _isVisible = false;
List items = [];
void hide() {
if (mounted) {
widget.controller.onFilterClosed();
}
}
@override
void initState() {
super.initState();
_isVisible = false;
_lastState = this;
items = [
'Bestanden',
'Nicht bestanden',
'Nach Kurs',
];
WidgetsBinding.instance.addPostFrameCallback((d) => setState(() {
      _isVisible = true;
    }));

}
@override
Widget build(BuildContext context) {
final _theme = Provider.of(context);
final t = Theme.of(context);
final l = Localization.of(context);
final mediaQuery = MediaQuery.of(context);
final bottomPadding = mediaQuery.padding.bottom;
final filterHeight = (widget.isCourse ? 448.0 : 495.0);
return ValueListenableBuilder(
    valueListenable: widget.controller,
    builder: (BuildContext ctx, _, __) {
      return Material(
          color: BrandColours.white.withOpacity(0.75),
          child: widget.filterComponent ??
              Stack(
                fit: StackFit.expand,
                children: <Widget>[
                  Positioned.fill(
                    child: GestureDetector(
                      onTap: hide,
                      child: Container(
                        decoration: BoxDecoration(
                          gradient: LinearGradient(
                            colors: [
                              _theme.colors.backgroundGradient[0]
                                  .withOpacity(0.3),
                              _theme.colors.backgroundGradient[1]
                                  .withOpacity(0.3)
                            ],
                            stops: [
                              0,
                              1,
                            ],
                            transform: GradientRotation(135 / pi * 180),
                            begin: Alignment.centerLeft,
                            end: Alignment.centerRight,
                          ),
                        ),
                      ),
                    ),
                  ),
                  AnimatedPositioned(
                    onEnd: () {
                      if (!widget.controller.visibility) {
                        widget._entry.remove();
                      }
                    },
                    bottom: widget.controller.visibility && _isVisible
                        ? 0
                        : -(filterHeight + bottomPadding),
                    height: filterHeight + bottomPadding,
                    width: mediaQuery.size.width,
                    duration: Duration(milliseconds: 300),
                    child: SwipeDetector(
                      onSwipeDown: () {
                        hide();
                      },
                      child: Container(
                        padding: EdgeInsets.only(
                            left: 40,
                            right: 28,
                            top: 33,
                            bottom: bottomPadding),
                        height: filterHeight,
                        decoration: BoxDecoration(
                          color: _theme.colors.filterBg,
                          boxShadow: [
                            BoxShadow(
                                color: Color.fromRGBO(0, 0, 0, 0.07),
                                blurRadius: 12,
                                spreadRadius: 4)
                          ],
                          borderRadius: const BorderRadius.vertical(
                              top: Radius.circular(32)),
                        ),
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: <Widget>[
                            Align(
                              alignment: Alignment.topRight,
                              child: InkWell(
                                onTap: hide,
                                child: Container(
                                    height: 18,
                                    width: 18,
                                    margin: EdgeInsets.all(8),
                                    child: AssetsIcon.of(context).close),
                              ),
                            ),
                            Padding(
                              padding: const EdgeInsets.only(bottom: 5),
                              child: Text(
                                widget.isCourse
                                    ? l.tr('course_details_filter_title')
                                    : l.tr('dashboard_filter_title'),
                                style: t.textTheme.headline4,
                              ),
                            ),
                            RichText(
                              text: TextSpan(
                                children: <TextSpan>[
                                  TextSpan(
                                    text: '17',
                                    style: t.textTheme.subtitle1.copyWith(
                                      fontFamily: 'Montserrat-Bold',
                                    ),
                                  ),
                                  TextSpan(
                                    text: ' ${l.tr('course_of')} ',
                                    style: t.textTheme.subtitle1.copyWith(
                                      fontFamily: 'Montserrat-Medium',
                                    ),
                                  ),
                                  TextSpan(
                                    text: '52',
                                    style: t.textTheme.subtitle1.copyWith(
                                      fontFamily: 'Montserrat-Bold',
                                    ),
                                  )
                                ],
                              ),
                            ),
                            CheckBlock(
                              title: l.tr('dashboard_filter_reset'),
                              items: items,
                              controller: widget.controller,
                            ),
                          ],
                        ),
                      ),
                    ),
                  ),
                ],
              ));
    });

}
}
class CheckBlock extends StatefulWidget {
const CheckBlock({
Key key,
@required this.title,
@required this.items,
@required this.controller,
}) : super(key: key);
final String title;
final List items;
final FilterController controller;
@override
_CheckBlockState createState() => _CheckBlockState();
}
class _CheckBlockState extends State {
List selectedItems = [];
bool dropdownState = false;
String _selectedLocation;
final List locations = ['A', 'B', 'C', 'D'];
void _onItemSelected(bool selected, int item) {
if (selected == true) {
setState(() {
selectedItems.add(widget.items[item]);
dropdownState = item == 2 ? true : dropdownState;
});
} else {
setState(() {
selectedItems.remove(widget.items[item]);
dropdownState = item == 2 ? false : dropdownState;
});
}
print(dropdownState);
}
void _removeAllItemsInSelected() {
if (selectedItems.isNotEmpty) {
setState(() {
selectedItems = [];
});
}
}
@override
Widget build(BuildContext context) {
final t = Theme.of(context);
final _theme = Provider.of(context);
return Container(
  margin: const EdgeInsets.only(top: 48),
  padding: const EdgeInsets.symmetric(vertical: 13),
  child: Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: <Widget>[
      Padding(
        padding: const EdgeInsets.only(bottom: 20),
        child: InkWell(
          onTap: () {
            _removeAllItemsInSelected();
          },
          child: Row(
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.only(left: 7, right: 15),
                child: Container(
                    height: 11,
                    width: 11,
                    child: AssetsIcon.of(context).deleteClose),
              ),
              Text(
                widget.title.toUpperCase(),
                style: t.textTheme.subtitle1.copyWith(
                    fontSize: 11,
                    height: 14 / 11,
                    letterSpacing: 0.5,
                    color: _theme.isDark
                        ? BrandColours.white
                        : BrandColours.gray73),
              ),
            ],
          ),
        ),
      ),
      Column(
        children: widget.items
            .asMap()
            .map(
              (index, el) => MapEntry(
                index,
                Container(
                  margin: EdgeInsets.only(
                      top: widget.items.first == el ? 0 : 8,
                      bottom: widget.items.last == el ? 0 : 8),
                  height: 24,
                  child: Row(
                    children: <Widget>[
                      Container(
                        height: 24,
                        width: 24,
                        padding: const EdgeInsets.all(0),
                        child: CustomCheckbox(
                          value: selectedItems.contains(el),
                          onChanged: (bool selected) {
                            _onItemSelected(selected, index);
                          },
                        ),
                      ),
                      Padding(
                        padding: const EdgeInsets.only(left: 16),
                        child: Text(
                          el,
                          style: t.textTheme.headline5,
                        ),
                      )
                    ],
                  ),
                ),
              ),
            )
            .values
            .toList(),
      ),
      SizedBox(height: 16),
      Container(
        padding: EdgeInsets.only(left: 24, right: 16),
        decoration: BoxDecoration(
          color: dropdownState
              ? BrandColours.whiteE7
              : BrandColours.whiteE7.withOpacity(0.25),
          borderRadius: BorderRadius.circular(8),
          border: Border.all(
            color: BrandColours.transparent,
          ),
        ),
        child: DropdownButton<String>(
          hint: Text(
            'Die richtige Bedarfsermittlung',
            style: TextStyle(
              fontFamily: 'Montserrat-Regular',
              fontSize: 14,
              height: 18 / 14,
              color: dropdownState
                  ? BrandColours.gray37
                  : BrandColours.gray37.withOpacity(0.25),
            ),
          ),
          icon: Icon(Icons.unfold_more),
          iconEnabledColor: dropdownState
              ? BrandColours.gray37
              : BrandColours.gray37.withOpacity(0.25),
          underline: SizedBox(),
          isExpanded: true,
          value: _selectedLocation,
          onChanged: dropdownState
              ? (newValue) {
                  setState(() {
                    _selectedLocation = newValue;
                  });
                }
              : null,
          items: locations.map(
            (location) {
              return DropdownMenuItem(
                value: location,
                child: Text(
                  location,
                  style: t.textTheme.headline6,
                  maxLines: 1,
                  overflow: TextOverflow.ellipsis,
                ),
              );
            },
          ).toList(),
        ),
      )
    ],
  ),
);

}
}
class FilterController extends ValueNotifier {
FilterController(
{bool isVisible = false, @required this.context, this.filters})
: _isVisible = isVisible,
super(0);
dynamic filters;
bool _isVisible;
BuildContext context;
void changeVisibility(bool isCourse) {
_isVisible
? onFilterClosed()
: FilterComponent.show(context, isCourse, controller: this);
_isVisible = !_isVisible;
notifyListeners();
}
void changeFilters(String field, bool value) {
filters[field] = value;
notifyListeners();
}
void onFilterClosed() {
if (_isVisible) _isVisible = false;
notifyListeners();
}
bool get visibility => _isVisible;
}

this is the source code.

Thanks @Darkhorse07232020 for the code snippet, but I can still find lots of error in the code, can you pls help me with that like you can send me one file with your problem or a complete demo working without any errors?

Can you send me the source code or demo using DropDownButton in Bottom navi(I made this using Dismissable widget)?

Good job

Good job

Good job

can you help me?

@Darkhorse07232020 Please find the simple demo using ModalBottomSheet.

You can download the code from this file: demos.txt
If the problem still persists, then you can send me your demo in this way so that I can easily run on my side.

@sohilmemon Okay.
But this is not like with mine.
I will send you demo

@Darkhorse07232020 Sure, no worries

I will send you screen recorde video
2020-10-29_06h05_52.zip

@Darkhorse07232020

I will send you screen recorde video
2020-10-29_06h05_52.zip

Okay let me check.

@Darkhorse07232020 Can you tell me how you are presenting this 'Filter Content' controller?

@sohilmemon this is the part of test controller.
This includes Filter controller.
tests.zip

Hi @Darkhorse07232020
I need you to provide a minimal reproducible code sample. Please a runnable flutter code that reproduce the issue.
Thank you

Hi, @pedromassangocode.
this is the part of the code...
tests.zip

Hi @Darkhorse07232020
It seems you are asking for assistance on personal code. Please see https://flutter.dev/community for resources and asking questions like this,
you may also get some help if you post it on Stack Overflow and if you need help with your code, please see https://www.reddit.com/r/flutterhelp/
The code you are sharing is not minimal and contains lots of files which makes it difficult to reproduce the issue.
I will keep this closed until you provide a valid reproducible code sample.
Thank you

authors: Darkhorse07232020 SaavyGirl pedromassangocode sohilmemon


text:
Flutter Linux support for AppImage

I have Flutter GDEs asking for AppImage as a Linux deployment target

Ideally someone in the community would create a script for this (as happened with MSIX). From a quick glance at the docs it seems like someone would just need to define a recipe to convert the artifacts in bundle to the AppImage structure.

able to find some documentation related to creating appimage for flutter linux app but, not able to create recipe.
using appimage-builder --generate, here is the link to official  docs


text:
[webview_flutter] Webview fails to render on Testflight builds [iOS] [Testflight]

Description
I'm trying to render a webview in my flutter project.
It's working perfectly for Android in debug and release modes and on iOS in debug mode as well.
However if I upload a build to Testflight, it does not work.
I've been working with the same code from the past few months and not had an issue with Flutter v1.
I'm attaching a code snippet below. Any help is appreciated.
Sample Code
Snippet:
return Container(
  width: size.width,
  height: size.height,
  child: WebView(
    key: UniqueKey(),
    initialUrl: renderHTML(width, content!),
    javascriptMode: JavascriptMode.unrestricted,
    javascriptChannels: <JavascriptChannel>[
      JavascriptChannel(
          name: 'GetImgSrc',
          onMessageReceived: (JavascriptMessage msg) {
            print('Stef Method Channel ${msg.message}');
            Navigator.of(context)
                .pushNamed(PhotoViewer.route, arguments: msg.message);
          }),
    ].toSet(),
    navigationDelegate: (request) => NewsArticleController()
        .navigationDelegate(request, content!, width),
  ),
);

renderHtml(width, content) {
    return Uri.dataFromString(body, mimeType: 'text/html', encoding: Encoding.getByName('utf-8')).toString();
}

Html Snippet:
String body = '''

        <meta name='viewport' content='initial-scale = 1.0, width=device-width'/>

${content.postDateStr}

        ${content.title}

        By ${content.user}

        $body

    ''';

flutter doctor -v output
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.4 20F71 darwin-x64, locale
    en-US)
    • Flutter version 2.2.3 at /Users/stefano/Desktop/Work/Softwares/flutter
    • Framework revision f4abaa0735 (8 days ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/stefano/Library/Android/sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for
      more details.

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

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

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

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

[✓] Connected device (2 available)
    • Stefano’s iPhone (mobile) • 00008020-001848640E43002E • ios            •
      iOS 14.6
    • Chrome (web)              • chrome                    • web-javascript •
      Google Chrome 91.0.4472.114

! Doctor found issues in 1 category.

webview_flutter version:
webview_flutter: ^2.0.9

Hi @stef0296
Thanks for filing the issue, however, your code snippets have incomplete code pieces and missing variables
Can you please provide  a minimal complete reproducible code sample
Thank you

Hi @TahaTesser
Thank you for your reply. I apologize for the incomplete code.
I am attaching a working example below:
Sample Code
Template
class Template {
  static String body = '''

        <meta name='viewport' content='initial-scale = 1.0, width=device-width'/>

1w ago

        EXCLUSIVE: Ranveer Singh and Bear Grylls team up for an action-packed adventure; Will premiere on Netflix

        By Nikhil Lilani

Riding high on the success of Padmavat, Simmba and Gully Boy, Ranveer Singh is all geared up to take the box-office by storm with 83, Jayeshbhai Jordaar and Cirkus. While the actor has an impressive line-up for the theatres, we hear, he is soon gearing up to explore the digital world too. Ranveer is all set to collaborate with British Adventurer, Bear Grylls, for an action-packed adventure.

“It’s a concept by developed by Bear Grylls. After discussing with Netflix on the same, they felt that it’s Ranveer Singh, who fits the bill for this format like hand in glove. Ranveer, Bear and Netflix have been in conversation for a while now and everything has finally fallen in place. It is a hugely budgeted show which will be the biggest drop for Netflix around the world. No one but Ranveer could pull off what Bear has devised for the show. The prep-work has already begun and the makers plan to shoot it this year itself,” revealed a source, adding further that it’s going to be a global show and is billed as one of the biggest non-fictions shows to be produced in India.

It’s a concept by developed by Bear Grylls. After discussing with Netflix on the same, they felt that it’s Ranveer Singh, who fits the bill for this format like hand in glove.

Source

The series will reportedly be shot in Siberia and the team is currently working towards starting the schedule in the July - August window. “Both Ranveer and Bear will shoot for this non-fiction series that rides on a unique concept,” the source informed. Buzz is, even Ranveer will be seen performing some never attempted and life-threatening stunts in the show.

On the film front, Ranveer is expected to commence shooting for Karan Johar’s next directorial soon, which pairs him alongside Alia Bhatt again after Gully Boy. He also has the Aparichit adaptation in his kitty, which is helmed by Shankar. The film is expected to go on floors sometime next year. The actor’s next theatrical stint will be the Kabir Khan directed 83’, in which he plays the role of Kapil Dev. The film chronicles the journey of how the Indian Cricket Team won the 1983 World Cup. Stay tuned to Pinkvilla for more on Ranveer Singh.

Also Read| EXCLUSIVE: Kiara Advani bags a film each with Ram Charan & Ranveer Singh; Signs a multi film deal with Shankar

  ''';
}

main.dart
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:webview_example/template.dart';
import 'package:webview_flutter/webview_flutter.dart';

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

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

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key}) : super(key: key);

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

class _MyHomePageState extends State<MyHomePage> {
  renderHTML(width) {
    return Uri.dataFromString(
      Template.body,
      mimeType: 'text/html',
      encoding: Encoding.getByName('utf-8'),
    ).toString();
  }

  @override
  Widget build(BuildContext context) {
    Size size = MediaQuery.of(context).size;
    double width = size.width;
    return Container(
      width: size.width,
      height: size.height,
      child: WebView(
        key: UniqueKey(),
        initialUrl: renderHTML(width),
        javascriptMode: JavascriptMode.unrestricted,
        javascriptChannels: <JavascriptChannel>[
          JavascriptChannel(
            name: 'GetImgSrc',
            onMessageReceived: (JavascriptMessage msg) {
              print('Method Channel ${msg.message}');
            },
          ),
        ].toSet(),
        navigationDelegate: (request) {
          print(request.url);
          return NavigationDecision.prevent;
        },
      ),
    );
  }
}

Hi @stef0296
Thanks for the code sample, I just tried your code sample in am app in TestFlight, Webview loads fine using webview_flutter: ^2.0.9.
Used the following minimal code sample

minimal code sample

import 'dart:convert';
import 'dart:io';

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

class Template {
  static String body = '''

        <meta name='viewport' content='initial-scale = 1.0, width=device-width'/>

1w ago

        EXCLUSIVE: Ranveer Singh and Bear Grylls team up for an action-packed adventure; Will premiere on Netflix

        By Nikhil Lilani

Riding high on the success of Padmavat, Simmba and Gully Boy, Ranveer Singh is all geared up to take the box-office by storm with 83, Jayeshbhai Jordaar and Cirkus. While the actor has an impressive line-up for the theatres, we hear, he is soon gearing up to explore the digital world too. Ranveer is all set to collaborate with British Adventurer, Bear Grylls, for an action-packed adventure.

“It’s a concept by developed by Bear Grylls. After discussing with Netflix on the same, they felt that it’s Ranveer Singh, who fits the bill for this format like hand in glove. Ranveer, Bear and Netflix have been in conversation for a while now and everything has finally fallen in place. It is a hugely budgeted show which will be the biggest drop for Netflix around the world. No one but Ranveer could pull off what Bear has devised for the show. The prep-work has already begun and the makers plan to shoot it this year itself,” revealed a source, adding further that it’s going to be a global show and is billed as one of the biggest non-fictions shows to be produced in India.

It’s a concept by developed by Bear Grylls. After discussing with Netflix on the same, they felt that it’s Ranveer Singh, who fits the bill for this format like hand in glove.

Source

The series will reportedly be shot in Siberia and the team is currently working towards starting the schedule in the July - August window. “Both Ranveer and Bear will shoot for this non-fiction series that rides on a unique concept,” the source informed. Buzz is, even Ranveer will be seen performing some never attempted and life-threatening stunts in the show.

On the film front, Ranveer is expected to commence shooting for Karan Johar’s next directorial soon, which pairs him alongside Alia Bhatt again after Gully Boy. He also has the Aparichit adaptation in his kitty, which is helmed by Shankar. The film is expected to go on floors sometime next year. The actor’s next theatrical stint will be the Kabir Khan directed 83’, in which he plays the role of Kapil Dev. The film chronicles the journey of how the Indian Cricket Team won the 1983 World Cup. Stay tuned to Pinkvilla for more on Ranveer Singh.

Also Read| EXCLUSIVE: Kiara Advani bags a film each with Ram Charan & Ranveer Singh; Signs a multi film deal with Shankar

  ''';
}

class WebviewMinimal extends StatefulWidget {
  WebviewMinimal({Key? key}) : super(key: key);

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

class _WebviewMinimalState extends State<WebviewMinimal> {
  renderHTML(width) {
    return Uri.dataFromString(
      Template.body,
      mimeType: 'text/html',
      encoding: Encoding.getByName('utf-8'),
    ).toString();
  }

  // handle redirects for embeds, external links, etc
  NavigationDecision navigationDelegate(
      NavigationRequest request, double width) {
    if (!Platform.isAndroid) {
      if (request.url != renderHTML(width) &&
          request.isForMainFrame) {
        print(' ${request.isForMainFrame} || url: ${request.url}');
        /// unrelated code for navigating to the next page
        return NavigationDecision.prevent;
      }

      print('isForMainFrame: ${request.isForMainFrame}');
      return NavigationDecision.navigate;
    }
    print('isForMainFrame: ${request.isForMainFrame} || url: ${request.url}');

    /// unrelated code for navigating to the next page
    return NavigationDecision.prevent;
  }

  @override
  Widget build(BuildContext context) {
    Size size = MediaQuery.of(context).size;
    double width = size.width;
    return Container(
      width: size.width,
      height: size.height,
      child: WebView(
        key: UniqueKey(),
        initialUrl: renderHTML(width),
        javascriptMode: JavascriptMode.unrestricted,
        javascriptChannels: <JavascriptChannel>[
          JavascriptChannel(
            name: 'GetImgSrc',
            onMessageReceived: (JavascriptMessage msg) {
              print('Method Channel ${msg.message}');
            },
          ),
        ].toSet(),
        navigationDelegate: (request) => navigationDelegate(request, width),
      ),
    );
  }
}

Preview

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

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/tahatesser/Code/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Users/tahatesser/Code/SDK
    • Java binary at: /usr/bin/java
    ✗ Could not determine java version

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

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

[!] Android Studio
    • Android Studio at /Users/tahatesser/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/203.7479365/Android Studio
      Preview.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
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

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

[✓] Connected device (4 available)
    • Taha’s iPhone (mobile) • 00008020-001059882212002E            • ios            • iOS 14.6
    • iPhone 12 Pro (mobile) • 77C62AB9-8B71-43CF-BCAB-85B0A5B52F85 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • macOS (desktop)        • macos                                • darwin-x64     • macOS 12.0 21A5268h darwin-x64
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 91.0.4472.114

! Doctor found issues in 2 categories.

This doesn't look like an issue with Flutter or webview but your project

@TahaTesser is there any way I can debug this after uploading the build on Testflight?
It works perfectly during debugging on a simulator and physical device.
The HTML content being formed is in the correct format and the stacktrace doesn't return any errors.

Hi @stef0296
Like any production, you to implement crash reporting for your app. You can use any of the services for this.
I just you try code sample I have provided and remove other packages, test in the internal group in testflight only.
If you can provided production crash report for webview, please comment below

Hi @TahaTesser
Thank you for your response. After extensive testing, I have finally identified the issue.
It was an unrelated widget having an unbounded height which was causing the issue.
It surprisingly did not show in any error logs or in the debugging console which was why it was so hard to identify.
Thank you all the help you provided.
I will be closing this thread.


text:
[Scrollbar] throws assertion if widget moved to another tree place

Sample code
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  runApp(const MaterialApp(
    title: 'Demo',
    home: MyNavigator(),
  ));
}

class MyNavigator extends StatefulWidget {
  const MyNavigator({Key? key}) : super(key: key);

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

class _MyNavigatorState extends State<MyNavigator> {
  final List<Page<dynamic>> _rightPages = <Page<dynamic>>[
    const MaterialPage<dynamic>(child: TestPage()),
  ];

  final List<Page<dynamic>> _leftPages = <Page<dynamic>>[
    const MaterialPage<dynamic>(child: TestPage()),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: LayoutBuilder(
        builder: (BuildContext context, BoxConstraints constraints) {
          if (constraints.maxWidth < 500) {
            return _buildNavigator(_rightPages + _leftPages);
          }
          // print('2');
          return Row(
            children: <Widget>[
              SizedBox(
                width: 300,
                child: _buildNavigator(_rightPages),
              ),
              Expanded(child: _buildNavigator(_leftPages)),
            ],
          );
        },
      ),
    );
  }

  Widget _buildNavigator(List<Page<dynamic>> pages) {
    return Navigator(
      pages: pages,
      onPopPage: (Route<dynamic> route, Object? result) {
        if (!route.didPop(result)) {
          return false;
        }
        return true;
      },
    );
  }
}

class TestPage extends StatelessWidget {
  const TestPage({
    Key? key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Scrollbar(
        child: ListView.builder(
          itemCount: 100,
          itemBuilder: (BuildContext context, int index) {
            return const Text('text');
          },
        ),
      ),
    );
  }
}

Steps to Reproduce

Run flutter create bug.
Delete everything in main.dart and paste the above:
run on any desktop(mac os)
resize window to small size

Expected results:
not Failed assertion, displaying two pages in the vertical containers or single page
Actual results:
======== Exception caught by scheduler library =====================================================
The following assertion was thrown during a scheduler callback:
This widget has been unmounted, so the State no longer has a context (and should be considered defunct).

Consider canceling any active work during "dispose" or using the "mounted" getter to determine if the State is still active.
When the exception was thrown, this was the stack:
#0      State.context.<anonymous closure> (package:flutter/src/widgets/framework.dart:909:9)
#1      State.context (package:flutter/src/widgets/framework.dart:915:6)
#2      RawScrollbarState._maybeTriggerScrollbar.<anonymous closure> (package:flutter/src/widgets/scrollbar.dart:1242:98)
#3      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1143:15)
#4      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1088:9)
#5      SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:996:5)
#9      _invoke (dart:ui/hooks.dart:166:10)
#10     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:270:5)
#11     _drawFrame (dart:ui/hooks.dart:129:31)
(elided 3 frames from dart:async)
====================================================================================================

flutter doctor:
 [✓] Flutter (Channel stable, 2.5.0, on macOS 11.5.2 20G95 darwin-x64, locale ru)
    • Flutter version 2.5.0 at /Users/ivan/sdk/flutter_sdk
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 4cc385b4b8 (3 days ago), 2021-09-07 23:01:49 -0700
    • Engine revision f0826da7ef
    • Dart version 2.14.0

Issue is reproducible on stable but not reproducible on master.
Tested on macOS and Chrome.
Therefore my assertion is that the issue is fixed and that a fix will be available on the stable branch.
Closing as fixed.

 flutter doctor -v
[✓] Flutter (Channel master, 2.6.0-6.0.pre.82, on macOS 11.5.1 20G80 darwin-arm, locale en-GB)
    • Flutter version 2.6.0-6.0.pre.82 at /Users/nexus/dev/sdks/flutters
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 3b7adb989f (7 hours ago), 2021-09-13 21:32:04 -0700
    • Engine revision abb1980f65
    • Dart version 2.15.0 (build 2.15.0-96.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-31, build-tools 31.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.5.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.11.0

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

[✓] Android Studio (version 2020.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-arm64   • macOS 11.5.1 20G80 darwin-arm
    • Chrome (web)    • chrome • web-javascript • Google Chrome 93.0.4577.63

• No issues found!

[✓] Flutter (Channel stable, 2.5.0, on macOS 11.5.1 20G80 darwin-arm, locale en-GB)
    • Flutter version 2.5.0 at /Users/nexus/dev/sdks/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 4cc385b4b8 (6 days ago), 2021-09-07 23:01:49 -0700
    • Engine revision f0826da7ef
    • Dart version 2.14.0

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-31, build-tools 31.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
    • All Android licenses accepted.

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

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

[✓] Android Studio (version 2020.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-arm64   • macOS 11.5.1 20G80 darwin-arm
    • Chrome (web)    • chrome • web-javascript • Google Chrome 93.0.4577.63

• No issues found!


text:
BatteryManager giving wrong values for some devices.

BatteryManager giving wrong values for some devices.
i have an app called Electron on the play store, it has over 100k downloads, its an app that gives you information about the device's battery, the current capacity and current now values show correct for some devices, and they incorrect large values for some other devices, i use a package called battery_info to get the info, but i dont think the probem is from the packages code, i tried my own implementation using platform channels, but i still got the same results, i really need a solution to this asap, my app is getting huge and it still has this issue.

Flutter has no control over what values an OS API reports.
Closing, as this does not appear to describe a bug in Flutter.

well it may be a bug with flutter's platform channel, we dont have enough info to close the issue yet.

You have a device-specific issue that has only been seen with reading battery values--an inherently device-specific process. Sending numbers over platform channels, on the other hand, is a simple process that has no device-specific aspects. So while it's theoretically possible for it to be a platform channel bug, it's extremely unlikely, and there's no evidence here for it.
If you believe that's the issue, however, you can easily determine that by comparing the values on the native side and the Dart site. In the event that you find that that's the problem, you'll have a simple reproducible test case that you can report.

You have a device-specific issue that has only been seen with reading battery values--an inherently device-specific process. Sending numbers over platform channels, on the other hand, is a simple process that has no device-specific aspects. And unlike reading battery voltage, platform channels are very widely used, and we have no other reports of numbers randomly changing to wildly different values. So while it's theoretically possible for it to be a platform channel bug, it's extremely unlikely, and there's no evidence here for it.
If you believe that's the issue, however, you can easily determine that by comparing the values on the native side and the Dart site. In the event that you find that that's the problem, you'll have a simple reproducible test case that you can report.

i tried comparing the values from the native and flutter side, it seems that the values are incorrect from the native side, i searched everywhere but cant solve this bug

authors: stuartmorgan toolsX


text:
[material/menu_anchor.dart] Add directional traversal to first and last menu item on web.

This draft PR enables the use of vertical directional traversal from a top-level overlay anchor (either a MenuAnchor or the first SubmenuButton in a MenuBar) to the first or last item of that anchor's overlay. This should partially address https://github.com/flutter/flutter/issues/119532.
Additionally, I came across (and fixed) a bug (that I introduced 😿) where aggressively pressing the arrow keys can lead to a loss of focus. I should be able to better address this issue in the coming days, but I wanted to bundle this fix because the directional traversal implementation seemed to exacerbate the problem. Let me know if this should be split out into a separate PR. Note: one negative side effect of the fix is that submenus no longer close when moving in the direction opposite of traversal. As a result, I think this qualifies as a breaking change.
Last, because of the bug fix, I had to enable DismissMenuAction whenever the root menu is open, rather than whenever the current menu is open, because the action was not being enabled even when the menu overlay was visible. I will investigate this tomorrow and add tests if appropriate.
@dkwingsmt
Directional focus on web:
https://github.com/user-attachments/assets/26f52867-3829-4caa-b703-f24abbceb2b1
Bug fix side effect (normally, exiting a submenu should close that submenu):
https://github.com/user-attachments/assets/6d23f32b-617d-4116-a5c0-336d57a87027
List which issues are fixed by this PR. You must list at least one issue. An issue is not required if the PR fixes something trivial like a typo.
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

[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 ///).
[~] I added new tests to check the change I am making, or this PR is test-exempt.
[] I followed the breaking change policy and added Data Driven Fixes where supported.
[] All existing and new tests are passing.

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

Thanks for the draft! (I'm still taking a look at the code.)
For the behavior change, unfortunately I believe we should maintain the current behavior. As described in https://www.w3.org/WAI/ARIA/apg/patterns/menubar/, the behavior of a LeftArrow press should be:

When focus is in a submenu of an item in a menu, closes the submenu and returns focus to the parent menuitem.

That makes sense. Let me see if I can think of a fix that preserves behavior.

(triage): @davidhicks980 I was wondering if you still have plans for this PR?

@goderbauer We can close it for now depending on how RawMenuAnchor goes. I can always reopen if needed.

source: gharchive/pull-request

authors: davidhicks980 dkwingsmt goderbauer


text:
update mostRecentSemanticVersion to handle strings like "8.6-rc-2"

WIP
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.
[ ] 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.
[x] I followed the breaking change policy and added Data Driven Fixes where supported.
[x] All existing and new tests are passing.

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

i have no idea how to write tests for this one

@gmackall I think this is not unit testable given our current structure. Can you confirm if that is true?

Something i noticed is that this function does compare the ndk versions of two plugins and AFAIK there is no ndk version that have letters in it , i'm i right ?

this seems related : https://github.com/flutter/flutter/blob/41c273f8c66c4a5a373cea8b13605c6d7c813829/packages/flutter_tools/gradle/src/main/kotlin/dependency_version_checker.gradle.kts#L331-L364

using , u can test the code :
 static String mostRecentSemanticVersion(String version1, String version2) {
        def v1Parts = version1.tokenize('.-')
        def v2Parts = version2.tokenize('.-')

        for (int i = 0; i < Math.max(v1Parts.size(), v2Parts.size()); i++) {
            def v1Part = i < v1Parts.size() ? v1Parts[i] : '0'
            def v2Part = i < v2Parts.size() ? v2Parts[i] : '0'

            def v1Num = v1Part.isNumber() ? v1Part.toInteger() : 0
            def v2Num = v2Part.isNumber() ? v2Part.toInteger() : 0

            if (v1Num != v2Num) {
                return v1Num > v2Num ? version1 : version2
            }

            if (v1Part.isNumber() && !v2Part.isNumber()) {
                return version1
            } else if (!v1Part.isNumber() && v2Part.isNumber()) {
                return version2
            } else if (v1Part != v2Part) {
                return comparePreReleaseIdentifiers(v1Part, v2Part) ? version1 : version2
            }
        }

        // If versions are equal, return the longest version string
        return version1.length() >= version2.length() ? version1 : version2
    }

    static boolean comparePreReleaseIdentifiers(String v1Part, String v2Part) {
        def v1PreRelease = v1Part.replaceAll("\\D", "")
        def v2PreRelease = v2Part.replaceAll("\\D", "")

        return v1PreRelease < v2PreRelease
    }

        println mostRecentSemanticVersion("1.2", "1.2.0")           // Output: 1.2.0
        println mostRecentSemanticVersion("1.0", "1")               // Output: 1.0
        println mostRecentSemanticVersion("1.2.0-alpha", "1.2")     // Output: 1.2
        println mostRecentSemanticVersion("1.2.3", "1.2.3")         // Output: 1.2.3
        println mostRecentSemanticVersion("1.2.3-beta", "1.2.3")    // Output: 1.2.3
        println mostRecentSemanticVersion("1.2.3", "1.2.3.4")       // Output: 1.2.3.4
        println mostRecentSemanticVersion("rc-2", "rc-1")           // Output: rc-2
        println mostRecentSemanticVersion("8.7-rc-1", "8.7")        // Output: 8.7
        println mostRecentSemanticVersion("8.7-rc-1", "8.7.2")      // Output: 8.7.2
        println mostRecentSemanticVersion("8.7.2", "8.7.1")         // Output: 8.7.2

Marking as draft since pr description says WIP

Marking as draft since pr description says WIP

Yep i forget to change it .
I still didn't know is it working right ?

authors: AbdeMohlbi reidbaker


text:
Roll engine 38ac5f30a702..33b0082b1e5b (3 commits)

https://github.com/flutter/engine/compare/38ac5f30a702...33b0082b1e5b
git log 38ac5f30a7026e870619c2e8e8c99c070d74036f..33b0082b1e5b296fc553cbcd67400a9efccc25f8 --no-merges --oneline
33b0082b1 Roll src/third_party/skia a022b0fdc441..7217e22822b2 (1 commits) (flutter/engine#10200)
4ee453d24 Roll fuchsia/sdk/core/linux-amd64 from NDQim5iXsGvfeCYhlEPR_KlvZv33t_0m7BMA41mj8HQC to RbDm6nqefHOlinm0ulXGeQqpMp1hMsBIpfrBAElpkhwC (flutter/engine#10199)
19760216a Roll fuchsia/sdk/core/mac-amd64 from gXIxRFXOagEFKXR0YCwZPnoFd5HsrVLysQ2gQyvtk3kC to vBbEgWegVmypZ-HnXDLc8NopkD3SLzco2m6F5USDhLUC (flutter/engine#10198)
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 (cbracken@google.com), and stop
the roller if necessary.

Trybots failed. These were the failed builds: https://cirrus-ci.com/task/6340335016345600

Commit queue failed; closing this roll.


text:
Dropdown Menu layout respects menu items intrinsic sizes

Fixes https://github.com/flutter/flutter/issues/40773.
Previously, dropdown menu items had a fixed height of 48 (kMinInteractiveDimension). Dropdown menu items now have a minimum size of 48  and no maximum size. When the menu appears, each item's vertical height will match its intrinsic height.
This test case demos dropdown menus with variable height items. It also uses the new selectedItemBuilder feature to render compact versions of the selected items within the dropdown button.

Previous
Current

@shihaohong per https://github.com/flutter/flutter/pull/41120#pullrequestreview-292912693
This is a separate problem with dropdown buttons: currently the underline is drawn on top of the selected item, 8 pixels from the bottom of the selected item. It's not noticeable with the default menu item size. I'm going to write a separate PR to fix the underline.


text:
Workaround to re-enable test

This is a workaround for:
https://github.com/dart-lang/sdk/issues/25246

lgtm

cc @floitschG since he wrote the original code

authors: Hixie chinmaygarde


text:
CircleAvatar make fit property accessible

This make it possible to chang the default BoxFit, for my case it was useful to make a image to scaledown
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.

Created an issue for this PR #98350 with suggestion to add alignment parameter too

Thanks for your contribution.
A few things:

To merge any change, you'll need to sign the CLA.
Can you provide a bit more justification for this change in the issue?
Assuming the justification for this looks good, we'll need a test before we can land any change.

Since we haven't seen an update on this issue, I'm going to close it for now. If you send a new updated patch with a test and a bit more detail covering the background of this change, we'll be more than happy to take another look.

authors: cbracken kirolous-nashaat robpot95


text:
[e2e] add support to report extra information

Description
Added an extra field extraInfo in lib/common.dart. Use case is to use the field to report performance. E.g. in flutter/flutter#61509, I'm migrating one existing test to an e2e based performance test. The use case is not complete because I still need to add other performance metrics but for a demo of the use case it's sufficient.
I'm not naming it to performance because in some of our device lab test the reported value is not for performance.
Related Issues
Resolves flutter/flutter#61490
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
[x] All existing and new tests are passing.
[x] I updated/added relevant documentation (doc comments with ///).
[x] The analyzer (flutter analyze) does not report any problems on my PR.
[x] I read and followed the Flutter Style Guide.
[x] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
[x] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
[x] I updated CHANGELOG.md to add a description of the change.
[x] I signed the CLA.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
[x] No, this is not a breaking change.

It might be good to put some part of https://github.com/CareF/flutter/blob/f7f4471caa5f714f29e3c9e331f2d0d84b220cfc/dev/benchmarks/macrobenchmarks/test/util.dart to E2E, but I'm not sure for that.

Can you add some test(s) for this?

Can you add some test(s) for this?

@dnfield The test would require running on a device. I think I can add something the example as test, though I don't think it will be tracked by CI.

You should be able to write some unit tests right?

You should be able to write some unit tests right?

Currently we don't have any unit test for E2E, and I kind of believe it's because this package is all about adapting for running tests for different ways. But yeah it's probably the good point to start unit test here.

@dnfield Unit test done. I'm a little bit proud of coming up a way to unit test the binding.

authors: CareF dnfield

repo: flutter/plugins


text:
[WIP] ci: enable xcode 12/iOS 14 for all tasks except lint

Description
This PR moves all the iOS tasks to XCode 12 and iOS 14.
Note: Pod linter task could not move to XCode 12 yet because flutter engine doesn't support arm simulators yet. So I created a separate task with XCode 11 for pod lint task.
Related Issues
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
[x] All existing and new tests are passing.
[x] I updated/added relevant documentation (doc comments with ///).
[x] The analyzer (flutter analyze) does not report any problems on my PR.
[x] I read and followed the Flutter Style Guide.
[x] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
[x] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
[x] I updated CHANGELOG.md to add a description of the change.
[x] I signed the CLA.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
[x] No, this is not a breaking change.

@cyanglaz, are you planning to continue working on this issue? FYI big-sur-xcode-12.3 image is also available.

@cyanglaz, are you planning to continue working on this issue? FYI big-sur-xcode-12.3 image is also available.

@fkorotkov Yes. I saw your announcement and I'll make this a priority now.

@fkorotkov Yes. I saw your announcement and I'll make this a priority now.

@cyanglaz thank you! Seems only camera plugin is failing with Xcode 12. I tested it tomorrow here: https://cirrus-ci.com/task/6096381335044096

@cyanglaz thank you! Seems only camera plugin is failing with Xcode 12. I tested it tomorrow here: https://cirrus-ci.com/task/6096381335044096

@fkorotkov The last time I tried, the image picker xcode test was constantly failing and I couldn't reproduce the failure locally with the same setup. Did anything change? Do I need to use a different mac/xcode config than it is in this PR?

@fkorotkov The last time I tried, the image picker xcode test was constantly failing and I couldn't reproduce the failure locally with the same setup. Did anything change? Do I need to use a different mac/xcode config than it is in this PR?

I tried 12.0 and you tried 12.1. Do you have a preference of the Xcode? Or for example the latest big-sur-xcode-12.3 will work for you? Or you want to use older version for backward compatibility?

I tried 12.0 and you tried 12.1. Do you have a preference of the Xcode? Or for example the latest big-sur-xcode-12.3 will work for you? Or you want to use older version for backward compatibility?

@fkorotkov tried 12.0 didn't work. is it big-sur-xcode-12.3-flutter`?

@fkorotkov tried 12.0 didn't work. is it big-sur-xcode-12.3-flutter`?

It's big-sur-xcode-12.3 Starting with Big Sur we removed -flutter images so the Xcode one includes Flutter now. See https://cirrus-ci.org/guide/macOS/?h=+macos#macos-big-sur

It's big-sur-xcode-12.3 Starting with Big Sur we removed -flutter images so the Xcode one includes Flutter now. See https://cirrus-ci.org/guide/macOS/?h=+macos#macos-big-sur

@fkorotkov Looks like there are still some issue with the image picker controller UI on ci. It's failing constantly and I can't repro it locally. :(

@fkorotkov Looks like there are still some issue with the image picker controller UI on ci. It's failing constantly and I can't repro it locally. :(

@cyanglaz how are you trying to reproduce it locally? Do you also create an iPhone 11 simulator with the same OS version?

@cyanglaz how are you trying to reproduce it locally? Do you also create an iPhone 11 simulator with the same OS version?

@fkorotkov I did it with the same xcode version and same simulator. The OS version on my machine: 10.15.7 (19H114). I am not sure if the OS version would affect how the image picker controller perform on simulators?

@fkorotkov I did it with the same xcode version and same simulator. The OS version on my machine: 10.15.7 (19H114). I am not sure if the OS version would affect how the image picker controller perform on simulators?

@cyanglaz interesting! I tried to run your branch on the new infrastructure by adding experimental: true to the config and everything worked https://cirrus-ci.com/build/6518411029118976. Do you want to switch to the new infrastructure earlier?)

@cyanglaz interesting! I tried to run your branch on the new infrastructure by adding experimental: true to the config and everything worked https://cirrus-ci.com/build/6518411029118976. Do you want to switch to the new infrastructure earlier?)

Also note how much faster the tasks are! 😍

Also note how much faster the tasks are! 😍

Hm. Same error on the new virtualization. I wonder why it worker (or was it ignored on my branch?).

Hm. Same error on the new virtualization. I wonder why it worker (or was it ignored on my branch?).

@fkorotkov Yeah looks like it was ignored.

@fkorotkov Yeah looks like it was ignored.

It seems iOS version did change switching to Xcode 12 which means the test follows another code path here https://github.com/flutter/plugins/blob/07cf89a08b8800f3337049654bc5c1c19edd50d0/packages/image_picker/image_picker/example/ios/RunnerUITests/ImagePickerFromGalleryUITests.m#L165
Is it possible that the error in the test? Do you have a iOS 14 device locally?

It seems iOS version did change switching to Xcode 12 which means the test follows another code path here https://github.com/flutter/plugins/blob/07cf89a08b8800f3337049654bc5c1c19edd50d0/packages/image_picker/image_picker/example/ios/RunnerUITests/ImagePickerFromGalleryUITests.m#L165
Is it possible that the error in the test? Do you have a iOS 14 device locally?

The log says it went to iOS 14 (the test was looking for Image which is iOS 14 only) which is correct.
I think the failure is caused due to a lost connection to the app.
looking at here:
Waiting 30.0s for Button to exist
    t =     9.57s     Checking `Expect predicate `exists == 1` for object Button`
    t =     9.57s         Checking existence of `Button`
    t =     9.59s         Capturing element debug description
    t =    10.65s     Checking `Expect predicate `exists == 1` for object Button`
    t =    10.65s         Checking existence of `Button`
    t =    10.67s         Capturing element debug description
    t =    11.73s     Checking `Expect predicate `exists == 1` for object Button`
    t =    11.73s         Checking existence of `Button`
    t =    11.90s Checking existence of `Button`
    t =    11.96s Tap Button
    t =    11.96s     Wait for io.flutter.plugins.imagePickerExample to idle
    t =    12.01s     Find the Button
    t =    12.06s     Check for interrupting elements affecting "Cancel" Button
    t =    12.11s     Synthesize event
    t =    12.22s     Wait for io.flutter.plugins.imagePickerExample to idle

The first time, bringing up the image picker was fine, and the cancel button was successfully clicked, the image picker controller was successfully dismissed. But the second time, it was crashing when looking for an image.

The log says it went to iOS 14 (the test was looking for Image which is iOS 14 only) which is correct.
I think the failure is caused due to a lost connection to the app.
looking at here:
Waiting 30.0s for Button to exist
    t =     9.57s     Checking `Expect predicate `exists == 1` for object Button`
    t =     9.57s         Checking existence of `Button`
    t =     9.59s         Capturing element debug description
    t =    10.65s     Checking `Expect predicate `exists == 1` for object Button`
    t =    10.65s         Checking existence of `Button`
    t =    10.67s         Capturing element debug description
    t =    11.73s     Checking `Expect predicate `exists == 1` for object Button`
    t =    11.73s         Checking existence of `Button`
    t =    11.90s Checking existence of `Button`
    t =    11.96s Tap Button
    t =    11.96s     Wait for io.flutter.plugins.imagePickerExample to idle
    t =    12.01s     Find the Button
    t =    12.06s     Check for interrupting elements affecting "Cancel" Button
    t =    12.11s     Synthesize event
    t =    12.22s     Wait for io.flutter.plugins.imagePickerExample to idle

The first time, bringing up the image picker was fine, and the cancel button was successfully clicked, the image picker controller was successfully dismissed. But the second time, it was crashing when looking for an image.

Ok, it looks like it's always crashing at the second time when image picker is brought up. pretty similar to https://github.com/flutter/flutter/issues/67430
But i thought this issue should be resolved on metal simulators. I can't repro this locally either.

Ok, it looks like it's always crashing at the second time when image picker is brought up. pretty similar to https://github.com/flutter/flutter/issues/67430
But i thought this issue should be resolved on metal simulators. I can't repro this locally either.

Looks like bringing up a new App for each test fixed the issue on CI. I'm still not sure what's going on with bringing up 2 consecutive image picker on ci. I think for now we should make each test session separate so we can enable xcode 12 first. Then figure out what's going on with the particular image picker tests.

Looks like bringing up a new App for each test fixed the issue on CI. I'm still not sure what's going on with bringing up 2 consecutive image picker on ci. I think for now we should make each test session separate so we can enable xcode 12 first. Then figure out what's going on with the particular image picker tests.

As far as I know neither Anka nor the new Parallels virtualization do support Metal inside VMs. They use Metal externally but don't support "nested Metal".

As far as I know neither Anka nor the new Parallels virtualization do support Metal inside VMs. They use Metal externally but don't support "nested Metal".

@jmagman Thanks for the quick review! Fixed!

@jmagman Thanks for the quick review! Fixed!

authors: cyanglaz fkorotkov


text:
[file_selector] Annotate all parameters of XTypeGroup with // ignore: prefer_const_literals_to_create_immutables

Annotate all parameters of XTypeGroup with // ignore: prefer_const_literals_to_create_immutables to prepare this implementation for the const constructor of XTypeGroup. On files that have more than two occurrences, an ignore_for_file was added at the top of the file.
Issue:
#111906 [file_selector] XTypeGroup should be immutable
Related PR:
[file_selector] Convert XTypeGroup to const
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 relevant style guides and ran the auto-formatter. (Unlike the flutter/flutter repo, the flutter/plugins repo does use dart format.)
[x] I signed the CLA.
[x] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.
[x] I updated CHANGELOG.md to add a description of the change, following repository CHANGELOG style.
[ ] 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.

I hadn't looked at the details of what was still failing. These don't need an ignore, you can just add the consts now since everything that generates this lint warning has a const constructor already.

Hi Stuart, do you think it would be a better approach to use const parameters instead of ignoring the warnings? Then, the desired change it's going to look like this:
final XTypeGroup typeGroup = XTypeGroup(
      label: 'images',
      extensions: const <String>['jpg', 'jpeg'],
      mimeTypes: const <String>['image/png'],
      webWildCards: const <String>['image/*'],
);

Since the PR that updates the constructor hasn't been merged yet, it won't be OK to use a const constructor at this moment.
I am missing something?
Thanks.

@ditman Can you do the secondary approval here?

authors: eugerossetto stuartmorgan


text:
Can't get simple "getting started" app to work

Fairly new to flutter and dart hopefully this is a mistake I'm making but fwiw I was attempting to follow your README instructions against a minimal app such as output from the flutter getting started tutorial i.e.:
https://flutter.io/get-started/test-drive/#create-app
I'm getting a "Could not find '.packages'." error from the flutter2js step.
(then errors on the pub get and pub serve steps don't know if they are a result of the can't find .packages error or not)
This is the command I used (is app-uri a file path do I have that wrong maybe?):
pub global run flutter2js create example --app-name=myapp --app-uri=.

JIC it helps here's a copy/paste of my entire terminal session (I've bolded the errors):
$ pub global activate --source git https://github.com/jban332/flutter2js
Package flutter2js is currently active from Git repository "https://github.com/jban332/flutter2js".
Resolving dependencies... (1.0s)
+ args 1.4.3
+ flutter 0.0.20
+ flutter2js 0.2.0 from git https://github.com/jban332/flutter2js at d0fd19
+ meta 1.1.5
Precompiling executables...
Precompiled flutter2js:flutter2js.
Installed executable flutter2js.
Activated flutter2js 0.2.0 from Git repository "https://github.com/jban332/flutter2js".

$ cd myapp/
$ pub global run flutter2js create example --app-name=myapp --app-uri=.
Creating project 'example'.
Ok.

Running 'pub get'...

**Could not find '.packages'.**

$ ls -al .packages
-rw-r--r--  1 crused  staff  5368 May 14 19:05 .packages

$ ls example/
dart_test.yaml	pubspec.yaml	test		web

$ cd example/
$ pub get
Resolving dependencies... (1.8s)
**Because every version of flutter from git depends on flutter2js any which is forbidden, flutter from git is forbidden.
So, because example depends on flutter from git, version solving failed.**

$ pub serve
**Dart 2 has a new build system. Learn how to migrate from pub build and
pub serve: https://webdev.dartlang.org/dart-2**

$

Hi @darrencruse, Are you still trying with these tools?  I'm trying updating simple hello_world-browser sample to make it work.  Tried to contact @jban332 but not success.  Please, let me know if we can work together on this.

Apologies @abnerh69 I got busy and didn't see your comment till now.
To be honest I'm pretty new to (even) flutter and dart I'm doubting I can figure this out without help from @jban332 doubt I'm any help to your effort either...
Did you notice he doesn't check "Flutter SDK examples Work adequately" here:
https://github.com/flutter2js/flutter2js#status
So maybe things just aren't really working yet...  (looks like @jban332 is the lone contributor and I'm sure this is a very ambitious thing to make work!!  I wish google would take the idea seriously I think it would be the killer feature for flutter to run on android, iOS, and browser!!)

Thank you Darren,
I agree with your comments.  Please, let me know if there is a change to
make it work.  I am serious on it.  Thank you.
El sáb., 14 jul. 2018 a las 11:50, Darren Carl Cruse (<
notifications@github.com>) escribió:

Apologies @abnerh69 https://github.com/abnerh69 I got busy and didn't
see your comment till now.
To be honest I'm pretty new to (even) flutter and dart I'm doubting I can
figure this out without help from @jban332 https://github.com/jban332
doubt I'm any help to your effort either...
Did you notice he doesn't check "Flutter SDK examples Work adequately"
here:
https://github.com/flutter2js/flutter2js#status
So maybe things just aren't really working yet... (looks like @jban332
https://github.com/jban332 is the lone contributor and I'm sure this is
a very ambitious thing to make work!! I wish google would take the idea
seriously I think it would be the killer feature for flutter to run on
android, iOS, and browser!!)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/flutter2js/flutter2js/issues/6#issuecomment-405035640,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AF4wrhd6uluP8U3K1BLrDXQ5x_LImtAqks5uGiFcgaJpZM4URcU0
.


text:
[website] Add explicit entry point for Firebase Deploy Action

Description
Looks like Firebase Action doesn't respect the defaults syntax as it didn't find firebase.json file: https://github.com/fluttercommunity/plus_plugins/actions/runs/3154184239/jobs/5131506340
Trying to fix it by using available entryPoint parameter.

Going to merge without review to check fix faster. Sorry.

license_source: bigquery


text:
🛑 Farmacias is down

In af4ec7c, Farmacias (https://extranet.osam.org.ar/Consulta/farmacias) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Farmacias is back up in abca5d6 after 6 minutes.

repo: flvanney/OSAMuptime

license: MIT


text:
Without pytest asyncio auto mode, tests fail with CollectionWasNotInitialized

Thanks for the repo, it was very helpful getting asyncio and pytest to work nicely.
Just one thing i discovered, you might need to add
pytest.ini
[pytest]
asyncio_mode=auto

Otherwise tests fail with errors:
pytest
======================================================================== short test summary info =========================================================================
FAILED tests/routes/test_auth.py::test_not_authorized - AttributeError: 'async_generator' object has no attribute 'get'
FAILED tests/routes/test_auth.py::test_refresh - beanie.exceptions.CollectionWasNotInitialized
FAILED tests/routes/test_user.py::test_user_get - beanie.exceptions.CollectionWasNotInitialized
FAILED tests/routes/test_user.py::test_user_update - beanie.exceptions.CollectionWasNotInitialized
FAILED tests/routes/test_user.py::test_user_delete - beanie.exceptions.CollectionWasNotInitialized

Thanks for the quick fix!

@flyinactor91 just saw this was merged! Sure thing, thanks for sharing the code, it was very useful.


text:
Postgres UID is wrong

Since /etc/passwd is different inside the postgres container, it looks like syslog owns the processes and files outside the container.

This isn't really a bug.

repo: flynn/flynn


text:
Build System

Overview
This is a proposal for a new build system in Flynn that will function as both the build tool for applications running in Flynn as well as the build tool for the Flynn project itself. There are other existing build tools but there are none (to my knowledge) that are written in Go and that can be easily integrated into the Flynn project's workflow.
There is currently no name for this project, however in the tradition of other make-like tools, it seems like flake (flynn + make) would be a reasonable choice.
Goals
There are 3 goals of the build system:

Functional: Outputs from a package should only depend on its inputs. Given the same inputs, the output should always be the exact same.
Content Addressable: A file should be addressable in a particular state based on its contents and permissions. This means that output files can be cached in order to perform incremental builds. Changes to a file's contents should trigger a rebuild of dependencies.
Pluggable: Allow the build system to plug into a local or remote Flynn cluster to allow parallel builds and utilize a shared build cache.

Design
Dependency graph
Flynn's current build system is tup. Tup creates a DAG of dependencies by using a FUSE file system to monitor file access by subprocesses. This differs from traditional make in that input files do not need to be specified explicitly. The downside is that the FUSE filesystem can be finicky and requires set up. Another downside of tup is that its rule language is unfamiliar to developers coming from a build system like make.
More details of tup's dependency graph can be found in Build System Rules & Algorithms.
A similar approach to dependency graph management will be used in the new build system, however, we would like to avoid FUSE if possible.
FUSE Alternatives
Some alternatives to FUSE have been evaluated:

seccomp(2) - The Secure Computing state allows syscalls to be filtered and trapped. This would allow us to capture read calls from subprocesses within the build and rewrite them as needed. I spent some time trying to implement this but rewriting syscalls is a fairly obscure feature and I haven't had luck with it so far. I attempted to use libseccomp-golang but there's not much documentation so I didn't get far with it. seccomp(2) is also only available on later versions of Linux so this would not be compatible with Mac OS X or Windows.
ptrace(2) - This mechanism would let us trap syscalls from subprocesses similar to how a debugger would trace a program. It would let us build the dependency graph without using a mounted file system and it is cross compatible with Mac OS X. It would let us pause subprocesses in order to pull in dependencies, however, I think our ability to rewrite syscalls is limited.
LD_PRELOAD - This mechanism would let us preload our own implementations of standard library functions into child processes. With the ability to do shared libraries in Go 1.5 we could theoretically inject a shared library into subprocesses to rewrite read() calls in order to load dependencies. This is also available on Mac OS X as DYLD_INSERT_LIBRARIES.

Rule language
Several build systems such as tup, Bazel, and Ant use custom languages to define their build system. This provides extensibility for the build system, however, it also adds significant ramp up for the developer using the system. The Bazel documentation, for example, is nearly 200 pages when printed.
Alternatively there are build systems such as make and Heroku buildpacks which simply piggyback the underlying shell. This makes it very easy for users to get up and running with few surprises.
I suggest we go with the latter approach and provide a thin layer over the shell to make it easy to use. I think a Makefile-like syntax make sense. The build file would be split into two sections: imports & rules
Imports
The imports sections would simply define the dependencies of this build file in a URL format:
import "http://github.com/flynn/go#1.5.1" as go
import "http://github.com/flynn/flannel#9fa40e3" as flannel

Rules
Then rules would be able to utilize those dependencies in a make-style syntax:
bin/flynn-host: go flannel
        go build -o $@ ./host

The shell subprocess created for this target will be injected with one of the FUSE alternatives  (seccomp, ptrace, LD_PRELOAD) in order to determine the dependency graph. This will allow future runs to fetch external dependencies as needed and to only update parts of the dependency graph that have been changed.
Extensibility
make syntax can be limiting so adding a scripting language such as Lua is an option as well.

/cc @titanous

Overall this is great!
It's worth mentioning in the pluggable section that an explicit goal is to be able to point at a Flynn cluster (local or remote) and use it to execute the build in parallel and utilize a shared build cache.
I think we should evaluating Lua as an option for the build language, Tup has this available, and we do use it for the CLI build. Having a full programming language with well-defined semantics and the ability to create project-wide helpers/functions is really useful when building more complicated build rules. If possible I'd like to avoid designing a new build language, as maintaining it and learning it both can have significant overhead.

I updated the description to reflect your notes. :+1:

:+1:  For Lua, it's easy to learn and easy to embed in anything (I assume it's no different for golang) it's also reasonably easy to sandbox Lua if needed.

I've written systems that integrate with Lua before and I can't say that I love the language itself but it has two things going for it: 1) there are pure Go implementations, and 2) it's not JavaScript. :)

This sounds great!
Some questions:

The imports sections would simply define the dependencies of this build file in a URL format

So are the imports just URLs to other build files whose outputs will somehow be exposed to this build (e.g. a tarball extracted into the build's workspace)?
Would we need to know the outputs of a rule like we do with tup, or would any file created by the rule be considered output (e.g. using overlayfs to track changes)? I'm thinking specifically about the example given in #1515; I don't really know upfront what the outputs of bundle install or rake assets:precompile are going to be.
Any thoughts on maintaining a cache? If my Gemfile changes, I need to re-run bundle install, but I would like that to run from the output of the previous bundle install so that gems are cached. Or do you think we would write a Gemfile.lock parser so that the build system is more aware of the dependencies?
Maybe these questions are too specific at this early stage, but I like to think in terms of a real example.

So are the imports just URLs to other build files whose outputs will somehow be exposed to this build (e.g. a tarball extracted into the build's workspace)?

We'll likely need some kind of build file to determine what to do with the output of a tarball if we need to do more than simply extract it. I was thinking that we could reference the files output by a build by using the build's name plus the filename (e.g. go:bin/go).

Would we need to know the outputs of a rule like we do with tup, or would any file created by the rule be considered output.

We'll still need to specify outputs although if we're using Lua then there's flexibility with how that's done. Not every file output from the build step will be an asset we want to keep and use. I'm sure some build steps will have a bunch of temporary files (e.g. .a files).

Any thoughts on maintaining a cache?

The output of the build steps will be content addressable we should only need to rebuild pieces that are invalidated by their dependencies changing. In the specific case of bundle install, I'm not quite sure how we'll try to integrate with bundler's gem caching since it has its own caching mechanism. Unless we can interface with bundler as a mock gem server but that sounds like a lot of work. Trying to rerun bundle install from the previous system state could work but I'm worried about reproducible builds.

Effectively implemented in #3817.

authors: benbjohnson josephglanville lmars titanous


text:
SSL to MySQL from CLI: need to add extra arguments

Which version and edition of Flyway are you using?
Flyway Community Edition 6.4.0 by Redgate
If this is not the latest version, can you reproduce the issue with the latest one as well?
Which client are you using? (Command-line, Java API, Maven plugin, Gradle plugin)
Command-line.
Which database are you using (type & version)?
AWS RDS MySQL 5.7.22.
Which operating system are you using?
 $ cat /etc/os-release
PRETTY_NAME="Devuan GNU/Linux 3 (beowulf)"
NAME="Devuan GNU/Linux"
VERSION_ID="3"
VERSION="3 (beowulf)"
VERSION_CODENAME=beowulf
ID=debian
ID_LIKE=debian
HOME_URL="https://www.devuan.org/"
SUPPORT_URL="https://devuan.org/os/community"
BUG_REPORT_URL="https://bugs.devuan.org/"

What did you do?
What did you expect to see?
What did you see instead?
I've successfully established SSL connection to AWS RDS with Flyway CLI, but I had to edit shell-script https://github.com/flyway/flyway/blob/master/flyway-commandline/src/main/assembly/flyway to add extra arguments:
EXTRA_ARGS=
if $linux; then
  EXTRA_ARGS=-Djava.security.egd=file:/dev/../dev/urandom
fi
EXTRA_ARGS="$EXTRA_ARGS -Djavax.net.ssl.trustStore=~/aws_rds_truststore.jks -Djavax.net.ssl.trustStorePassword=changeit"

if `command -v cygpath > /dev/null`; then CP=`cygpath -pw "$CP"`; fi
"$JAVA_CMD" $JAVA_ARGS $EXTRA_ARGS -cp "$CP" org.flywaydb.commandline.Main "$@"

Could you please add possibility to add arguments without patching your shell script?
For example, by FLYWAY_EXTRA_ARGS:
EXTRA_ARGS=${FLYWAY_EXTRA_ARGS:=}
if $linux; then
  EXTRA_ARGS="$EXTRA_ARGS -Djava.security.egd=file:/dev/../dev/urandom"
fi

Then I will create documentation how to connect Flyway to MySQL with SSL.

Pull request: #2789.

Thanks for reporting this. Ideally we'd like to add built in support for things like this, instead of allowing arbitrary extra arguments, properties, etc. Is this the only reason you'd like the 'extra arg' feature?

@MikielAgutu , yes, right now I need to add SSL support to Flyway CLI only, I see no other reason for this patch.

Have you seen https://github.com/flyway/flyway/issues/1727? Apparently this has come up before a while ago. You can use the JAVA_ARGS environment variable.

@MikielAgutu , JAVA_ARGS looks good! Let me check…

export JAVA_ARGS="-Djavax.net.ssl.trustStore=~/aws_rds_truststore.jks -Djavax.net.ssl.trustStorePassword=changeit"

works fine. Thank you very much!

authors: MikielAgutu vazhnov

repo: flyway/flyway