11965 Commits

Author SHA1 Message Date
Nate
94a7151eb8
Getting rid of containers (#147432)
This pull request aims to make the Flutter framework more efficient,
based on issue #147431.
2024-05-09 16:31:54 -06:00
huycozy
bd44399865
Add Badge example (#148053)
### Demo screenshot

![Screenshot 2024-05-09 at 18 47 21](https://github.com/flutter/flutter/assets/104349824/9ca4c89f-0d0a-48b2-8149-3fae73f54212)

### Related issue
Fixes https://github.com/flutter/flutter/issues/144336
2024-05-09 16:47:16 +00:00
Benji Farquhar
a5e0c2ffe7
Fix ExpandIcon color when ExpansionPanel.canTapOnHeader true (#147097) (#147098)
Fixes https://github.com/flutter/flutter/issues/147097. The expand/collapse icon should not be the disabled color when ExpansionPanel.canTapOnHeader is true because the ExpansionPanel is active, and we may want to keep the icon there as a visual indicator to the user that it is expandable/collapsable.
2024-05-09 15:35:07 +00:00
Michael Goderbauer
26030557b1
Fix semantic debugger (#147953)
This was broken in https://github.com/flutter/flutter/pull/122452. The culprit is that `PipelineOwner.ensureSemantics` doesn't turn on semantics for the entire app, it pretends to only turn it on for the local `PipelineOwner`. Unfortunately, that local `PipelineOwner` is never informed that it should produce semantics when semantics are not turned on globally. So, `PipelineOwner.ensureSemantics` is essentially without effect if semantics are not already turned on globally.

I can't think of a use case where it would be useful to only turn on semantics for a particular pipeline owner and fixing `PipelineOwner.ensureSemantics` would get pretty messy with performance implications even if semantics are turned off. So, this PR deprecates that functionality and moves the `SemanticsDebugger` to the global semantics API.

Fixes https://github.com/flutter/flutter/issues/147665.
2024-05-08 23:12:47 +00:00
Dimil Kalathiya
c97f22ec12
_RenderValueIndicator leak fix used on RangeSlider (#147581)
Part of #141198
*Fixes memory leak on `RangeSlider`*
2024-05-08 19:04:17 +00:00
Valentin Vignal
1a8aeb15ef
Fix memory leaks in context menu (#147822) 2024-05-08 09:57:41 -07:00
Aliasgar Vohra
4d6c00cc2b
🐛 : FIX : Long labels overflowing in extended navigation rail. (#145474)
It has been observed that while in extended navigation rail, if longer labels are given the it is overflowing. Problem identified in "NavigationRail" widget only in case of extended version of it. This PR includes the fix for the same.

Fixes https://github.com/flutter/flutter/issues/110901.

*NO breaking changes.*
2024-05-08 11:05:24 +00:00
Bruno Leroux
86a2613cee
Fix floating SnackBar is not centered when RTL and Material 2 (#147861)
## Description

This PR fixes floating `SnackBar` positioning when the text direction is RTL and the theme uses Material 2.

In https://github.com/flutter/flutter/pull/140215, I fixed the `SnackBar` position for M3/RTL, but while doing so I broke the positioning for M2/RTL... Unfortunately, there was no existing test for this case.
The solution is to not rely on `TextDirection` to compute the `SnackBar` position: the `SnackBar` is centered in both cases so the text direction has no impact on its positioning (it had some impact in the `SnackBar` content, but this is managed correctly).

## Related Issue

Fixes https://github.com/flutter/flutter/issues/147838.

## Tests

Adds 1 test.
2024-05-08 07:34:05 +00:00
Valentin Vignal
ab8b2f7e53
Fix more memory leaks in cupertino page transition (#147907) 2024-05-07 19:07:04 -07:00
LongCatIsLooong
e37b29daa9
Implement computeDryBaseline for RenderChip (#146224)
Also, use `getDryLayout` for the first pass of the `label` layout.  

The computeDryBaseline stuff doesn't have a test because there're asserts making sure it returns the same result as `computeDistanceToActualBaseline`. I have tried adding `+1` to the return expression and `flutter test` fails.
2024-05-08 00:27:59 +00:00
Dimil Kalathiya
4abd7352f8
fixes RawDialogRoute memory leak (#147817)
part of #141198 

- Fixes memory leak on `RawDialogRoute`
- Adds opt-in test
2024-05-07 23:39:56 +00:00
David Iglesias
d7656f2fcf
[web] Use platform detection from Flutter web engine. (#147346)
> [!IMPORTANT]
> Requires the following engine PR:
> * https://github.com/flutter/engine/pull/52380
> ----

This PR refactors Flutter `foundation`'s library `platform` for the web with the same code we use to detect platforms in the engine.

## Issues

* Fixes: https://github.com/flutter/flutter/issues/128943

## Testing

Demo app deployed here:

* https://dit-browser-detect.web.app
2024-05-07 22:44:56 +00:00
LongCatIsLooong
f20c853d20
Implement RenderEditable.computeDryBaseline (#147911)
Missed `RenderEditable` so https://github.com/flutter/flutter/pull/146224 is failing in google3
2024-05-07 21:26:48 +00:00
Taha Tesser
74356f30dd
Introduce TabBar.textScaler for tab label upper text scale limit (#147232)
fixes [Tab is hardcoding the height of the icons and the text ](https://github.com/flutter/flutter/issues/13322)

### Description

This PR introduces `TabBar.textScaler` to provide upper text scale limit for tab label.

### Code sample

<details>
<summary>expand to view the code sample</summary> 

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: MediaQuery(
        data: const MediaQueryData(textScaler: TextScaler.linear(3.0)),
        child: DefaultTabController(
          length: 3,
          child: Scaffold(
            appBar: AppBar(
              title: const Text('Sample'),
              bottom: const TabBar(
                textScaler: TextScaler.linear(2.0),
                tabs: <Widget>[
                  Tab(text: 'Tab 1'),
                  Tab(text: 'Tab 2'),
                  Tab(text: 'Tab 3'),
                ],
              ),
            ),
            floatingActionButton: Builder(builder: (BuildContext context) {
              return FloatingActionButton(
                onPressed: () {
                  print(MediaQuery.textScalerOf(context));
                },
                child: const Icon(Icons.add),
              );
            }),
          ),
        ),
      ),
    );
  }
}
```

</details>

### Without `TabBar.textScaler`
![Screenshot 2024-04-30 at 13 46 10](https://github.com/flutter/flutter/assets/48603081/99db889a-b717-4ddf-b99e-89fdf7edb3ac)

### With `TabBar.textScaler`

```dart
              bottom: const TabBar(
                textScaler: TextScaler.linear(2.0),
                tabs: <Widget>[
                  Tab(text: 'Tab 1'),
                  Tab(text: 'Tab 2'),
                  Tab(text: 'Tab 3'),
                ],
              ),
```

![Screenshot 2024-04-30 at 14 04 22](https://github.com/flutter/flutter/assets/48603081/92216cbb-eb89-4c0a-b2f2-feb6a33a3337)
2024-05-07 20:54:09 +00:00
Mitchell Goodwin
e67e951388
Change dialog font family (#141295)
Fixes #139434.

Changes the font from "Text" to "Display". We should only be using the "Display" font for fonts of size 20 and above. Previously "Display" was not showing correctly so this font being wrong was flying under the radar.

Before:
<img width="315" alt="Screenshot 2024-01-10 at 10 49 26 AM" src="https://github.com/flutter/flutter/assets/58190796/c8beba30-04d2-4c22-86ae-85c0576136ee">

After:
<img width="289" alt="Screenshot 2024-01-10 at 10 52 11 AM" src="https://github.com/flutter/flutter/assets/58190796/c6b33aaf-791c-460e-a640-37d8ddf3f713">
2024-05-07 19:32:47 +00:00
chunhtai
007faa980d
Reapply new PopScope API (#147607)
same as previous but with soft transition on modalroute

## Pre-launch Checklist

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

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
[Data Driven Fixes]:
https://github.com/flutter/flutter/wiki/Data-driven-Fixes
2024-05-07 09:04:49 -07:00
Bruno Leroux
986c5a9d7f
DropdownMenu cleanup (#147860)
## Description

This PR cleans up some typos and formatting issues in `DropdownMenu` implementation.

## Tests

No semantic change.
2024-05-07 07:57:21 +00:00
zhengzeqin
23ae246a2e
fix MenuItemButton if child is null (#147485)
Fix https://github.com/flutter/flutter/issues/147479

Pre-launch Checklist
2024-05-07 02:39:09 +00:00
davidhicks980
d5f70135fe
MultiSelectableSelectionContainerDelegate documentation fixes. (#147843)
Minor grammatical fixes to MultiSelectableSelectionContainerDelegate:

* Removed plural words describing a singular subject.
* Removed redundant language. 
* Elaborated on the behavior of `ensureChildUpdated`.

No issue was filed this was a minor rewording.
2024-05-06 23:14:52 +00:00
Valentin Vignal
f3978c7a46
Fix janks and memory leaks in CupertinoPageTransition and CupertinoFullscreenDialogTransition (#146999) 2024-05-06 14:26:00 -07:00
Karel Klíč
f94b1e1fc8
Fix Tooltip.decoration comment (#147858)
Tooltip decoration's comment had the backgrounds for Brightness.dark and Brightness.light swapped.
2024-05-06 13:13:19 +00:00
Valentin Vignal
459df3c62d
Fix memory leaks in CupertinoSwitch (#147821) 2024-05-04 18:33:42 -07:00
Valentin Vignal
02d239a098
Reland fix memory leaks for tab selector (#147689) 2024-05-04 18:23:39 -07:00
Kostia Sokolovskyi
145e94018c
Fix memory leak in ExpansionTile. (#147596) 2024-05-04 18:19:29 -07:00
Dimil Kalathiya
c1cafcce12
fixes SearchAnchor leak (#147652) 2024-05-03 09:34:11 -07:00
Bruno Leroux
99876ba2ce
Always relies on floatingLabelStyle when FloatingLabelBehavior.always (#147374)
## Description

With this PR, when `InputDecorator.floatingLabelBehavior` is set to `FloatingLabelBehavior.always` the label style is always set to `InputDecorator.floatingLabelStyle`, previously `InputDecorator.labelStyle` was used when the field was not focused or was empty.  

## Related Issue

Fixes https://github.com/flutter/flutter/issues/147231

## Tests

Adds 1 test for this particular issue and several missing tests.
2024-05-03 15:16:05 +00:00
drown0315
cfeb76e0e6
Improved documentation for SpringSimulation (#146674)
Add a code snippet demonstrating the usage of SpringSimulation in the docs.
Improve the descriptions of each argument in SpringDescription.
2024-05-03 08:48:18 +00:00
Nate
7436cc25eb
Add default arguments to AnimatedPhysicalModel (#147424)
Currently, `PhysicalModel` has [default arguments](2e806700b9/packages/flutter/lib/src/widgets/basic.dart (L1093)) for `shape` and `elevation`, but `AnimatedPhysicalModel` [does not](2e806700b9/packages/flutter/lib/src/widgets/implicit_animations.dart (L1998)).

This pull request makes both classes consistent.
2024-05-02 21:59:07 +00:00
LongCatIsLooong
f76eda1e7f
_RenderDecorator.computeDryBaseline (#146365)
Depends on https://github.com/flutter/flutter/pull/146363

No test because the consistency of the `computeDryBaseline` implementations is checked at paint time.
2024-05-02 20:56:11 +00:00
auto-submit[bot]
706f39b0a0
Reverts "Implement computeDryBaseline for RenderWrap (#146260)" (#147692)
Reverts: flutter/flutter#146260
Initiated by: chingjun
Reason for reverting: Broke internal tests. See b/338308016
Original PR Author: LongCatIsLooong

Reviewed By: {goderbauer}

This change reverts the following previous change:
2024-05-02 02:26:28 +00:00
LongCatIsLooong
ab8ecd5e74
Implement getDryBaseline for Stack and Overlay (#146253) 2024-05-02 00:31:12 +00:00
LongCatIsLooong
88ffd89685
Implement computeDryBaseline for RenderWrap (#146260) 2024-05-01 22:39:08 +00:00
Ian Hickson
db4dfa0dde
Remove obsolete performance analysis tools. (#147663)
We're unlikely to support these reliably going forward.
2024-05-01 22:05:02 +00:00
PurplePolyhedron
68f8b536e2
fix DropdownMenu overflow (#147233)
fix `DropdownMenu` overflow issue in  https://github.com/flutter/flutter/issues/147076 and https://github.com/flutter/flutter/issues/147173
However I believe the the menu placement issue in https://github.com/flutter/flutter/issues/147076 is a separate issue. It is not fixed here.

fixes https://github.com/flutter/flutter/issues/147173
2024-05-01 21:24:58 +00:00
Renzo Olivares
5181086fac
Fix TextField horizontal drag conflicts (#147341)
Currently on iOS `TextField` horizontal drag gestures will have precedence over parent horizontal drag gestures when competing with each other because the default `touchSlop` value used by `TextField` to calculate whether the threshold for a drag has been met is the same as the one used by parent horizontal drag gestures like `PageView`, and other `Scrollable`s. The default value is `18.0`, and because the `TextField` receives the `PointerEvent` first in this scenario, it always declares victory before any parent horizontal drag gestures has the chance to.

Native iOS behavior: The parent horizontal drag gestures will always win unless the drag originated on the cursor (collapsed selection), in that case the TextField cursor drag gestures will win.

This change:
* Introduces `BaseTapAndDragGestureRecognizer.eagerVictoryOnDrag` which can be used to configure the recognizer to declare victory immediately when it detects a drag, or when disabled it will wait until it is the last recognizer in the arena before declaring victory. The default behavior is that it declares victory immediately when the drag is detected.
* Eliminates the iOS cursor drag logic from `TextSelectionGestureDetector`, this logic is now delegated to the selection handle overlay which already had this logic in place.
* Enables iOS cursor to always beat other drag gestures by setting the touch slop lower.
* Disables `eagerVictoryOnDrag` for iOS to allow for parent drag gestures to win and match native behavior.

Fixes #124421, Fixes #130198, Fixes #142624, Fixes #142447, Fixes #127017
2024-05-01 20:51:54 +00:00
Nate
586e1fce1b
flutter/lib/src/: refactoring if-chains into switch expressions (#147472)
Cleans up some code by porting if chains to switch statements.
2024-05-01 12:58:35 -07:00
auto-submit[bot]
5a41e1edac
Reverts "Draggable feedback positioning (#145647)" (#147658)
Reverts: flutter/flutter#145647
Initiated by: jmagman
Reason for reverting: Failing draggable_test in post-submit.
Original PR Author: timcreatedit

Reviewed By: {justinmc, goderbauer}

This change reverts the following previous change:
We changed the coordinates used to position the `Draggable` feedback by transforming them into the `Overlay`s coordinate space. This has no influence on any untransformed `Overlay`, most Flutter apps should be not affected. 
This PR fixes the positioning of the feedback in transformed context (see #145639 for before video):

https://github.com/flutter/flutter/assets/42270125/df34e198-0667-453d-a27a-a79b2e2825a1

- fixes #145639
2024-05-01 18:26:27 +00:00
Tim Lehmann
5f9e069111
Draggable feedback positioning (#145647)
Fixes a calculation in Draggable that was previously wrong when the target was transformed.
2024-05-01 09:56:23 -07:00
Ellet
8bf614f181
Update reorderable_list.dart to use Dart 3 return switch statement for consistency (#147505)
*Update `reorderable_list.dart` from `widgets` to use Dart 3 return switch statement syntax for consistency.*

This just a syntax change to match the rest of the functions in this file
2024-05-01 16:03:08 +00:00
Kostia Sokolovskyi
d33bb8fa5e
Add tests for single_activator.0.dart API example. (#147426)
This PR contributes to https://github.com/flutter/flutter/issues/130459

### Description
- Fixes name of the `examples/api/lib/widgets/shortcuts/single_activator.single_activator.0.dart`
- Adds tests for `examples/api/lib/widgets/shortcuts/single_activator.0.dart`
2024-05-01 14:52:57 +00:00
auto-submit[bot]
abbaaea8a1
Reverts "Fix memory leak in TabPageSelector (#147403)" (#147622)
Reverts: flutter/flutter#147403
Initiated by: chingjun
Reason for reverting: Causing an internal test to fail, see b/338159496 for details
Original PR Author: ValentinVignal

Reviewed By: {polina-c}

This change reverts the following previous change:
Part of https://github.com/flutter/flutter/issues/141198
2024-05-01 05:32:19 +00:00
chunhtai
3e399c1578
Revert "add a new PopScope.onPopWithResultInvoke widget to replace Po… (#147597)
…pScope.onPopInvoke (#147016)"

This reverts commit 8031a3e30cf4adc13bedea0aa44c05a1cf8aa852.

Needs to migrate flutter_eval

## Pre-launch Checklist

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

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
[Data Driven Fixes]:
https://github.com/flutter/flutter/wiki/Data-driven-Fixes
2024-04-30 13:25:24 -07:00
Valentin Vignal
af270935bb
Fix memory leak in TabPageSelector (#147403) 2024-04-30 10:35:22 -07:00
Amir Panahandeh
b176bce22b
Add configurable hitTestBehavior to Scrollable (#146403)
This PR adds `hitTestBehavior` to Scrollable as a configurable member.

- https://github.com/flutter/flutter/issues/146401
2024-04-29 22:46:06 +00:00
Taha Tesser
7ff31a4f7a
Fix wide DatePicker input mode button padding for Material 3 (#147236)
fixes [Wide `DatePickerDialog` "Switch to input" button has no margin from dialog side](https://github.com/flutter/flutter/issues/141338)

### Description
Currently, there is no material design token for the input mode button padding. This PR fixes the padding by taking date picker side padding values into account.

![specs](https://github.com/flutter/flutter/assets/48603081/4d946d57-1e00-4b11-b414-0788a20fe0cb)

### Code sample

<details>
<summary>expand to view the code sample</summary> 

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: Builder(builder: (BuildContext context) {
            return ElevatedButton(
              onPressed: () {
                showDatePicker(
                  context: context,
                  initialDate: DateTime.now(),
                  firstDate: DateTime.utc(2010),
                  lastDate: DateTime.utc(2030),
                );
              },
              child: const Text('Show Date Picker'),
            );
          }),
        ),
      ),
    );
  }
}

```

</details>

### Before
![before](https://github.com/flutter/flutter/assets/48603081/e3a70179-540f-4307-b996-7cf35d28adbc)

### After
![after](https://github.com/flutter/flutter/assets/48603081/c65a2d1d-b0ae-4969-868e-e64f5c845fcb)
2024-04-29 22:14:01 +00:00
zhengzeqin
aabe53ca36
[Fix]: showDateRangePicker with "large" helpText cutoffs the save button (#146049)
Fix https://github.com/flutter/flutter/issues/146039

Pre-launch Checklist
2024-04-29 18:18:06 +00:00
Taha Tesser
257df5ebfc
Add ability to disable FloatingActionButton scale and rotation animations using FloatingActionButtonAnimator.noAnimation (#146126)
fixes [[Proposal] Allow disabling the scaling animation of the FloatingActionButton](https://github.com/flutter/flutter/issues/145585)

### Using default `FloatingActionButton` animations

![ScreenRecording2024-04-02at16 19 03-ezgif com-video-to-gif-converter](https://github.com/flutter/flutter/assets/48603081/627ea564-7f60-4eb4-bed9-95c053ae2f56)

### Using `FloatingActionButtonAnimator.noAnimation`

![ScreenRecording2024-04-02at16 17 20-ezgif com-video-to-gif-converter](https://github.com/flutter/flutter/assets/48603081/d0a936ea-9e16-4225-8dc4-40a11ee8a975)
2024-04-29 08:26:19 +00:00
Dimil Kalathiya
1189d44240
Fix _RenderValueIndicator leak (#147451) 2024-04-27 17:30:58 -07:00
Kostia Sokolovskyi
9230b0e820
Add tests for character_activator.0.dart API example. (#147384)
This PR contributes to https://github.com/flutter/flutter/issues/130459

### Description
- Adds `examples/api/lib/widgets/shortcuts/character_activator.0.dart` test
- Fixes the description of the `examples/api/lib/widgets/shortcuts/character_activator.0.dart` example
2024-04-26 22:26:14 +00:00
Dimil Kalathiya
cc9ac7d13c
fixes CupertinoFullscreenDialogTransition leaks (#147168) 2024-04-26 13:19:31 -07:00