mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
![]() The FocusManager constructor was registering global event handlers on the shared RawKeyboard instance and the global pointer router. This posed a few problems: (1) there was no way to unregister these handlers, and (2) instantiating a second FocusManager would overwrite the existing focus manager's RawKeyboard handler. This was manifesting in unexpected ways, such as the fact that constructing a second BuildOwner (for a parallel tree, for instance) was obliterating the event handler for the main BuildOwner's focus manager, thus messing with focus. This change separates those global event registrations into a dedicated method, registerGlobalHandlers(), and overrides dispose() to properly unregister those handlers. |
||
---|---|---|
.. | ||
android | ||
ios | ||
lib | ||
raw | ||
rendering | ||
services | ||
test | ||
widgets | ||
analysis_options.yaml | ||
pubspec.yaml | ||
README.md |
Examples of Flutter's layered architecture
This directory contains several self-contained examples that illustrate Flutter's layered architecture.
-
raw/ These examples show how to program against the lowest layer of the system. They manually receive input packets and construct composited scenes.
-
rendering/ These examples use Flutter's render tree to structure your app using a retained tree of visual objects. These objects coordinate to determine their size and position on screen and to handle events.
-
widgets/ These examples use Flutter's widgets to build more elaborate apps using a reactive framework.
-
services/ These examples use services available in Flutter to interact with the host platform.
To run each example, specify the demo file on the flutter run
command line, for example:
flutter run raw/spinning_square.dart
flutter run rendering/spinning_square.dart
flutter run widgets/spinning_square.dart