* document libs from sky_services
* scan directory of sky_services for libraries
* simplify error message when sky_services directory not found
* address review comments
Previously this was used by MixedViewport, but now we don't need it because
LazyBlockViewport has replaced MixedViewport.
I've also taken this opportunity to modernize RenderBlock.
Previously, we lost sync with the tab view contents when switching tabs. Now we
key the subtrees to make sure they keep their state across tab animations.
Fixes#3147
Fix some legit uses of GlobalKey to specify the type they want.
Fix some sketchy uses of GlobalKey in tests to fake it with "as
dynamic".
Remove some extraneous imports that made the build red.
Previously, the client of PopupMenuButton needed to build all the menu times
when building the PopupMenuButton. This can get expensive if, for example, each
item in a scrollable list has a popup menu associated with it.
Now the client passes a builder function to the PopupMenuButton that gets
invoked only when its time to show the menu items.
This patch adds dartdoc to LazyBlock. Also, this patch fixes the scrolling
physics of LazyBlock. Previously, we updated a running simulation only when the
change in scroll behavior changed the current scroll offset. Now we update
running simulations every time the behavior changes because the simulation
might depend on quantities other than the current scroll offset.
LazyBlock is intended as a replacement for MixedViewport. Rather than
maintaining a table of all the observed child sizes (like
MixedViewport), LazyBlock works by dead reckoning the location of the
children based on the existing viewport. This approach makes it easier
to resize children because LazyBlock doesn't cache any additional
information that would need to be invalidated.
This patch contains a first draft of LazyBlock that works in a simple
usage scenario. Subsequent patches will replace
ScrollableMixedWidgetList with LazyBlock and port the existing
ScrollableMixedWidgetList tests over to LazyBlock.
Related to #3075
- Rename unselectedColor to unselectedWidgetColor.
- Rename selectionColor to textSelectionColor.
- Add selectedRowColor.
- Remove hintOpacity since it's not tested and has no demo clients.
- Add some docs.
* add a dev/dartdoc.dart script to generate docs for the packages/ packages
* remove description
* rename readme
* change to using --include-external
* move docs to dev/docs
Using .of() to call mutating setters is not great practice since it ties
parts of the app together in ways that prevent reuse and composition.
Since people are now using the gallery app to copy from, let's use the
better practice of using callbacks.
* Enable the lint require documentation.
* Track how many public Flutter members lack docs
* Rename the .analysis_options file
This makes Atom happier in the flutter_tools package.
- Create a FlutterErrorDetails struct-like class that describes an
exception along with more details that aren't in the exception, like
where it was caught and what was going on when it was caught.
- Provide a FlutterError static API for handling these objects:
- FlutterError.onError which is called whenever Flutter catches an
error.
- FlutterError.reportError() which handles an error.
- FlutterError.dumpErrorToConsole() which is the default behavior
for onError.
- Removes all the existing exception handler callbacks.
- Replaces all the existing places that described exceptions using
debugPrint with calls to FlutterError.reportError().
- Extend lockState() to also catch exceptions, so that we catch
exceptions that happen during finalizers.
- Make the test framework catch errors and treat them as failures.
- Provide a mechanism to override this behavior in the test framework.
- Make the tests that used to depend on the exception handler
callbacks use this new mechanism.
- Make pump() also support the phase argument.
- Improve some tests using these new features.
Fixes#2356, #2988, #2985, #2220.