12143 Commits

Author SHA1 Message Date
Matthias Ngeo
c11ff3bbd8
Fix missing [ in docs (#151091)
This is a trivial fix for a typo in the docs.
2024-07-01 17:49:49 +00:00
Tim Lehmann
f5b671aac7
Draggable feedback positioning (#149040)
Reopened after revert in #147658

Another test was added in the meantime to `draggable_test.dart` that
didn't call `gesture.up()`. I added this call to the test and now all
tests pass.

---
# Original Description (#145647):
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 

## 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] 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].

<!-- 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

---------

Co-authored-by: Jesper Bellenbaum <ayu4ger@gmail.com>
2024-06-28 11:14:20 -07:00
hangyu
5bf0192f58
[a11y] Reland [#149375 ] Update semantics in dropdown.dart (#150578)
issue: https://github.com/flutter/flutter/issues/117997 

This is a partial reland of
https://github.com/flutter/flutter/pull/149375 with updated g3fix
cl/642457545
## 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/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#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/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2024-06-27 10:52:48 -07:00
Yegor
ef34436402
add onFocus to text fields (#150648)
Adds `onFocus` support to Cupertino and Material text field widgets (similar to https://github.com/flutter/flutter/pull/142942).
2024-06-27 14:38:32 +00:00
Ricardo Boss
805d79607e
Copy any previous IconThemeData instead of overwriting it in CupertinoButton (#149777)
This changes how the `IconThemeData` is passed to the child of `CupertinoButton`.

Previously, it would derive the foreground color from the current theme and create a new `IconThemeData` object.
This causes any `IconThemeData` to be overwritten.

This change uses `IconTheme.of` to get the currently applied icon theme and only overwrites the properties provided by the `CupertinoButton` instead of the whole object.

Fixes #149172.
2024-06-27 03:53:58 +00:00
Hans Muller
e4c18b702a
Improve the behavior of scrollbar drag-scrolls triggered by the trackpad (#150275)
Corrects some problems related to trackpad scrolls introduced by https://github.com/flutter/flutter/pull/146654.

Fixes https://github.com/flutter/flutter/issues/149999
Fixes #150342
Fixes https://github.com/flutter/flutter/issues/150236
2024-06-27 00:50:26 +00:00
FernTheDev
e706d7d0b7
feat: Add autofocus for MenuItemButton (#139396)
MenuAnchor for Material 3 is great for contextual menus but there are some minor issues related to accessibility.
This PR aims to close the gap by adding `autofocus` to the menu item button so keyboard navigation is more intuitive. Otherwise, it becomes a mess to navigate through just keyboards.

Partially resolves #139395

## Additional Notes

I should mention, I have not written tests for this due to it's trivial nature. I also lack the experience of writing Flutter tests in general, so if someone feels inclined to take over this PR and add it they're welcome to.
2024-06-27 00:46:40 +00:00
Michael Goderbauer
776efc20d8
Adding @docImports to the animation library (#150798)
Part of https://github.com/flutter/flutter/issues/150800.

I turned on the `comment_references` lint and looked at what needed fixing inside of the `animation` library.

There are a couple of places where for some reason adding a docImport didn't fix the `comment_references` warning:
2024-06-26 23:12:05 +00:00
Bruno Leroux
00419bfb24
Reland fix inputDecorator hint color on M3 (#150278)
## Description

This PR is a partial reland of https://github.com/flutter/flutter/pull/148944 which was reverted in https://github.com/flutter/flutter/pull/149448.
It makes the `InputDecoration.hintText` colors compliant with the M3 spec.
The initial PR also changed the font style, I will land the font change in another PR to better track the golden changes.

## Related Issue

Related to the color part of https://github.com/flutter/flutter/issues/148787.

## Tests

Updates several tests.
2024-06-25 21:42:59 +00:00
Bruno Leroux
8950c26f2b
Fix collapsed InputDecorator minimum height (#150770)
## Description

This PR sets a minimal height for collapsed `InputDecoration`. 

Before this PR the minimum height was 0. On desktop, due to visual density reducing the height by 8 pixels, it leads to a collapsed text field height being too small to fit the input text vertically.
The following screenshot shows a default collapsed M3 TextField on macOS. On M3 the font style is 16px with a 1.5 height, so the input height is 24. The decoration height is 16 because of the visual density reduction (this results in the border being misplaced, some letters overflowing and the cursor overflowing).

![image](https://github.com/flutter/flutter/assets/840911/0c854510-9d10-40a7-9a7e-8aa109f418e2)

After this PR, the minimum height is the input height.

![image](https://github.com/flutter/flutter/assets/840911/fcc67270-fd19-46ed-a2c2-55406f953e97)

## Related Issue

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

## Tests

Adds 4 tests, updates 2.
2024-06-25 20:52:08 +00:00
Victor Sanni
f89c7c7505
Add focusNode, focusColor, onFocusChange, autofocus to CupertinoButton (#150721)
Before:



https://github.com/flutter/flutter/assets/77553258/e7ed7af0-03ab-4a7d-98dd-be1ce4e9c7da

After:



https://github.com/flutter/flutter/assets/77553258/ca93fc67-1816-4e18-b0c5-130975c7f06b



Fixes #144385

## 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].
- [ ] 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].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#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/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md

---------

Co-authored-by: Taha Tesser <tessertaha@gmail.com>
2024-06-25 12:25:02 -07:00
Greg Price
e5a35f458f
Document RenderObject._relayoutBoundary and its invariant; small refactors (#150527)
Fixes part of #150524.

Recently I was studying RenderObject and related code to understand
how the rendering library tracks which objects need layout, and in
particular just how the concept of "relayout boundary" works.
The [RenderObject._relayoutBoundary] property itself had no docs,
and there were some other areas that I felt could be clearer;
so here's a PR where I add those docs.

In addition to docs, this makes some small pure refactors.  Mostly
those are in order to make clear docs easier to write.  One rename
is to fix a lone straggler from #4425 / #4483.

One key thing I learned, which this documents, is an invariant that
this code maintains on [_relayoutBoundary].  With that invariant in
mind, I found it's possible to simplify that bookkeeping, and to get a
measurable performance improvement as a bonus.  To keep things simple,
though, I'll leave those for follow-up PRs.

For ease of review, the PR is broken into several commits each with
their own commit message.
2024-06-25 18:27:38 +00:00
foxmind1
adef612ff4
fix a typo (#150682)
fix typo

*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].*
2024-06-25 17:51:51 +00:00
Samuel Wrenn
b8211b3d94
Fix link in RenderObjectWidget doc comment (#150600)
Fix a link in the `RenderObjectWidget` doc comment. The comment recommends subclassing `SingleChildRenderObjectElement` where it means to recommend subclassing `SingleChildRenderObjectWidget`.

Fixes #150597.
2024-06-25 17:45:55 +00:00
Huy
47689616a9
Add an example for CupertinoPopupSurface (#150357)
### Demo

https://github.com/flutter/flutter/assets/104349824/61cd4c96-e01e-4fad-b270-acd7bb55d995

### Related issue

Fixes https://github.com/flutter/flutter/issues/150353
2024-06-25 11:20:34 +00:00
Michael Goderbauer
d2b42d8c13
Linkify 'see also' sections (#150734)
Follow-up to https://github.com/flutter/flutter/pull/150540.

Fixes https://github.com/flutter/flutter/issues/150562.
2024-06-24 23:52:12 +00:00
Parker Lougheed
d7af9314b3
Update flutter.dev links from framework to more permanent destinations (#150531)
The final framework PR contributing to https://github.com/flutter/website/issues/10363.
2024-06-24 21:36:23 +00:00
Sam Rawlins
b9a6ede8ff
Fix a number of broken doc comment references (#150540)
Work towards https://github.com/flutter/flutter/issues/150562
2024-06-24 18:26:54 +00:00
Matt Carroll
1cb003b8fb
Fix: Memory leak in UndoHistory widget because it never de-registered itself as global UndoManager client (Resolves #148291) (#150661)
Unsets a global `client` variable that was missed.
2024-06-22 16:41:39 -07:00
Tong Mu
88e6f62974
[CupertinoActionSheet] Fix the layout (part 1) (#149636)
This PR fixes the general layout of `CupertinoActionSheet` to match the native behavior.

This PR adjusts the height of buttons, the height of the content section, the gap between the cancel button and the main sheet, and most importantly, the maximum height of the action sheet.

The maximum height is the trickiest part. I tried to figure out a rule, and found that the top padding only depends the type of the device - notch-less, notch, capsule - but there isn't a clear rule that can unify the 3 padding numbers. This PR uses linear interpolation as a heuristic algorithm. See the in-code comment for details. 
* What about iPad? Well, action sheets look completely different on iPad, more similar to a drop down menu. This might be fixed in the future.

### Tests

Among all the test changes, there are a few tests that have been converted to using `AnimationSheetRecorder` to verify the animation changes. Before the PR they were checking the height at each from, which is hard to reason whether a change makes sense, and hard to modify if anything needs changing.

### Result demo

The following images compares native(left) with Flutter after PR (right) by stacking them closely, and show that their layout really match almost pixel perfect.

<img width="455" alt="image" src="https://github.com/flutter/flutter/assets/1596656/f8be35bd-0da5-4908-92f7-7a1f4e999229">

_No notch (iPhone 13)_

<img width="405" alt="image" src="https://github.com/flutter/flutter/assets/1596656/54a37c2f-cd99-4e3b-86f0-045b1dfdbbb8">

_Notch (iPhone 13)_

<img width="385" alt="image" src="https://github.com/flutter/flutter/assets/1596656/546ab529-0b62-4e3d-9019-ef900d3552e5">

_Capsule (iPhone 15 Plus)_

<img width="1142" alt="image" src="https://github.com/flutter/flutter/assets/1596656/e06b6dac-dbcd-48f7-9dee-83700ae680e0">

_iPhone 13 landscape_

<img width="999" alt="image" src="https://github.com/flutter/flutter/assets/1596656/698cf530-51fc-4906-90a5-7a3ab626f489">

_All "capsule" devices share the same top padding in logical pixels (iPhone 15 Pro Max, iPhone 15 Pro, iPhone 15 Plus)_
2024-06-22 17:24:39 +00:00
hangyu
d4cffa2540
[a11y] Update semantics in bottom_navigation_bar.dart (#150576)
issue: https://github.com/flutter/flutter/issues/117997

## 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/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#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/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2024-06-21 14:48:41 -07:00
Tong Mu
123e33b87c
Reland 4: [CupertinoActionSheet] Match colors to native (#150442)
Relands https://github.com/flutter/flutter/pull/149568 (first attempt) or https://github.com/flutter/flutter/pull/150386 (latest attempt), which was reverted in https://github.com/flutter/flutter/pull/150413 due to a one-pixel difference on the debug banner (in the tilted border of the rotated text).

This attempt removed the debug banner from tests (see 31cbcb1dc6).

<img width="949" alt="image" src="https://github.com/flutter/flutter/assets/1596656/78f26f72-b69f-41ee-9134-2e2a9e8e1bdd">
2024-06-21 20:41:10 +00:00
Renzo Olivares
20459dda0d
Enable SelectionArea double tap/triple tap gesture support for mobile platforms (#149295)
This change enables double tap / triple tap support in SelectionArea for mobile platforms:
Android / Fuchsia: 
- On native, these platforms allow for double tap / double tap + drag to select word-by-word.
- On web using touch, these platforms only support double tap to select word.
- On web and native using a mouse, these platforms support double click / double click + drag to select word-by-word, and triple click / triple click + drag to select paragraph-by-paragraph.

iOS:
- On native, these platforms allow for double tap / double tap + drag to select word-by-word.
- On web using touch, these platforms do not support double tap/triple tap gestures.
- On web using touch, these platforms allow support double tap + drag gestures.
- On web and native using a mouse, these platforms support double click / double click + drag to select word-by-word, and triple click / triple click + drag to select paragraph-by-paragraph.

Part of: https://github.com/flutter/flutter/issues/129583
2024-06-21 18:47:20 +00:00
Limane Gaya
9056c0b192
made SelectionArea alignment consistent between web and other platform (#150037)
Currently, when text is placed inside a SelectionArea widget that's nested within a Column widget, it results in misalignment, causing the text to appear centered instead of aligned as intended.

This was originally #149552 but had issues with my branch.

*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.*
Fixes #148934 
Fixes #121053 

*If you had to change anything in the [flutter/tests] repo, include a link to the migration guide as per the [breaking change policy].*
2024-06-21 16:41:14 +00:00
Bruno Leroux
4b0c8414fc
Make popup menu hardcoded padding configurable (#150506)
## Description

This PR exposed `PopupMenuButton.menuPadding` parameter to override the hardcoded value.

Credits to @Moluram for the original PR https://github.com/flutter/flutter/pull/81996.
And to @arafaysaleem for the update in https://github.com/flutter/flutter/pull/96657.

https://github.com/flutter/flutter/pull/96657 was reverted due to a Google testing failure. `PopupMenuButton` implementation has evolved since that time so maybe we will not hit this Google testing failure. And if we do, we will try to figure out what is going on.

## Related Issue

Fixes https://github.com/flutter/flutter/issues/143512.
Fixes https://github.com/flutter/flutter/issues/57110

## Tests

Adds 2 tests, updates several tests.
2024-06-20 19:18:21 +00:00
davidhicks980
c2c183387e
[material/menu_anchor.dart] Remove _MenuAnchorState from parent when disposed. (#149586)
`_MenuAnchorState` now removes itself from its parent regardless of whether `_MenuAnchorState._isOpen` is true.

Before, _MenuAnchorState would only detach itself when `_MenuAnchorState._isOpen == true`. This led to _MenuAnchorState being retained until an anchor's parent was disposed.

Before:

https://github.com/flutter/flutter/assets/59215665/48f1617a-a3d0-49ab-a767-f41e3a30ea41

After:

https://github.com/flutter/flutter/assets/59215665/31312bb6-49ec-4083-b8de-e9ae2a42a8b3

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

I was a bit unsure what the best way of testing this change would be, and wanted feedback from the Flutter team. Is there a way for us to view at the instance count of `_MenuAnchorState`, or expose `_MenuAnchorState._anchorChildren.length` for testing?

- [] I added new tests to check the change I am making, or this PR is [test-exempt].
2024-06-20 18:10:05 +00:00
derdilla
0674f46e9f
Test InputDecoration API examples (#148560)
Add tests for `InputDecoration` API example as part of #130459. Updates examples that use the deprecated MaterialState to use WidgetState. Tests files: `input_decoration.0.dart`, `input_decoration.1.dart`, `input_decoration.2.dart`, `input_decoration.3.dart`, `input_decoration.widget_state.0.dart`, `input_decoration.widget_state.1.dart`, `input_decoration.prefix_icon_constraints.0.dart`, `input_decoration.suffix_icon_constraints.0.dart`, and `input_decoration.label.0.dart`
2024-06-20 16:02:07 +00:00
hangyu
835ff2045c
Revert "[a11y] Add semantics: button to bottom navigation bar items and dropdown menu items" (#150445)
Reverts flutter/flutter#149375
Because it failed a g3 integration testing. b/347867286
2024-06-18 15:58:10 -07:00
Hasan M. Hallak
f54dfcd27d
add forceErrorText to FormField & TextFormField. (#132903)
Introducing the `forceErrorText` property to both `FormField` and `TextFormField`. With this addition, we gain the capability to trigger an error state and provide an error message without invoking the `validator` method.

While the idea of making the `Validator` method work asynchronously may be appealing, it could introduce significant complexity to our current form field implementation. Additionally, this approach might not be suitable for all developers, as discussed by @justinmc  in this [comment](https://github.com/flutter/flutter/issues/56414#issuecomment-624960263).

This PR try to address this issue by adding `forceErrorText` property allowing us to force the error to the `FormField` or `TextFormField` at our own base making it possible to preform some async operations without the need for any hacks while keep the ability to check for errors if we call `formKey.currentState!.validate()`.

Here is an example:

<details> <summary>Code Example</summary>  

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

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

class MyHomePage extends StatefulWidget {
  const MyHomePage({
    super.key,
  });

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final key = GlobalKey<FormState>();
  String? forcedErrorText;

  Future<void> handleValidation() async {
    // simulate some async work..
    await Future.delayed(const Duration(seconds: 3));

    setState(() {
      forcedErrorText = 'this username is not available.';
    });

    // wait for build to run and then check.
    //
    // this is not required though, as the error would already be showing.
    WidgetsBinding.instance.addPostFrameCallback((_) {
      print(key.currentState!.validate());
    });
  }

  @override
  Widget build(BuildContext context) {
    print('build');
    return Scaffold(
      floatingActionButton: FloatingActionButton(onPressed: handleValidation),
      body: Form(
        key: key,
        child: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Padding(
                padding: const EdgeInsets.symmetric(horizontal: 30),
                child: TextFormField(
                  forceErrorText: forcedErrorText,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
```
</details>

Related to #9688 & #56414.

Happy to hear your thoughts on this.
2024-06-18 17:52:21 +00:00
Taha Tesser
33599006e7
Fix transparent dividerColor breaks TabBar.tabAlignment (#150350)
fixes [`TabBar.tabAlignment` property does't work when `dividerColor` is transparent](https://github.com/flutter/flutter/issues/150316)

### 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: DefaultTabController(
        length: 2,
        child: Scaffold(
          appBar: AppBar(
            title: const Text('TabBar'),
            bottom: const TabBar(
              dividerColor: Colors.transparent,
              tabAlignment: TabAlignment.start,
              isScrollable: true,
              tabs: <Widget>[
                Tab(text: 'TAB 1'),
                Tab(text: 'TAB 2'),
              ],
            ),
          ),
          body: const TabBarView(
            children: <Widget>[
              SizedBox.expand(),
              SizedBox.expand(),
            ],
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: () {},
            child: const Icon(Icons.add),
          ),
        ),
      ),
    );
  }
}
```

</details>

### Before (`dividerColor: Colors.transparent`, `tabAlignment: TabAlignment.start`)

![Screenshot 2024-06-17 at 15 44 33](https://github.com/flutter/flutter/assets/48603081/a60e88c7-fd99-4444-b7e5-1bceacc22f4c)

### After (`dividerColor: Colors.transparent`, `tabAlignment: TabAlignment.start`)

![Screenshot 2024-06-17 at 15 44 55](https://github.com/flutter/flutter/assets/48603081/aa003d65-107f-4618-be29-095ab2660374)
2024-06-18 12:05:05 +00:00
Taha Tesser
a9f554ac39
Fix scrollable TabBar jittering (#150041)
fixes [TabBar with isScrollable set to true is broken](https://github.com/flutter/flutter/issues/150000)

This regressed due to a tiny mistake in https://github.com/flutter/flutter/pull/146293

### Code sample

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

```dart
import 'dart:ui';

import 'package:flutter/material.dart';

/// Flutter code sample for [TabBar].

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

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: TabBarExample(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    final List<Tab> tabs =
        List<Tab>.generate(20, (int index) => Tab(text: 'Tab $index'));

    return ScrollConfiguration(
      behavior: ScrollConfiguration.of(context)
          .copyWith(dragDevices: <PointerDeviceKind>{
        PointerDeviceKind.touch,
        PointerDeviceKind.mouse,
      }),
      child: DefaultTabController(
        length: tabs.length,
        child: Scaffold(
          appBar: AppBar(
            title: const Text('TabBar Sample'),
            bottom: TabBar(
              isScrollable: true,
              tabs: tabs,
              tabAlignment: TabAlignment.start,
            ),
          ),
          body: TabBarView(
            children: <Widget>[
              for (int i = 0; i < tabs.length; i++)
                Center(
                  child: Text('Page $i'),
                ),
            ],
          ),
        ),
      ),
    );
  }
}

```

</details>

### Before

https://github.com/flutter/flutter/assets/48603081/b7aa98a2-a6a5-431e-8327-859a11efa129

### After

https://github.com/flutter/flutter/assets/48603081/0435719f-03d4-4d76-8b5a-532894fcf4a3
2024-06-18 08:30:21 +00:00
auto-submit[bot]
639910720c
Reverts "Reland 3: [CupertinoActionSheet] Match colors to native (#150386)" (#150413)
Reverts: flutter/flutter#150386
Initiated by: andrewkolos
Reason for reverting: the Mac framework_tests_impeller check has been failing (due to golden test failures) since this PR (though it occasionally passes after retry). Taking a brief look at this PR, it looks like there's been some troubles with goldens in the past (though the recent failures appear very different to past ones). Regardless, I'm taking a shot at getting the tree green again by reverting this. Apologies i
Original PR Author: dkwingsmt

Reviewed By: {chunhtai}

This change reverts the following previous change:
Relands https://github.com/flutter/flutter/pull/149568 (first attempt) or https://github.com/flutter/flutter/pull/150129 (latest attempt), which was reverted in https://github.com/flutter/flutter/pull/150142 due to unverified golden tests post-commit from recent infra issues.

No code is changed from https://github.com/flutter/flutter/pull/150129.

The relevant golden files have been resubmitted in https://github.com/flutter/flutter/pull/150219. I expect these files to appear in the golden file checker in this PR (which will hint that this PR is safe.) Fingers crossed.
2024-06-18 07:22:18 +00:00
PurplePolyhedron
c1a6a631fd
Fix typo in SliverLayoutDimensions.hashCode where not all properties are used in the hash code. (#150306)
https://github.com/flutter/flutter/issues/150305
fix typo in `SliverLayoutDimensions.hashCode` where not all properties are used in the hash code.
2024-06-17 22:34:20 +00:00
Sam Rawlins
cf375f0dfb
Fix doc comment references to 'this' (#150379)
Work towards https://github.com/dart-lang/dartdoc/issues/3761

Sibling CL to https://dart-review.googlesource.com/c/sdk/+/365204

The analyzer has never recognized `[this]` as a valid doc comment
reference (and the `comment_references` lint rule has similarly
reported such reference attempts). dartdoc has its own algorithms
for resolving comment references, which we are dismantling in favor
of a single resolution, provided by the analyzer.

We've also decided against adding support in the analyzer (see
https://github.com/dart-lang/linter/issues/2079), so these
reference attempts should be re-written.

## 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].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#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/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2024-06-17 15:10:21 -07:00
Tong Mu
e0ddad034b
Reland 3: [CupertinoActionSheet] Match colors to native (#150386)
Relands https://github.com/flutter/flutter/pull/149568 (first attempt) or https://github.com/flutter/flutter/pull/150129 (latest attempt), which was reverted in https://github.com/flutter/flutter/pull/150142 due to unverified golden tests post-commit from recent infra issues.

No code is changed from https://github.com/flutter/flutter/pull/150129.

The relevant golden files have been resubmitted in https://github.com/flutter/flutter/pull/150219. I expect these files to appear in the golden file checker in this PR (which will hint that this PR is safe.) Fingers crossed.
2024-06-17 21:52:31 +00:00
hangyu
21a12f6c99
[a11y] Add semantics: button to bottom navigation bar items and dropdown menu items (#149375)
issue: https://github.com/flutter/flutter/issues/117997
2024-06-17 21:16:14 +00:00
flyboy
64b99b5235
Reland "sliverGridDelegate mainAxisExtent add assert (#148470)" (#149720)
Reland: https://github.com/flutter/flutter/pull/148470
Fixes https://github.com/flutter/flutter/issues/138871
2024-06-17 19:59:06 +00:00
Qun Cheng
17eda50ad6
ScaffoldBackgroundColor should default to ColorScheme.surface (#149772)
`ThemeData.ScaffoldBackgroundColor` originally defaults to `ColorScheme.background`. As background in ColorScheme is deprecated, customizing background is not able to change scaffold background color. This PR is to make `scaffoldBackgroundColor` defaults to `ColorScheme.surface` which is the replacement of `ColorScheme.background`.

Fixes https://github.com/flutter/flutter/issues/149158
2024-06-17 19:53:04 +00:00
Kate Lovett
9b6813f4da
Reland TreeSliver (#149839)
Reland of https://github.com/flutter/flutter/pull/147171

It was reverted for a failing unit test that had passed in presubmit. Hopefully this sticks better.
Also fixed leaks in 37b10adc90
2024-06-17 19:49:05 +00:00
Tong Mu
d86448f965
Reland: [CupertinoActionSheet] Add sliding tap gesture (#150219)
Relands https://github.com/flutter/flutter/pull/149471. 

As explained in https://github.com/flutter/flutter/pull/150147, the original PR was reverted in an attempt to fix the strange golden file failure that occurred in other PRs.

The following code is changed:
* The two tests that contain golden tests are changed so that, they used to slide from button 1 to button 2, now they slide from button 2 to button 1. This is to ensure the golden file record are updated.
2024-06-17 19:28:08 +00:00
Kate Lovett
62586dc09d
Update old wiki links (#149544)
Part of https://github.com/flutter/flutter/issues/145009

Finishes updating links in the repo that pointed to the old wiki
2024-06-17 17:26:08 +00:00
Victor Sanni
1c77696615
Make CupertinoTextField respect decoration color when disabled (#149774)
#83531 contains complaints that this default disabled color can no longer be overridden by setting a color of the `decoration` property. This regression was introduced by #78058, which was itself made to fix an issue where the color of the decoration was always used even when disabled.

Currently, when the text field is disabled, its color is set to a default disabled color. This PR makes it so that if a decoration is set when the text field is disabled, its color is used instead of the default disabled color.

Fixes https://github.com/flutter/flutter/issues/83531
2024-06-14 18:57:23 +00:00
Victor Sanni
0aadb89764
Add transparent color to Cupertino colors (#150149)
The Cupertino library doesn't have the transparent color constant that
the Material library has.

Added to increase code readability.

## 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.
- [x] 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].

<!-- 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-06-14 11:35:45 -07:00
Parker Lougheed
d802df49d8
Switch to Iterable.cast instance method (#150185)
Switch away from the `Iterable.castFrom` static method to the `Iterable.cast` instance method which is more readable and more consistent with other iterable usages.
2024-06-14 01:05:24 +00:00
Adam Skelton
43e71ae64f
Include transform in static Gradient lerp methods (#149624)
*Fixes #149534 Gradient subclasses' static lerp methods drop the GradientTransform of both `a` and `b`*

LinearGradient.lerp(), RadialGradient.lerp() and SweepGradient.lerp() no longer drop the GradientTransform of `a` and/or `b`.

The primitive interpolation is performed the same way TileMode is handled:  `transform: t < 0.5 ? a.transform : b.transform`.

## Media

<details>
<summary>Video demonstration</summary>

### Before
https://github.com/flutter/flutter/assets/65806473/de14e201-b1a7-44ba-95ff-e62587c7f6ac

### After
https://github.com/flutter/flutter/assets/65806473/d48f40e2-1b0f-4ac8-a45c-b3c423e3fd64

</details>

  - Changed no documentation.
  - Non-breaking change.
2024-06-14 00:31:23 +00:00
Parker Lougheed
9ea5b1383f
Validate the contrastLevel during ColorScheme creation (#150176)
Implement as an `assert` to help developers catch potential mistakes during development.

Related to https://github.com/flutter/flutter/issues/149683
2024-06-14 00:07:48 +00:00
Qun Cheng
87a32ddb08
Update doc for ColorScheme.surface (#150212)
This PR just has a tiny doc change to correct the doc for `ColorScheme.surface`. Previously, Card background color defaults to `ColorScheme.surface` but we updated the default since we've introduced the new tone-based surface colors, like `surfaceContainer`, `surfaceContainerLow` and etc. The `surface` in ColorScheme should now replace deprecated `background` which is the default background color of Scaffold.

Related to the comment here: https://github.com/flutter/flutter/pull/149772#issuecomment-2157596540
2024-06-13 21:57:10 +00:00
Taha Tesser
f56e0c2845
[Reland] Introduce ChipAnimationStyle to override default chips animations durations (#149876)
Reland - https://github.com/flutter/flutter/pull/149245

---

fixes [Custom backgroundColor on Chip makes it flicker between state transitions](https://github.com/flutter/flutter/issues/146730)

### Example preview
![Screenshot 2024-05-28 at 17 40 00](https://github.com/flutter/flutter/assets/48603081/b9117ed2-5afa-4d65-93ae-aa866772ffa1)

https://github.com/flutter/flutter/assets/48603081/a4949ce7-f38b-4251-8201-ecc570ec447c
2024-06-13 19:28:21 +00:00
Parker Lougheed
15af844c02
Update framework and flutter fix flutter.dev/docs links (#150174)
Update links in the framework and fix data files to their newest, up-to-date destinations.
2024-06-13 18:47:23 +00:00
Tong Mu
317ad4ab7c
Revert "[CupertinoActionSheet] Add sliding tap gesture" (#150147)
Reverts flutter/flutter#149471. I will reland it without changes in the future.

There have been CI post-submit errors reported, such as https://github.com/flutter/flutter/pull/150142, that the two golden files introduced in flutter/flutter#149471 were untriaged. The only explanation I can think of is that flutter/flutter#149471 being merged during the infra P0 left some inconsistency in the golden database.
2024-06-13 17:21:00 +00:00