Also, clean up the menus code a bit.
Also, make it easier to write a PopupMenuEntry that has itself many
items (for example, the way Chrome's menu has icons in a row).
Minor fixes throughout, e.g. removing trailing commas from the end of sample code expressions, changing headings to "sample code" more consistently, removing stale todos, fix typos in a private method name, minor grammar fixes, added some clarifications to CircularProgressIndicator, LinearProgressIndicator, CrossAxisAlignment, added some cross-references to various members, made it slightly clearer that layout algorithms are implementation details.
Clarified "elevation" throughout.
Added docs to InkResponse and InkWell.
Added sample code for: SliverAppBar, Card, ListTile, EdgeInsets, Row, Column, CustomScrollView, ListView, SliverFixedExtentList, and SliverGrid.
Fixes#10317.
Fixes#10316.
Fixes#10267. (sort of, see comment therein)
Fixes#9331. (sort of, see comment therein)
Fixes#9407. (sort of, see comment therein)
* Revert "Update reference to url_launcher plugin in Gallery pubspec (#9879)"
This reverts commit 96a04dea0d.
* Revert "Revert "Revert plugin use in gallery (#9838)" (#9877)"
This reverts commit ede72a8043.
This ensures that when someone opens the project using IDEA,
the Flutter plugin will find the location of the Flutter SDK
and run "flutter packages get".
* Adjust the defaults behaviour of scroll views.
Now, primary scroll views scroll by default. Others only scroll if necessary.
* apply suggested changes
* Add a text formatter interface used by EditingText. Provide some default implementations.
* self nits
* Handle -1 selection offsets
* review notes
* simplify regular expression
* Add whitelisting formatters. Use a custom phone number formatter in text demo.
* review notes
* not being able to addAll(null) is pretty annoying
* review notes
* partial tests
* Add tests
* didn’t end up needing mockito
* move to services
This patch reworks some of the guts of scrolling to make it easier to
implement nested scrolling effects. The actually nested scrolling effect
will be included in a later patch.
* Manually fix every use of Point.x and Point.y
Some of these were moved to dx/dy, but not all.
* Manually convert uses of the old gradient API
* Remove old reference to Point.
* Mechanical changes
I applied the following at the root of the Flutter repository:
git ls-files -z | xargs -0 sed -i 's/\bPoint[.]origin\b/Offset.zero/g'
git ls-files -z | xargs -0 sed -i 's/\bPoint[.]lerp\b/Offset.lerp/g'
git ls-files -z | xargs -0 sed -i 's/\bnew Point\b/new Offset/g'
git ls-files -z | xargs -0 sed -i 's/\bconst Point\b/const Offset/g'
git ls-files -z | xargs -0 sed -i 's/\bstatic Point /static Offset /g'
git ls-files -z | xargs -0 sed -i 's/\bfinal Point /final Offset /g'
git ls-files -z | xargs -0 sed -i 's/^\( *\)Point /\1Offset /g'
git ls-files -z | xargs -0 sed -i 's/ui[.]Point\b/ui.Offset/g'
git ls-files -z | xargs -0 sed -i 's/(Point\b/(Offset/g'
git ls-files -z | xargs -0 sed -i 's/\([[{,]\) Point\b/\1 Offset/g'
git ls-files -z | xargs -0 sed -i 's/@required Point\b/@required Offset/g'
git ls-files -z | xargs -0 sed -i 's/<Point>/<Offset>/g'
git ls-files -z | xargs -0 sed -i 's/[.]toOffset()//g'
git ls-files -z | xargs -0 sed -i 's/[.]toPoint()//g'
git ls-files -z | xargs -0 sed -i 's/\bshow Point, /show /g'
git ls-files -z | xargs -0 sed -i 's/\bshow Point;/show Offset;/g'
* Mechanical changes - dartdocs
I applied the following at the root of the Flutter repository:
git ls-files -z | xargs -0 sed -i 's/\ba \[Point\]/an [Offset]/g'
git ls-files -z | xargs -0 sed -i 's/\[Point\]/[Offset]/g'
* Further improvements and a test
* Fix minor errors from rebasing...
* Roll engine
* Fix tests to use Ahem, and helpful changes around that
- Fix fonts that had metric-specific behaviours.
- LiveTestWidgetsFlutterBinding.allowAllFrames has been renamed
to LiveTestWidgetsFlutterBinding.framePolicy.
- LiveTestWidgetsFlutterBinding now defaults to using a frame policy
that pumps slightly more frames, to animate the pointer crosshairs.
- Added "flutter run --use-test-fonts" to enable Ahem on devices.
- Changed how idle() works to be more effective in live mode.
- Display the test name in live mode (unless ahem fonts are enabled).
- Added a toString to TextSelectionPoint.
- Style nit fixes.
* Roll engine to get Ahem changes.
* Update tests for dartdoc changes.
* Fix flutter_tools tests
Rename State.config to State.widget
Rename State.didUpdateConfig to State.didUpdateWidget
Renamed all State subclasses' local variables named config to something else
* generate_from_arb has been moved to intl_translantion library
* fixed typo
* added missing intl dependency
* Regenerated language files with latest intl script
* Added version to intl_translations
* added isolate min version constraint
The stocks routing table is a clearer example of how to do this.
People know to look at the gallery, but don't think to look at the
stocks version. This points them from the former to the latter.
Now the scale gesture will accept if its focal point moves more than the pan
slop. This change lets it compete with a drag gesture (e.g., a containing scrol
view) in the same way that the pan gesture does.
Fixes#8735
This yak shave went as follows:
Fix https://github.com/flutter/flutter/issues/8795 by adding stocks to
the examples README.
Notice the layers entry in that README isn't quite right either.
Update that.
Check the layers/README file is worth pointing at.
Update the layers/README.
Let's run some of the layer tests to see if they still work.
Oops, need to update them to gradle.
Ok let's try running them again.
Oops, sector is broken.
Add a test for sector.
Fix sector. Find you need to add an assert to a const constructor.
Notice we need to turn const asserts on for the analyzer.
Notice the analysis_options files are out of sync with each other and
with the full list of lints.
Turn on the lints that should be on.
Fix the bugs that finds.
* Make IntelliJ metadata files consistent with the current flutter create template
* Add missing IJ files from current flutter create template
* Remove run config from layers as it requires running with -t
* Remove workspace.xml files per review feedback
Gradle projects are evaluated in lexicographical order, and the plugin
projects are at the same level as the :app project, so if a plugin has
a name that comes before 'app' (like, for example, any name that starts
with a capital letter), the plugin project will be evaluated before
:app.
Since :app applies the Flutter Gradle plugin, which tries to
modify the dependencies of the plugin projects, we have a problem if the
plugin projects have already been evaluated. Adding
evaluationDependsOn(':app') to the plugin projects fixes this.
Updated example projects to the latest (plugin-enabled) Gradle build
files.
Also removed two unused imports in `pluginClass.java.tmpl`.
* Moved stuff around yet
* Fix depedencies
* Add more dartdoc comments to packages
* Remove Cupertino dependency on material
* Removed mountain_view package and added page transition test
* Fix analyze warnings
* Remove commented code
* Partial solution. Still need to stop the animation on the previous page for modal
* Some review notes
* Move the cupertino back gesture controller’s lifecycle management back to its parent
* Reviews
* Add background color
* Directional curves, full screen transition
* Don’t perform the exit animation if the incoming page is a dialog
* It works!
* Test structures
* Add a bunch of more tests and fix the gallery
* One more comment
* Review notes
* final controller
* Use that sweet sweet `is!` keyword
* Play golf, because I’m bitter that there’s no nullable `as` or something in dart
* Remove a space
* Review notes
* Remove the last deprecated test
After this patch, there are three major text input widgets:
* EditableText. This widget is a low-level editing control that
interacts with the IME and displays a blinking cursor.
* TextField. This widget is a Material Design text field, with all the
bells and whistles. It is highly configurable and can be reduced down
to a fairly simple control by setting its `decoration` property to
null.
* TextFormField. This widget is a FormField that wraps a TextField.
This patch also replaces the InputValue data model for these widgets
with a Listenable TextEditingController, which is much more flexible.
Fixes#7031
* wip
* wip
* delete main.m
* readd main.m
* update to use new channel api
* update android
* removed android/
* remove debug print
* remomved main.m
* Update year in copyright
* break long line and update name
* mit comments
* update examples/README
* break line
* update README
* update test
Also refactors demos list into a class with `synchronized` and
`profiled` properties.
When run with --trace-startup, as we do in this test, the VM stores
trace events in an endless buffer instead of a ring buffer. To avoid
out-of-memory conditions, we restrict timeline collection to a subset.
* Bump to Dart SDK 1.23.0-dev.10
* allows us to understand flutter usage via telemetry
* brings in `@immutable`
Fixes: #9042
* completer fix
* Update to platform 1.1.1.
**THIS IS A BREAKING CHANGE.** See below for migration steps for
existing projects.
Previously, Flutter app code was built as a raw dylib on iOS. Dynamic
libraries outside of a framework bundle are not supported on iOS, except
for the system Swift libraries provided by Xcode.
See:
https://developer.apple.com/library/content/technotes/tn2435/_index.html#//apple_ref/doc/uid/DTS40017543-CH1-TROUBLESHOOTING_BUNDLE_ERRORS-EMBEDDED__DYLIB_FILES
* Migrates Xcode build from app.dylib to App.framework
* Migrates flutter create template
* Migrates example projects
Migration steps for existing projects
=====================================
The following steps should be taken from the root of your Flutter
project:
1. Edit `ios/.gitignore`: add `/Flutter/App.framework` on a new line.
2. In the Xcode project navigator, remove `app.dylib` from the Flutter
folder. Delete this file from the `ios/Flutter` directory in your project.
3. Run a build to generate `ios/Flutter/App.framework`. From the command
line, run `flutter build ios`. If you have not configured app signing
in Xcode, an alternative method is to open the simulator, then run
`flutter run -d iP`.
4. In the Xcode project navigator, select the `Runner` project. In the
project settings that are displayed in the main view, ensure that the
`Runner` target is selected. You can verify this by exposing the
sidebar using the [| ] icon in the upper-left corner of the main
view.
5. Select the *General* tab in the project settings. Under the
*Embedded Binaries* section, click '+' to add `App.framework`. In the
sheet that drops down, click the *Add Other...* button. Navigate to
the `ios/Flutter` directory and select `App.framework`. Click *Open*.
In the sheet that drops down, select *Create folder references*, then
click *Finish*.
6. In the project settings, verify that `App.framework` has been added to the
*Embedded Binaries* and *Linked Frameworks and Libraries* lists.
7. In the Xcode project navigator, drag `App.framework` under the
Flutter folder.
8. In the Xcode project navigator, select `Flutter` then from the
*File* menu, select *Add Files to "Runner"...*. Navigate to the
`ios/Flutter` directory, select `AppFrameworkInfo.plist` and click
the *Add* button.
9. From the command line, in your project directory, run
`flutter build clean`, then `flutter run`.
At this point your project should be fully migrated.
Breaking change: removed deprecated methods of PlatformMessages, leaving only binary messaging there. All other use of platform communication now goes through PlatformMessageChannel and PlatformMethodChannels. Retained use of String and JSON codecs for now.
Companion engine PR: flutter/engine#3482
* Add cupertino to gallery and add CupertinoButto
* Use single quotes
* Add disabled state
* Some review notes
* Make button animation more responsive and tweak timing
* Renamed things Cupertino
* Button with background, move cupertino demos, move material demos
* Move 2 level list too
* Refactor various demo route names
* Some review notes
* More reviews and add test
* Linter as
* Move private constant up
* Revert "Revert "Simplify path handling logic in dependency checker and devFS (#8414)" (#8467)"
This reverts commit 96ba7f76d2.
* Intentionally use a self-package URI in flutter_gallery
* tests to catch problems with self-package imports
It's common to just want a simple colored box. Simple thing should be simple,
so this patch adds a convenience argument to Continer for creating a box
decoration that is just a color.
Fixes#5555
Extend app bar left to edge, right to 4dp
Make leading button square and 56dp
Keep title at 72dp on Android according to Material
Renamed IconButton.size to .iconSize
IconButton minimum size expands to 48dp (#8264)
IconButton default constraints to 48. Can still stretch to infinity but can't be smaller than 48.
Ink splash for IconButton 40% bigger than the touch target to match Material
Tests
This does not attempt to correct any logic, only to port it as written.
The API changed a bit to take into account what is newly available and
no longer available in the new world.
* Update hello_world to new gradle based build flow
* Update flutter_gallery to gradle based build
* Align hello_services with new gradle based build
* Update platform_services to new gradle based build
* Upgrade stock to gradle based build
* Make new project template gradle-based for Android.
With this change, the 'new project' template uses the same gradle-based build for Android as the hello_services example. This has some implications on build performance, since we're now building a complete Android app instead of just combining a pre-compiled .dex with the Flutter assets.
The very first build is a little over 2x slower, since it needs to download gradle and build the build scripts before getting to the actual code. Subsequent builds with changes to the code are comparable to the old builds. Null builds are faster. Enabling the gradle daemon speeds up subsequent builds by around 5s.
* Move Flutter Gradle plugin to Flutter root.
Move the back button and drawer opening logic into the app bar.
Move the tap-status-bar-to-scroll-to-top logic to using
ScrollControllers. Provide a PrimaryScrollController and a `primary`
flag on scroll views.
Make it possible to track when a route becomes or stops being poppable.
This patch converts the Shrine home page to using a sliver-based grid.
This required using a CustomScrollView to mix the block at the top with
the grid below.
Someone on stack overflow was mutating the list of recipes and getting
confused about why the UI didn't redraw. Making kPestoRecipes a constant
might help avoid that confusion.
Subclassing FlutterAppDelegate is not required for real-world apps, but
it's what 'flutter create' generates, and applies the default behaviours
that most real-world apps will want.
* Update gradle example to support x86 in debug mode.
Changed the Flutter Gradle plugin a bit to better fit in with the
Android build.
Fixes#6136Fixes#6864Fixes#7539
This patch adds grid supports to slivers and introduces a ScrollGrid
convenience class for making the common types of scrollable grids.
This patch also deploys ScrollGrid in an example in the Flutter Gallery.
Uses SliverPadding to implementing paddding in ScrollView. Also, deploy
ScrollView in more places now that it implements padding.
Finally, remove loader_app.dart because it is not referenced.
Almost all real-world apps will want a custom app delegate, and 'flutter
create' code-gens one by default. This brings the samples in line with
our templates and the most common use case.
This widget is a replacement for ScrollableViewport that uses the new
Scrollable2 machinery. The widget is not based on Slivers but does use the new
scroll behavior classes.
* Disable 'Show Excluded' by default
* Move .iml file inside .idea dir
* Remove pub and build excludions as they are automatically set by the Dart plugin
* Exclude .idea folder (new users will edit it through the IJ UI, not the file)
* Move .iml files into .idea dir to be consistent with template changes
* Add workspace.xml from new template to existing samples
* Update current examples to match template changes for excluding folders
* Add missing flutter.yaml to make sure there are no analysis errors
* Add back .pub and build excludeFolder tags per https://github.com/flutter/flutter-intellij/issues/630#issuecomment-272887230
* Remove workspace.xml from example per review feedback
Previously, the icon in the tooltip demo was black on black background
in the dark theme. Now it is white on black background in the dark theme
and black on white background in the light theme.
fixes#7018
The demo of the SimpleDialog had some useful code that should really be part of
the framework. This patch extracts it into a SimpleDialogOption widget.
Remove debugCheckHasScaffold because it is unused.
Also, add tests for InkWell, SimpleDialog, and other widgets.
Now IconThemeData.fallback is a factory constructor and IconThemeData.of() does
the work of computing the fallback for its clients.
Also, add tests for ImageIcon and ListItems.
With frameSync enabled, flutter_driver actions will only be performed
when there are no pending frames in the app under test. This helps with
reducing flakiness.
This patch changes the default appearance of Slider to not have the
thumb be an open circle at its minimum position. The `thumbOpenAtMin`
property can enable drawing an open thumb at the min position, which was
the previous behavior.
Fixes#6941
Callers can manually validate by calling validate(), or tell the Form to
validate on every change by setting the `autovalidate` parameter.
Fixes https://github.com/flutter/flutter/issues/7219
* s/sky/flutter/ in Android templates
* update engine.version with a compatible engine version
* replace more SkyActivity references with FlutterActivity
This patch replaces uses of Flexible with Expanded where we're using
FlexFit.tight. We still need to think of a better name for the
FlexFit.loose variant.
Also, improve the docs for Row, Column, Flex, and RenderFlex to be more
problem-oriented and to give a complete account of the layout algorithn.
Fixes#6960Fixes#5169
* Remove the workaround that pinned args to v0.13.6
This reverts most of the changes in commit 6331b6c8b5
* throw exception if exit code is not an integer
* rework command infrastructure to throw ToolExit when non-zero exitCode
* convert commands to return Future<Null>
* cleanup remaining commands to use throwToolExit for non-zero exit code
* remove isUnusual exception message
* add type annotations for updated args package
FormField is now a widget that can contain any type of field. Input no
longer has special code to handle form fields. Instead, there is a
helper widget InputFormField for using an Input inside a FormField.
Fixes https://github.com/flutter/flutter/issues/6097 and based on
feedback from the same.
Since we can change the theme's platform, we need to make sure we
propagate that throughout rather than having half the app use the native
platform and half the app use the selected platform.
Developers need to get the size of the BuildContext sufficiently often
that we should provide a convenient getter for the value. Having this
getter is also an opportunity to catch common mistakes and provide
useful error messages that guide developers towards better patterns.
Fixes#2321
These futures complete when the route is popped off the navigator. This
generalizes and simplifies a mechanism already in place for dialogs and
menus.
Fixes#5283
* Add a maxLines parameter for multiline Input.
If maxLines is 1, it's a single line Input that scrolls horizontally.
Otherwise, overflowed text wraps and scrolls vertically, taking up at
most `maxLines`.
Also fixed scrolling behavior so that the Input scrolls ensuring the
cursor is always visible.
Fixes https://github.com/flutter/flutter/issues/6271
* oops
* comments
* import
* test and RO.update fix
* constant
* fix.caretRect
* globalToLocal was just broken when there was a rotation and a
translation at the same time. This fixes that and adds a test.
* update graphic used by spinning_mixed since the old one went 404.
* simplify some of the code in the demo.
* fix MatrixUtils.transformPoint to be consistent with how we transform
points elsewhere.
* stop transforming points elsewhere, just use
MatrixUtils.transformPoint.
* make the Widget binding handle not having a root element.
* make the spinning_mixed demo update its widget tree.
We were trying to cram too much functionality in to the Dialog widget. Now we
have AlertDialog and SimpleDialog to cover to two different kinds of dialogs in
the spec.
This patch fixes the issue in two ways:
1. The content area is now scrollable, which means you can scroll to reveal any
parts that don't fit on screen.
2. The content area is now small enough to fit on screen in landscape on a
Nexus 5.
Fixes#6054
Rather than scrolling the entire contents of the dialog, we should instead
scroll only the part between the title and the button bar.
Also, polish up the padding in the simple dialog demo.
Fixes#6057
As of Xcode 7, Apple recommends setting the bundle identifier in the
PRODUCT_BUNDLE_IDENTIFIER build variable and setting CFBundleIdentifier
to that variable in Info.plist.
As of Xcode 8, CLANG_WARN_INFINITE_RECURSION and CLANG_WARN_SUSPICIOUS_MOVE
are recommended settings.
This requires all AnimationController objects to be given a
TickerProvider, a class that can create the Ticker.
It also provides some nice mixins for people who want to have their
State provide a TickerProvider. And a schedulerTickerProvider for those
cases where you just want to see your battery burn.
Also, we now enforce destruction order for elements.
Switch our pubspec.yamls to using SDK sources so that we can have consistent
source types when we depend on these packages from external packages using SDK
sources.
This code is now in its own standalone library. The library is in a private git
repository in the flutter organization because the code is unmaintained. If
you're interested in using and maintaining this code, please contact
flutter-dev@googlegroups.com for more information.
This rewrites imports of various mojom.dart files from the Flutter
engine repo to instead import normal-looking dart files from the
(new) flutter_services package. This package handles exporting the
correct symbols from generated code wherever that may live.
Includes an engine roll to 3551e7a48e2e336777b15c7637af92fd7605b6c5
which contains the new flutter_services package.
* Changed Pesto logotype's position.
This commit changes Pesto's logotype position so that its curve
aligns with the curve of the image size.
* Added clamping to Pesto logo animation.
Removed Pesto logo's triggered animation in order to remove the
observable 'hop' when scrolling. The whole curve is now entirely
scroll dependent. Fixes#5907.
Due to a synchronization issue, a PR was merged with a green build
that was supposed to be rebuilt and to fail. This commit fixes the
issue by renaming the usage of a constant.
* Added OverscrollIndicatorEdge et al
* RefreshIndicator only clamps its scrollable edge
* added a test
* Updated the test
* fixed lint-os
* fixed a typo
* Scrollable should restore its viewport dimensions when it reappears
* removed an accidental commit
* updated per review feedback