13170 Commits

Author SHA1 Message Date
Michael Goderbauer
ae4fb0ca7c
fix typo and reflow (#140925)
Fixes "differenet" => "different" and reflows the doc to 80 char line length.
2024-01-03 23:01:57 +00:00
auto-submit[bot]
253dc6f847
Reverts "Re-land integrate testWidgets with leak tracking." (#140926)
Reverts flutter/flutter#140521
Initiated by: zanderso
This change reverts the following previous change:
Original Description:
Original PR: https://github.com/flutter/flutter/pull/138057
Revert: https://github.com/flutter/flutter/pull/140502
Issue: https://ci.chromium.org/ui/p/flutter/builders/prod/Linux_android%20flutter_test_performance/12787/overview
Exception: flutter test rendered unexpected output (1 bad lines)
Explanation: leak tracker adds tear down even when there is no leak tracking, because at the moment of adding tear down it is unclear if leak tracking will be used for some tests.
Fix: add enabling flag for leak tracker and make creation of tear down conditional.
Prerequisites:
2024-01-03 22:36:17 +00:00
yim
0d4eb5eaa0
Changes the regular cursor to a floating cursor when a long press occurs. (#138479)
This PR changes the regular cursor to a floating cursor when a long press occurs.

This is a new feature. Fixes  #89228
2024-01-03 21:45:07 +00:00
Furkan Acar
83ac76050d
Add SegmentedButton.styleFrom (#137542)
fixes https://github.com/flutter/flutter/issues/138289

---

SegmentedButtom.styleFrom has been added to the segment button, so there is no longer any need to the button style from the beginning. It works like ElevatedButton.styleFrom only I added selectedForegroundColor, selectedBackgroundColor. In this way, the user will be able to change the color first without checking the MaterialState states. I added tests of the same controls.

#129215 I opened this problem myself, but I was rejected because I handled too many items in a PR. For now, I wrote a structure that only handles MaterialStates instead of users.

old (still avaliable)
<img width="626" alt="image" src="https://github.com/flutter/flutter/assets/65075121/9446b13b-c355-4d20-bda2-c47a23d42d4f">

new (just an option for developer)
<img width="483" alt="image" src="https://github.com/flutter/flutter/assets/65075121/0a645257-4c83-4029-9484-bd746c02265f">

### Code sample

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

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

/// Flutter code sample for [SegmentedButton].

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

enum Calendar { day, week, month, year }

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

  @override
  State<SegmentedButtonApp> createState() => _SegmentedButtonAppState();
}

class _SegmentedButtonAppState extends State<SegmentedButtonApp> {
  Calendar calendarView = Calendar.day;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(useMaterial3: true),
      home: Scaffold(
        body: Center(
          child: SegmentedButton<Calendar>(
            style: SegmentedButton.styleFrom(
              foregroundColor: Colors.amber,
              visualDensity: VisualDensity.comfortable,
            ),
            // style: const ButtonStyle(
            //   foregroundColor: MaterialStatePropertyAll<Color>(Colors.deepPurple),
            //   visualDensity: VisualDensity.comfortable,
            // ),
            segments: const <ButtonSegment<Calendar>>[
              ButtonSegment<Calendar>(
                  value: Calendar.day,
                  label: Text('Day'),
                  icon: Icon(Icons.calendar_view_day)),
              ButtonSegment<Calendar>(
                  value: Calendar.week,
                  label: Text('Week'),
                  icon: Icon(Icons.calendar_view_week)),
              ButtonSegment<Calendar>(
                  value: Calendar.month,
                  label: Text('Month'),
                  icon: Icon(Icons.calendar_view_month)),
              ButtonSegment<Calendar>(
                  value: Calendar.year,
                  label: Text('Year'),
                  icon: Icon(Icons.calendar_today)),
            ],
            selected: <Calendar>{calendarView},
            onSelectionChanged: (Set<Calendar> newSelection) {
              setState(() {
                calendarView = newSelection.first;
              });
            },
          ),
        ),
      ),
    );
  }
}

```

</details>
2024-01-03 21:26:02 +00:00
Polina Cherkasova
baf6ba134f
Re-land integrate testWidgets with leak tracking. (#140521) 2024-01-03 12:21:08 -08:00
Ann Marie Mossman
743cdd68b7
Handle KEYCODE_DPAD_CENTER and KEYCODE_ENTER (#140808)
https://github.com/flutter/flutter/issues/1670

Note: This PR replaces the the original PR (https://github.com/flutter/flutter/pull/138240) that got into a state where a rebase was not possible and made it difficult to determine what was causing unrelated test failures.
2024-01-03 18:37:23 +00:00
Elliott Brooks
55ba27d3bc
Link to wiki page about updating dependencies in each pubspec.yaml file (#140826)
Added a minimal wiki page about how to use the `update-packages` tool: https://github.com/flutter/flutter/wiki/Updating-dependencies-in-Flutter

This PR adds a link to that wiki page at the top of each pubspec.yaml file
2024-01-03 18:28:52 +00:00
Jack Gibbons
f4cb3d215d
Add key to BottomNavigationBarItem (#139617)
Pass key into _BottomNavigationTile

Adding a optional key parameter to BottomNavigationBarItem to be passed through to _BottomNavigationTile.
This will allow easier testing in some scenarios, and fix the splash appearing on the wrong tile.

https://github.com/flutter/flutter/issues/139615
https://github.com/flutter/flutter/issues/34833
2024-01-03 15:58:21 +00:00
Satsrag
c033b08df7
fix: cannot input new line using custom input control (#140356)
For https://github.com/flutter/flutter/issues/125875 and https://github.com/flutter/engine/pull/45522

According to [this discussion](https://github.com/flutter/flutter/pull/139446#discussion_r1424776370), Just added `forceMultiline` to JSON on `_configurationToJson`. @LongCatIsLooong @Renzo-Olivares
2024-01-03 01:58:24 +00:00
David Iglesias
6b4f0d5753
[flutter] Allow ViewCollection to start empty. (#140532)
This enables multi-view apps to start with zero views.
2024-01-03 00:22:52 +00:00
LongCatIsLooong
f3b6505f14
Fix 139196 selection OOB (#140300)
Fixes #139196
2024-01-03 00:11:18 +00:00
Polina Cherkasova
45c611f040
Upgrade leak_tracker. (#140758) 2024-01-02 20:58:16 +00:00
LongCatIsLooong
5883a6ca10
Reland "Make TextSpan hit testing precise." (#140468) (#140621)
Fixes https://github.com/flutter/flutter/issues/131435, https://github.com/flutter/flutter/issues/104594, https://github.com/flutter/flutter/issues/43400

Currently the method we use for text span hit testing `TextPainter.getPositionForOffset` always returns the closest `TextPosition`, even when the given offset is far away from the text.

The new TextPaintes method tells you the layout bounds `(width =  letterspacing / 2 + x_advance + letterspacing / 2, height = font ascent + font descent)` of a character, the PR changes the hit testing implementation such that a TextSpan is only considered hit if the point-down event landed in one of its character's layout bounds.

Potential issues:

In theory since the text is baseline aligned, we should use the max ascent and max descent of each character to calculate the height of the text span's hit-test region, in case some characters in the span have to fall back to a different font, but that will be slower and it typically doesn't make a huge difference.
This is a breaking change.
2024-01-02 20:26:12 +00:00
shirne
7249d9ec6d
improve comment doc in tabs.dart (#140568)
*Replace this paragraph with a description of what this PR is changing or adding, and why. Consider including before/after screenshots.*

*List which issues are fixed by this PR. You must list at least one issue. 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-01-02 19:03:10 +00:00
Polina Cherkasova
f667376cc8
Rename MemoryAllocations to FlutterMemoryAllocations. (#140623)
Contributes to https://github.com/flutter/flutter/issues/140622
2024-01-02 09:56:30 -08:00
Polina Cherkasova
59242b75c5
Add command line parameter that turns on leak tracking. (#138653) 2024-01-02 09:20:12 -08:00
Daniel Chevalier
186659dc35
Show width and height in inspector overlay (#140709)
![](https://media.giphy.com/media/SX71qs3TDxVkvbLJ4o/giphy-downsized.gif)

Fixes https://github.com/flutter/devtools/issues/6871

Add the width and height to the inspector overlay. 1 decimal precision is used since that matches the way Devtools displays the values.

## Examples
<img width="442" alt="Screenshot 2023-12-28 at 2 39 49 PM" src="https://github.com/flutter/flutter/assets/1386322/2de40092-de15-4ada-a954-e911e6bef217">

<img width="645" alt="Screenshot 2023-12-28 at 2 39 42 PM" src="https://github.com/flutter/flutter/assets/1386322/8f53dad5-1aba-43d9-9419-ca93cd894624">
<img width="149" alt="Screenshot 2023-12-28 at 2 39 37 PM" src="https://github.com/flutter/flutter/assets/1386322/bbed74b7-c962-4c20-80d8-48e5eaa14de6">
2023-12-29 01:34:40 +00:00
hhh
b0b0e423d6
expose didExceedMaxLines from RenderParagraph (#139962)
I want to build a widget that adds some extra functionality when the inner text overflow. So the problem occurred, I can't find an elegant way to determine if the text is overflowing. 
So i expose `didExceedMaxLines` from `RenderParagraph`, I think it can make sense. Have there some advice?
2023-12-28 01:38:38 +00:00
Harry Terkelsen
13feba5852
[web] Re-enable text field test now that fix has landed in engine (#140678)
Re-enables skipped flaky test now that the underlying cause of flakiness (GPU memory leak) has been fixed in the engine and the fix has rolled into the framework.

The fix is here: https://github.com/flutter/engine/pull/49336

Fixes https://github.com/flutter/flutter/issues/137669
2023-12-27 21:45:18 +00:00
Bruno Leroux
89f0c69e49
Add custom system-wide text selection toolbar buttons on Android (#139738)
## Description

This PR adds custom system-wide text selection toolbar buttons on Android.
~~This is a WIP until https://github.com/flutter/flutter/pull/139479 is merged (potential conflicts).~~

## Related Issue

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

## Tests

Adds 5 tests.
2023-12-27 19:03:29 +00:00
flutter-pub-roller-bot
9c2a756009
Roll pub packages (#140525)
This PR was generated by `flutter update-packages --force-upgrade`.
2023-12-21 22:13:24 +00:00
Ian Hickson
62f1594908
Make tests more resilient to Skia gold failures and refactor flutter_goldens for extensive technical debt removal (#140101)
Originally landed in https://github.com/flutter/flutter/pull/139549
Originally reverted in https://github.com/flutter/flutter/pull/140085

- Remove all use of global variables.
- Always pass in all dependencies, only create them in main or in tests.
- Pass in the "print" primitive.
- Make all network traffic retry (except when run locally, when it just auto-passes).
- Enable tests to be run in random order.
- Better error messages
2023-12-21 21:35:07 +00:00
auto-submit[bot]
cb50d4a804
Reverts "[web] Re-enable test now that source of flakiness is fixed" (#140515)
Reverts flutter/flutter#140462
Initiated by: cbracken
This change reverts the following previous change:
Original Description:
The test was flaky before due to overflowing GPU memory during the test. The memory leak was fixed here https://github.com/flutter/engine/pull/49214

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

As a side effect of the fix, this test also runs much faster, from about 3 minutes on my Macbook down to about 25 seconds.
2023-12-21 17:46:16 +00:00
Qun Cheng
c0acd8c45f
Fix import pattern (#140425)
This PR is just to fix the import pattern to follow the convention.
2023-12-21 00:18:09 +00:00
flutter-pub-roller-bot
2d75f76b44
Roll pub packages (#140472)
This PR was generated by `flutter update-packages --force-upgrade`.
2023-12-20 22:57:21 +00:00
Michael Goderbauer
c4fda23393
Remove outdated ignores from framework (#140465)
These were not ignoring anything (anymore).
2023-12-20 22:05:29 +00:00
LongCatIsLooong
e2e8bcb1bc
Reland find.textRange.ofSubstring changes (#140469)
Extracted from https://github.com/flutter/flutter/pull/139717 as-is. Landing this change first so we can avoid doing a g3fix.
2023-12-20 22:00:55 +00:00
auto-submit[bot]
9003f13803
Reverts "Make TextSpan hit testing precise." (#140468)
Reverts flutter/flutter#139717
Initiated by: LongCatIsLooong
This change reverts the following previous change:
Original Description:
Fixes https://github.com/flutter/flutter/issues/131435, #104594, #43400
Needs https://github.com/flutter/engine/pull/48774 (to fix the web test failure).

Currently the method we use for text span hit testing `TextPainter.getPositionForOffset` always returns the closest `TextPosition`, even when the given offset is far away from the text. 

The new TextPaintes method tells you the layout bounds (`width =  letterspacing / 2 + x_advance + letterspacing / 2`, `height = font ascent + font descent`) of a character, the PR changes the hit testing implementation such that a TextSpan is only considered hit if the point-down event landed in one of it's character's layout bounds.

Potential issues:

1. In theory since the text is baseline aligned, we should use the max ascent and max descent of each character to calculate the height of the text span's hit-test region, in case some characters in the span have to fall back to a different font, but that will be slower and it typically doesn't make a huge difference. 

This is a breaking change. It also introduces a new finder and a new method `WidgetTester.tapOnText`: `await tester.tapOnText('string to match')` for ease of migration.
2023-12-20 19:32:10 +00:00
Harry Terkelsen
11bfb3c46a
[web] Re-enable test now that source of flakiness is fixed (#140462)
The test was flaky before due to overflowing GPU memory during the test.
The memory leak was fixed here
https://github.com/flutter/engine/pull/49214

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

As a side effect of the fix, this test also runs much faster, from about
3 minutes on my Macbook down to about 25 seconds.

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

<!-- 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
2023-12-20 11:11:56 -08:00
Bruno Leroux
0d90014bae
_TabBarViewState should not recreate page controller (#135500)
## Description

This PR replaces the unconditional instantiation of `PageController` in `_TabBarViewState.didChangeDependencies` as suggested in https://github.com/flutter/flutter/pull/134091#discussion_r1319177744.

## Related Issue

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

## Tests

Adds 1 test.
2023-12-20 17:04:29 +00:00
LongCatIsLooong
ea5b97286e
Make TextSpan hit testing precise. (#139717)
Fixes https://github.com/flutter/flutter/issues/131435, #104594, #43400
Needs https://github.com/flutter/engine/pull/48774 (to fix the web test failure).

Currently the method we use for text span hit testing `TextPainter.getPositionForOffset` always returns the closest `TextPosition`, even when the given offset is far away from the text. 

The new TextPaintes method tells you the layout bounds (`width =  letterspacing / 2 + x_advance + letterspacing / 2`, `height = font ascent + font descent`) of a character, the PR changes the hit testing implementation such that a TextSpan is only considered hit if the point-down event landed in one of it's character's layout bounds.

Potential issues:

1. In theory since the text is baseline aligned, we should use the max ascent and max descent of each character to calculate the height of the text span's hit-test region, in case some characters in the span have to fall back to a different font, but that will be slower and it typically doesn't make a huge difference. 

This is a breaking change. It also introduces a new finder and a new method `WidgetTester.tapOnText`: `await tester.tapOnText('string to match')` for ease of migration.
2023-12-20 03:23:29 +00:00
Fedor Blagodyr
2bb19a9501
Added onEnd callback into AnimatedSize (#139859)
close #106439
2023-12-19 22:59:46 +00:00
Polina Cherkasova
6368d65622
Upgrade to version of leak tracker that does not depend on test_widgets. (#140247)
Contributes to: https://github.com/flutter/flutter/issues/135856
2023-12-19 04:28:09 +00:00
Bartek Pacia
a4388773bb
SemanticsProperties: default identifier and tooltip to null (#140283)
This PR applies [the suggestion made here](https://github.com/flutter/devtools/pull/6942#issuecomment-1852773200).
2023-12-18 19:38:05 +00:00
Simon Friis Vindum
b893884f50
Document difference between softWrap and maxLine (#139363)
This PR fixes #13631 through documentation as suggested in https://github.com/flutter/flutter/issues/13631#issuecomment-354902727.

Since the documentation additions rely on new screenshots this PR will be accompanied by a PR in the assets repository.
2023-12-18 19:09:07 +00:00
Bruno Leroux
596d9b6c1a
Center Floating Snackbar with custom width when direction is RTL (#140215)
## Description

This PR fixes the positionning of a floating snackbar when the text direction is RTL.

## Related Issue

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

## Tests

Adds 1 test.
2023-12-16 19:23:11 +00:00
Bartek Pacia
8c02a22403
Use SemanticsUpdateBuilder again, remove all references to temporary SemanticsUpdateBuilderNew (#139942)
This PR removes all usages of the temporary `SemanticsUpdateBuilderNew` API in favor of `SemanticsUpdateBuilder`. These two APIs are the same as of now.

This is mainly targeted at https://github.com/flutter/flutter/issues/17988

Steps:
part 1: [engine] add `SemanticsUpdateBuilderNew` https://github.com/flutter/engine/pull/47961
part 2: [flutter] use `SemanticsUpdateBuilderNew` https://github.com/flutter/flutter/pull/138331
part 3: [engine] update `SemanticsUpdateBuilder` to be the same as `SemanticsUpdateBuilderNew` https://github.com/flutter/engine/pull/48882
**part 4: [flutter] use (now updated) `SemanticsUpdateBuilder` again** <-- we are here
part 5: [engine] remove `SemanticsBuilderNew`
2023-12-16 15:23:24 +00:00
Polina Cherkasova
baf739c8e6
Remove usage of testWidgetsWithLeakTracking. (#140239) 2023-12-15 14:13:31 -08:00
Polina Cherkasova
bda158adf0
Reorganize dependencies on leak_tracker. (#140233)
1. Move leak_tracker and leak_tracker_testing out of direct dependencies.
2. Move leak_tracker_flutter_testing from dev to prod dependencies for flutter_test

It is prerequisite for https://github.com/flutter/flutter/issues/135856
2023-12-15 19:33:23 +00:00
Srujan Gaddam
2407f699e9
Move package:web dependency to dev dependency (#139696)
Pinning the package:web dependency constrains downstream packages from
using newer versions and making sure they support the version pinned in
Flutter. Since the usage of package:web in Flutter is light, we should
instead have a small shim like the engine and keep package:web as a dev
dependency only.
2023-12-15 08:53:27 -08:00
Polina Cherkasova
6a85684877
Increase versions of leak tracker libraries. (#140018)
Contributes to https://github.com/flutter/flutter/issues/135856
2023-12-15 05:18:23 +00:00
Mitchell Goodwin
f0051d8b12
Cupertino text clear label (#129727)
Fixes #123107

Adds a customizable semantic label so that the clear button on the Cupertino text field will be picked up by screen readers.

https://github.com/flutter/flutter/assets/58190796/de31d9dd-923c-402f-a55b-e5cc77ea68bb
2023-12-15 04:55:55 +00:00
lsaudon
703ae77882
feat: Add onTapAlwaysCalled in TextFormField (#140089)
Add onTapAlwaysCalled in TextFormField

*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].*
2023-12-14 23:05:54 +00:00
yim
4752b8638a
fix reorderable_list drop animation (#139362)
This PR fixes reorderable_list drop animation.

Fixes #138994
2023-12-14 22:05:06 +00:00
Shashi
cf3ed1ee17
Fix BottomNavigationBarItem label overflow (#120206)
This PR wraps the `label` with `IntrinsicWidth` and then `Flexible` which allows DefaulTextStyle `TextOverflow.ellipsis` to work. Wrapping `label` directly with `Flexible` brings more space between `icon` and `label`. `IntrinsicWidth` fixes this by giving reasonable width.

Fixes #112163
2023-12-14 21:31:51 +00:00
Lau Ching Jun
d24c01bd0c
Revert "Dynamic view sizing" (#140165)
Reverts flutter/flutter#138648

This caused the app to be stuck in the splash screen on certain phone models.

Context: b/316244317
2023-12-14 19:42:06 +00:00
Akito Nishiyama
f8ddd4b653
🎨: fix cupertionActionSheet design (#134345)
## Overview
Fixed the implementation of CupertionActionSheet based on [Apple Design Resource](https://www.figma.com/community/file/1248375255495415511).
I also deleted devicePixelRatio because Flutter uses logical pixels based on https://api.flutter.dev/flutter/dart-ui/FlutterView/devicePixelRatio.html.

ISSUE: #134539 

UPDATED GOLDEN: https://flutter-gold.skia.org/search?issue=134345&crs=github&patchsets=3&corpus=flutter

### Before
<img src="https://github.com/flutter/flutter/assets/40790076/8492fe5f-582f-4623-86eb-c60cb88d81a1" width=300>

### After
<img src="https://github.com/flutter/flutter/assets/40790076/fcdd7f7e-6ab5-4b68-a7b0-27a6fc2975b8" width=300>
2023-12-14 18:40:59 +00:00
LongCatIsLooong
f2c6f03ca3
Catch Stopwatch with static analysis (#140019)
I did not include the `'// flutter_ignore_for_file: stopwatch (see analyze.dart)'` directive since it's currently not used, and adding that shouldn't be too difficult.
2023-12-14 00:31:49 +00:00
Michael Goderbauer
4162272592
Overlay supports unconstrained environments (#139513)
Fixes https://github.com/flutter/flutter/issues/137875.

Unfortunately, we cannot auto-detect which OverlayEntry should be sizing the Overlay in unconstrained environment. So, this PR adds a special flag to annotate the Overlay Entry that should be used.
2023-12-14 00:19:45 +00:00
Renzo Olivares
5be1918b67
Remove deprecated ThemeData.selectedRowColor (#139080)
Part of: https://github.com/flutter/flutter/issues/139243
2023-12-14 00:11:34 +00:00