Some widgets are using closures even if the only values that are
captured are this, context or widget, that can be accessed even from
methods of the State object.
* Revert "Fix a typo in the saved certificate error message (#11640)"
This reverts commit bfda885a9de024b61c3279e7848cc91e8c81adc1.
* Revert "Rollback patch that broke microbenchmarks (#11616)"
This reverts commit 70fe6f4c232111d61187ea5c2b511bc4ebb339ca.
* Revert "Extract snapshotting logic to Snapshotter class (#11591)"
This reverts commit 309a2d78fbcd735b7594e3f65df809f52d46b23e.
* Revert "Minor whitespace formatting fix (#11590)"
This reverts commit bf69c3c69bde95779252e0deb3e288c8120aa1ec.
* Revert "Avoid rebuilding snapshots if no change to source (#11551)"
This reverts commit 74835db563b7c31b4c883eeea15e689a1bdbd303.
* Add iOS template
* Android
* Let the engine reset the theme without the activity knowing
* Small tweak
* Replace assets with different vectors
* Let the template hookup have no actual image assets
* Add back placeholder assets with 1px transparent pngs
* Fix drawable xml
* clean up an extraneous line in the storyboard xml
* Wrap the label widget of the Chip in a Flexible. (#11523)
* This allows the Chip to constrain the size of its content after taking into account the space occupied by the avatar and delete icon (if they are present)
* Adding unit tests to evaluate correct size constraints of the Chip widget's label. (#11523)
* Minor change in formatting.
* Adjust function formatting.
* Don't trigger assert if a render object ceases to be a semantic boundary
This bug was exposed by https://github.com/flutter/flutter/pull/11309, which caused the following assertion to trigger when scrolling in the Animation demo:
```
The following assertion was thrown during _updateSemantics():
'package:flutter/src/rendering/object.dart': Failed assertion: line 2626 pos 16: 'fragment is
_InterestingSemanticsFragment': is not true.
```
A minimal reproduction of the bug can be found in `semantics_10_test.dart`, which has been added as a regression test for the bug by this PR.
Looking at that test, here is a description of the faulty behaviour:
1. During the second `pumpWidget` call `RenderExcludeSemantics` marks itself as needing a semantics update (due to excluding going from `false` -> `true`).
2. This causes the nearest ancestor with semantics information (here: `RenderSemanticsAnnotations` representing the "container" Semantics widget) to be added to the `_nodesNeedingSemantics` list.
3. `RenderSliverList` (implementation behind ListView) marks itself as needing a semantics update (due to its changing children).
4. This causes the `RenderSemanticsGestureHandler` to be added to the `_nodesNeedingSemantics` list.
5. Next, canDrag is updated from `true` -> `false`. This means, `RenderSemanticsGestureHandler` is no longer a semantics boundary, it marks itself as needing a semantics update.
6. The nearest ancestor with semantics (`RenderSemanticsAnnotations`, the "container") is added to the `_nodesNeedingSemantics` list (this is a no-op because it is already in the list).
7. During `flushSemantics`, the `_nodesNeedingSemantics` list is walked. The first entry (`RenderSemanticsAnnotations`) updates the semantics tree to only contain the container widget and drop everything else (= no children of the ExcludeSemantics widget are walked).
8. The second entry (`RenderSemanticsGestureHandler`) is updated. It does not add any semantics of its own and is no longer a semantics boundary. Therefore, it wants to merge its descendent semantics into its parents. Here is where the assert throws because the algorithm assumes that every entry in the `_nodesNeedingSemantics` list will produce and own an `_InterestingSemanticsFragment` (passing your semantics on to your parents is not interesting).
The problem here seems to be step 4 in combination with step 5. In step 4 we rely on the fact that `RenderSemanticsGestureHandler` is an (explicit or implicit) semantics boundary and that it will be able to absorb the semantics change of `RenderSliverList`. This is true
at this time. However, in step 4 `RenderSemanticsGestureHandler` decides to no longer be an (explicit or implicit) semantics boundary and our assumption from step 5 becomes incorrect. We did nothing to correct this assumption.
This PR removes a node, that could potentially cease to be a (explicit or implicit) semantics boundary from the `_nodesNeedingSemantics` list to fix that problem. Please node that this does not mean that the node's semantics will not be updated: The node's closest ances
tor with semantics is added to that list during the `markNeedsSemanticsUpdate` call. During `flushSemantics` we will walk from this node to update the semantics of it's children (if changed), which will include the node in question.
* tiny fix
* simplify test
* analyzer fixes
* review comments
This change re-introduces skipping snapshot builds if input sources (and
outputs) have not changed since the last snapshot build, with a bugfix
to include the entry-point source in the checksum used to check whether
rebuild can be skipped. This ensures that the following sequence
invalidates the cached build, resulting in two snapshot builds:
flutter build ios lib/foo.dart
flutter build ios lib/bar.dart
This reverts commit 3d5afb5a81052b7d55661549320d6d43f893f448.
The most recent Flutter IntelliJ plugin replaces FLUTTER_MODULE with
WEB_MODULE and eliminates the exclusion of packages/ directories.
Use of the packages/ directory was turned off by default months ago, and
is replaced by the .packages file.
* Adds more customization options to the Chip widget
Includes:
- Custom Tooltip message for the delete button;
- Custom background color for the chip
- Custom delete icon color
- Custom label text style
* Adds missing type annotations to tests and improves documentation.
* Tweaks labelStyle field documentation
It was previously possible for event dispatch to occurr during the
brief window where the tree had been marked dirty but before it had
been relaid out by reassemble, which would cause assertions to fire if
someone did a hot reload while touching the device.