mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
[ Widget Preview ] Add support for theme
and brightness
properties on Preview
(#167001)
The `theme` parameter of `Preview(...)` allows for developers to provide a callback that returns a `PreviewThemeData` instance which can contain theming data for Material and Cupertino widgets in both light and dark modes. The provided theme data will be injected into the widget tree and applied to the previewed widget. The `brightness` parameter allows for developers to specify an initial brightness setting (e.g., light vs dark mode) for the previewed widget. If not provided, the current system default is used. A new button has also been added to each widget preview card that allows for toggling between light and dark mode for individual previews. **Demo:** https://github.com/user-attachments/assets/f0a4a3bc-25d2-49b0-a5f6-9149eccfc1d4 Fixes https://github.com/flutter/flutter/issues/166436 Fixes https://github.com/flutter/flutter/issues/166275 Fixes https://github.com/flutter/flutter/issues/166279 Fixes https://github.com/flutter/flutter/issues/166437
This commit is contained in:
parent
427f8c8e15
commit
3595e7dad0
@ -21,10 +21,11 @@ dependencies:
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
characters: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
collection: 1.19.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -76,4 +77,4 @@ flutter:
|
||||
assets:
|
||||
- icon/test.png
|
||||
|
||||
# PUBSPEC CHECKSUM: 0ab4
|
||||
# PUBSPEC CHECKSUM: d60f
|
||||
|
@ -46,9 +46,10 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -87,4 +88,4 @@ flutter:
|
||||
- packages/flutter_gallery_assets/people/square/ali.png
|
||||
- packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png
|
||||
|
||||
# PUBSPEC CHECKSUM: 9688
|
||||
# PUBSPEC CHECKSUM: f9e2
|
||||
|
@ -53,8 +53,9 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 2.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -214,4 +215,4 @@ flutter:
|
||||
fonts:
|
||||
- asset: packages/flutter_gallery_assets/fonts/GalleryIcons.ttf
|
||||
|
||||
# PUBSPEC CHECKSUM: 9688
|
||||
# PUBSPEC CHECKSUM: f9e2
|
||||
|
@ -21,10 +21,11 @@ dependencies:
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
characters: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
collection: 1.19.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -141,4 +142,4 @@ flutter:
|
||||
- packages/flutter_gallery_assets/people/square/stella.png
|
||||
- packages/flutter_gallery_assets/people/square/trevor.png
|
||||
|
||||
# PUBSPEC CHECKSUM: 29c4
|
||||
# PUBSPEC CHECKSUM: 141f
|
||||
|
@ -22,10 +22,11 @@ dependencies:
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
characters: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
collection: 1.19.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -78,4 +79,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 4dee
|
||||
# PUBSPEC CHECKSUM: a149
|
||||
|
@ -49,9 +49,10 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -90,4 +91,4 @@ flutter:
|
||||
- packages/flutter_gallery_assets/people/square/ali.png
|
||||
- packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png
|
||||
|
||||
# PUBSPEC CHECKSUM: 2558
|
||||
# PUBSPEC CHECKSUM: 6ab2
|
||||
|
@ -44,9 +44,10 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -85,4 +86,4 @@ flutter:
|
||||
- packages/flutter_gallery_assets/people/square/ali.png
|
||||
- packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png
|
||||
|
||||
# PUBSPEC CHECKSUM: 9688
|
||||
# PUBSPEC CHECKSUM: f9e2
|
||||
|
@ -38,8 +38,9 @@ dev_dependencies:
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -81,4 +82,4 @@ flutter:
|
||||
generate: true
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 5c6e
|
||||
# PUBSPEC CHECKSUM: 65c8
|
||||
|
@ -25,10 +25,11 @@ dependencies:
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
checked_yaml: 2.0.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
collection: 1.19.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
gcloud: 0.8.18 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 2.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -77,4 +78,4 @@ dependencies:
|
||||
dev_dependencies:
|
||||
test_api: 0.7.4
|
||||
|
||||
# PUBSPEC CHECKSUM: e365
|
||||
# PUBSPEC CHECKSUM: ddbf
|
||||
|
@ -37,8 +37,9 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 2.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
http_multi_server: 3.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -67,4 +68,4 @@ dev_dependencies:
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 766d
|
||||
# PUBSPEC CHECKSUM: 5ac7
|
||||
|
@ -23,8 +23,9 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
http_multi_server: 3.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -57,4 +58,4 @@ dev_dependencies:
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: c1ed
|
||||
# PUBSPEC CHECKSUM: 8148
|
||||
|
@ -55,7 +55,8 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 2.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
http_multi_server: 3.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -75,4 +76,4 @@ dev_dependencies:
|
||||
web_socket: 0.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
web_socket_channel: 3.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 00d7
|
||||
# PUBSPEC CHECKSUM: 0932
|
||||
|
@ -40,8 +40,9 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 2.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -70,4 +71,4 @@ dev_dependencies:
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: f229
|
||||
# PUBSPEC CHECKSUM: fb83
|
||||
|
@ -19,10 +19,11 @@ dependencies:
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
characters: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
collection: 1.19.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -70,4 +71,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 61a9
|
||||
# PUBSPEC CHECKSUM: b504
|
||||
|
@ -57,9 +57,10 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -95,4 +96,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 9423
|
||||
# PUBSPEC CHECKSUM: 617d
|
||||
|
@ -39,9 +39,10 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -84,4 +85,4 @@ flutter:
|
||||
assets:
|
||||
- customassets/flutter_logo.png
|
||||
|
||||
# PUBSPEC CHECKSUM: 8aed
|
||||
# PUBSPEC CHECKSUM: 7548
|
||||
|
@ -17,9 +17,10 @@ dependencies:
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
characters: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
collection: 1.19.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -66,4 +67,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 9c1e
|
||||
# PUBSPEC CHECKSUM: 2d78
|
||||
|
@ -19,9 +19,10 @@ dependencies:
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
characters: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
collection: 1.19.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -86,4 +87,4 @@ flutter:
|
||||
flavors:
|
||||
- free
|
||||
|
||||
# PUBSPEC CHECKSUM: 8aed
|
||||
# PUBSPEC CHECKSUM: 7548
|
||||
|
@ -59,8 +59,9 @@ dev_dependencies:
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -272,4 +273,4 @@ flutter:
|
||||
- asset: packages/flutter_gallery_assets/fonts/merriweather/Merriweather-Regular.ttf
|
||||
- asset: packages/flutter_gallery_assets/fonts/merriweather/Merriweather-Light.ttf
|
||||
|
||||
# PUBSPEC CHECKSUM: 054a
|
||||
# PUBSPEC CHECKSUM: fea4
|
||||
|
@ -39,9 +39,10 @@ dev_dependencies:
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_util: 0.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
dart_style: 3.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
http_multi_server: 3.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -73,4 +74,4 @@ dev_dependencies:
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml_edit: 2.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: a221
|
||||
# PUBSPEC CHECKSUM: cb7b
|
||||
|
@ -39,9 +39,10 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -81,4 +82,4 @@ flutter:
|
||||
# the material Icons class.
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 8aed
|
||||
# PUBSPEC CHECKSUM: 7548
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: link_hook
|
||||
description: 'A new Dart FFI package project.'
|
||||
description: "A new Dart FFI package project."
|
||||
version: 0.0.1
|
||||
|
||||
environment:
|
||||
@ -34,9 +34,10 @@ dev_dependencies:
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_util: 0.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
dart_style: 3.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
http_multi_server: 3.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -68,4 +69,4 @@ dev_dependencies:
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml_edit: 2.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: a221
|
||||
# PUBSPEC CHECKSUM: cb7b
|
||||
|
@ -72,8 +72,9 @@ dev_dependencies:
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -311,4 +312,4 @@ flutter:
|
||||
fonts:
|
||||
- asset: packages/flutter_gallery_assets/fonts/GalleryIcons.ttf
|
||||
|
||||
# PUBSPEC CHECKSUM: 985f
|
||||
# PUBSPEC CHECKSUM: 07b9
|
||||
|
@ -17,9 +17,10 @@ dependencies:
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
characters: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
collection: 1.19.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -66,4 +67,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 9c1e
|
||||
# PUBSPEC CHECKSUM: 2d78
|
||||
|
@ -19,9 +19,10 @@ dependencies:
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
characters: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
collection: 1.19.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -80,4 +81,4 @@ flutter:
|
||||
assets:
|
||||
- assets/foo.png
|
||||
|
||||
# PUBSPEC CHECKSUM: 8aed
|
||||
# PUBSPEC CHECKSUM: 7548
|
||||
|
@ -57,8 +57,9 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 2.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -88,4 +89,4 @@ dev_dependencies:
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 1ca0
|
||||
# PUBSPEC CHECKSUM: bbfa
|
||||
|
@ -17,9 +17,10 @@ dependencies:
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
characters: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
collection: 1.19.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -63,4 +64,4 @@ dependencies:
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 9c1e
|
||||
# PUBSPEC CHECKSUM: 2d78
|
||||
|
@ -32,7 +32,8 @@ dev_dependencies:
|
||||
test: 1.25.15
|
||||
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
http_multi_server: 3.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
http_parser: 4.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -62,4 +63,4 @@ dev_dependencies:
|
||||
executables:
|
||||
snippets:
|
||||
|
||||
# PUBSPEC CHECKSUM: 76f8
|
||||
# PUBSPEC CHECKSUM: ae53
|
||||
|
@ -48,8 +48,9 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 2.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
http_multi_server: 3.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -76,4 +77,4 @@ dev_dependencies:
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: f5f8
|
||||
# PUBSPEC CHECKSUM: 5953
|
||||
|
@ -16,9 +16,10 @@ dev_dependencies:
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
collection: 1.19.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -57,4 +58,4 @@ dev_dependencies:
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: c1ed
|
||||
# PUBSPEC CHECKSUM: 8148
|
||||
|
@ -27,8 +27,9 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -59,4 +60,4 @@ dev_dependencies:
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 46b4
|
||||
# PUBSPEC CHECKSUM: 600f
|
||||
|
@ -38,8 +38,9 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 2.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
http_multi_server: 3.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -66,4 +67,4 @@ dev_dependencies:
|
||||
web_socket_channel: 3.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 9663
|
||||
# PUBSPEC CHECKSUM: f2bd
|
||||
|
@ -41,9 +41,10 @@ dev_dependencies:
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -94,4 +95,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 2cd7
|
||||
# PUBSPEC CHECKSUM: 8f32
|
||||
|
@ -25,9 +25,10 @@ dev_dependencies:
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -72,4 +73,4 @@ dev_dependencies:
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 8aed
|
||||
# PUBSPEC CHECKSUM: 7548
|
||||
|
@ -25,9 +25,10 @@ dev_dependencies:
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -75,4 +76,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 8aed
|
||||
# PUBSPEC CHECKSUM: 7548
|
||||
|
@ -25,9 +25,10 @@ dev_dependencies:
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -75,4 +76,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 8aed
|
||||
# PUBSPEC CHECKSUM: 7548
|
||||
|
@ -23,9 +23,10 @@ dev_dependencies:
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -68,4 +69,4 @@ dev_dependencies:
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 61a9
|
||||
# PUBSPEC CHECKSUM: b504
|
||||
|
@ -2,10 +2,13 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
/// @docImport 'media_query.dart';
|
||||
/// @docImport 'package:/flutter/cupertino.dart';
|
||||
/// @docImport 'package:/flutter/material.dart';
|
||||
library;
|
||||
|
||||
import 'framework.dart';
|
||||
import 'package:flutter/cupertino.dart' show CupertinoThemeData;
|
||||
import 'package:flutter/material.dart' show Brightness, ThemeData;
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
/// Annotation used to mark functions that return a widget preview.
|
||||
///
|
||||
@ -46,10 +49,21 @@ import 'framework.dart';
|
||||
/// }
|
||||
/// ```
|
||||
/// {@end-tool}
|
||||
///
|
||||
/// **Important Note:** all values provided to the `@Preview()` annotation must
|
||||
/// be constant and non-private.
|
||||
// TODO(bkonyi): link to actual documentation when available.
|
||||
base class Preview {
|
||||
/// Annotation used to mark functions that return widget previews.
|
||||
const Preview({this.name, this.width, this.height, this.textScaleFactor, this.wrapper});
|
||||
const Preview({
|
||||
this.name,
|
||||
this.width,
|
||||
this.height,
|
||||
this.textScaleFactor,
|
||||
this.wrapper,
|
||||
this.theme,
|
||||
this.brightness,
|
||||
});
|
||||
|
||||
/// A description to be displayed alongside the preview.
|
||||
///
|
||||
@ -78,6 +92,58 @@ base class Preview {
|
||||
///
|
||||
/// This function can be used to perform dependency injection or setup
|
||||
/// additional scaffolding needed to correctly render the preview.
|
||||
///
|
||||
/// Note: this must be a reference to a static, public function defined as
|
||||
/// either a top-level function or static member in a class.
|
||||
// TODO(bkonyi): provide an example.
|
||||
final Widget Function(Widget)? wrapper;
|
||||
|
||||
/// A callback to return Material and Cupertino theming data to be applied
|
||||
/// to the previewed [Widget].
|
||||
///
|
||||
/// Note: this must be a reference to a static, public function defined as
|
||||
/// either a top-level function or static member in a class.
|
||||
final PreviewThemeData Function()? theme;
|
||||
|
||||
/// Sets the initial theme brightness.
|
||||
///
|
||||
/// If not provided, the current system default brightness will be used.
|
||||
final Brightness? brightness;
|
||||
}
|
||||
|
||||
/// A collection of [ThemeData] and [CupertinoThemeData] instances for use in
|
||||
/// widget previews.
|
||||
base class PreviewThemeData {
|
||||
/// Creates a collection of [ThemeData] and [CupertinoThemeData] instances
|
||||
/// for use in widget previews.
|
||||
///
|
||||
/// If a theme isn't provided for a specific configuration, no theme data
|
||||
/// will be applied and the default theme will be used.
|
||||
const PreviewThemeData({
|
||||
this.materialLight,
|
||||
this.materialDark,
|
||||
this.cupertinoLight,
|
||||
this.cupertinoDark,
|
||||
});
|
||||
|
||||
/// The Material [ThemeData] to apply when light mode is enabled.
|
||||
final ThemeData? materialLight;
|
||||
|
||||
/// The Material [ThemeData] to apply when dark mode is enabled.
|
||||
final ThemeData? materialDark;
|
||||
|
||||
/// The Cupertino [CupertinoThemeData] to apply when light mode is enabled.
|
||||
final CupertinoThemeData? cupertinoLight;
|
||||
|
||||
/// The Cupertino [CupertinoThemeData] to apply when dark mode is enabled.
|
||||
final CupertinoThemeData? cupertinoDark;
|
||||
|
||||
/// Returns the pair of [ThemeData] and [CupertinoThemeData] corresponding to
|
||||
/// the value of [brightness].
|
||||
(ThemeData?, CupertinoThemeData?) themeForBrightness(Brightness brightness) {
|
||||
if (brightness == Brightness.light) {
|
||||
return (materialLight, cupertinoLight);
|
||||
}
|
||||
return (materialDark, cupertinoDark);
|
||||
}
|
||||
}
|
10
packages/flutter/lib/widget_previews.dart
Normal file
10
packages/flutter/lib/widget_previews.dart
Normal file
@ -0,0 +1,10 @@
|
||||
// Copyright 2014 The Flutter Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
/// The Flutter widget preview annotations and data classes.
|
||||
///
|
||||
/// To use, import `package:flutter/widget_previews.dart`.
|
||||
library widget_previews;
|
||||
|
||||
export 'src/widget_previews/widget_previews.dart';
|
@ -174,7 +174,6 @@ export 'src/widgets/view.dart';
|
||||
export 'src/widgets/viewport.dart';
|
||||
export 'src/widgets/visibility.dart';
|
||||
export 'src/widgets/widget_inspector.dart';
|
||||
export 'src/widgets/widget_preview.dart';
|
||||
export 'src/widgets/widget_span.dart';
|
||||
export 'src/widgets/widget_state.dart';
|
||||
export 'src/widgets/will_pop_scope.dart';
|
||||
|
@ -46,8 +46,9 @@ dev_dependencies:
|
||||
_fe_analyzer_shared: 80.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 2.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -76,4 +77,4 @@ dev_dependencies:
|
||||
webkit_inspection_protocol: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: f5f8
|
||||
# PUBSPEC CHECKSUM: 5953
|
||||
|
@ -97,6 +97,7 @@ class PreviewCodeGenerator {
|
||||
'package:flutter/widgets.dart',
|
||||
).newInstance(<Expression>[], <String, Expression>{'builder': previewWidget});
|
||||
}
|
||||
|
||||
if (preview.hasWrapper) {
|
||||
previewWidget = refer(
|
||||
preview.wrapper!,
|
||||
@ -119,6 +120,16 @@ class PreviewCodeGenerator {
|
||||
key: PreviewDetails.kTextScaleFactor,
|
||||
property: preview.textScaleFactor,
|
||||
),
|
||||
if (preview.theme != null)
|
||||
PreviewDetails.kTheme: refer(
|
||||
preview.theme!,
|
||||
preview.themeLibraryUri,
|
||||
).call(<Expression>[]),
|
||||
if (preview.brightness != null)
|
||||
PreviewDetails.kBrightness: refer(
|
||||
preview.brightness!,
|
||||
preview.brightnessLibraryUri ?? 'package:flutter/foundation.dart',
|
||||
),
|
||||
'builder': previewWidget,
|
||||
}),
|
||||
);
|
||||
|
@ -70,12 +70,20 @@ final class PreviewDetails {
|
||||
String? textScaleFactor,
|
||||
String? wrapper,
|
||||
String? wrapperLibraryUri = '',
|
||||
String? theme,
|
||||
String? themeLibraryUri = '',
|
||||
String? brightness,
|
||||
String? brightnessLibraryUri = '',
|
||||
}) : _name = name,
|
||||
_width = width,
|
||||
_height = height,
|
||||
_textScaleFactor = textScaleFactor,
|
||||
_wrapper = wrapper,
|
||||
_wrapperLibraryUri = wrapperLibraryUri;
|
||||
_wrapperLibraryUri = wrapperLibraryUri,
|
||||
_theme = theme,
|
||||
_themeLibraryUri = themeLibraryUri,
|
||||
_brightness = brightness,
|
||||
_brightnessLibraryUri = brightnessLibraryUri;
|
||||
|
||||
@visibleForTesting
|
||||
PreviewDetails copyWith({
|
||||
@ -87,6 +95,10 @@ final class PreviewDetails {
|
||||
String? textScaleFactor,
|
||||
String? wrapper,
|
||||
String? wrapperLibraryUri,
|
||||
String? theme,
|
||||
String? themeLibraryUri,
|
||||
String? brightness,
|
||||
String? brightnessLibraryUri,
|
||||
}) {
|
||||
return PreviewDetails.test(
|
||||
functionName: functionName ?? this.functionName,
|
||||
@ -97,6 +109,10 @@ final class PreviewDetails {
|
||||
textScaleFactor: textScaleFactor ?? this.textScaleFactor,
|
||||
wrapper: wrapper ?? this.wrapper,
|
||||
wrapperLibraryUri: wrapperLibraryUri ?? this.wrapperLibraryUri,
|
||||
theme: theme ?? this.theme,
|
||||
themeLibraryUri: themeLibraryUri ?? this.themeLibraryUri,
|
||||
brightness: brightness ?? this.brightness,
|
||||
brightnessLibraryUri: brightnessLibraryUri ?? this.brightnessLibraryUri,
|
||||
);
|
||||
}
|
||||
|
||||
@ -106,6 +122,10 @@ final class PreviewDetails {
|
||||
static const String kTextScaleFactor = 'textScaleFactor';
|
||||
static const String kWrapper = 'wrapper';
|
||||
static const String kWrapperLibraryUri = 'wrapperLibraryUrl';
|
||||
static const String kTheme = 'theme';
|
||||
static const String kThemeLibraryUri = 'themeLibraryUrl';
|
||||
static const String kBrightness = 'brightness';
|
||||
static const String kBrightnessLibraryUri = 'brightnessLibraryUrl';
|
||||
|
||||
/// The name of the function returning the preview.
|
||||
final String functionName;
|
||||
@ -155,10 +175,24 @@ final class PreviewDetails {
|
||||
|
||||
bool get hasWrapper => _wrapper != null;
|
||||
|
||||
String? get theme => _theme;
|
||||
String? _theme;
|
||||
|
||||
String? get themeLibraryUri => _themeLibraryUri;
|
||||
String? _themeLibraryUri;
|
||||
|
||||
String? get brightness => _brightness;
|
||||
String? _brightness;
|
||||
|
||||
String? get brightnessLibraryUri => _brightnessLibraryUri;
|
||||
String? _brightnessLibraryUri;
|
||||
|
||||
void _setField({required NamedExpression node}) {
|
||||
final String key = node.name.label.name;
|
||||
final Expression expression = node.expression;
|
||||
final String source = expression.toSource();
|
||||
final String? libraryUri =
|
||||
expression is SimpleIdentifier ? expression.element!.library2!.identifier : null;
|
||||
switch (key) {
|
||||
case kName:
|
||||
_name = source;
|
||||
@ -170,7 +204,13 @@ final class PreviewDetails {
|
||||
_textScaleFactor = source;
|
||||
case kWrapper:
|
||||
_wrapper = source;
|
||||
_wrapperLibraryUri = (node.expression as SimpleIdentifier).element!.library2!.identifier;
|
||||
_wrapperLibraryUri = libraryUri;
|
||||
case kTheme:
|
||||
_theme = source;
|
||||
_themeLibraryUri = libraryUri;
|
||||
case kBrightness:
|
||||
_brightness = source;
|
||||
_brightnessLibraryUri = libraryUri;
|
||||
default:
|
||||
throw StateError('Unknown Preview field "$name": $source');
|
||||
}
|
||||
@ -190,14 +230,19 @@ final class PreviewDetails {
|
||||
other.width == width &&
|
||||
other.textScaleFactor == textScaleFactor &&
|
||||
other.wrapper == wrapper &&
|
||||
other.wrapperLibraryUri == wrapperLibraryUri;
|
||||
other.wrapperLibraryUri == wrapperLibraryUri &&
|
||||
other.theme == theme &&
|
||||
other.themeLibraryUri == themeLibraryUri &&
|
||||
other.brightness == brightness &&
|
||||
other.brightnessLibraryUri == brightnessLibraryUri;
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() =>
|
||||
'PreviewDetails(function: $functionName isBuilder: $isBuilder $kName: $name '
|
||||
'$kWidth: $width $kHeight: $height $kTextScaleFactor: $textScaleFactor $kWrapper: $wrapper '
|
||||
'$kWrapperLibraryUri: $wrapperLibraryUri)';
|
||||
'$kWrapperLibraryUri: $wrapperLibraryUri $kTheme: $theme $kThemeLibraryUri: $themeLibraryUri '
|
||||
'$kBrightness: $_brightness $kBrightnessLibraryUri: $_brightnessLibraryUri)';
|
||||
|
||||
@override
|
||||
// ignore: avoid_equals_and_hash_code_on_mutable_classes
|
||||
@ -209,6 +254,10 @@ final class PreviewDetails {
|
||||
textScaleFactor,
|
||||
wrapper,
|
||||
wrapperLibraryUri,
|
||||
theme,
|
||||
themeLibraryUri,
|
||||
brightness,
|
||||
brightnessLibraryUri,
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@ dependencies:
|
||||
dwds: 24.3.10
|
||||
code_builder: 4.10.1
|
||||
completion: 1.0.1
|
||||
coverage: 1.11.1
|
||||
coverage: 1.12.0
|
||||
crypto: 3.0.6
|
||||
ffi: 2.1.4
|
||||
file: 7.0.1
|
||||
@ -74,6 +74,7 @@ dependencies:
|
||||
browser_launcher: 1.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
built_collection: 5.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
built_value: 8.9.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 1.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
dap: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -122,4 +123,4 @@ dartdoc:
|
||||
# Exclude this package from the hosted API docs.
|
||||
nodoc: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 4252
|
||||
# PUBSPEC CHECKSUM: d7ac
|
||||
|
@ -124,3 +124,39 @@ class SoftRestartButton extends StatelessWidget {
|
||||
softRestartListenable.value = true;
|
||||
}
|
||||
}
|
||||
|
||||
extension on Brightness {
|
||||
Brightness get invert => isLight ? Brightness.dark : Brightness.light;
|
||||
bool get isLight => this == Brightness.light;
|
||||
}
|
||||
|
||||
/// A button that toggles the current theme brightness.
|
||||
class BrightnessToggleButton extends StatelessWidget {
|
||||
const BrightnessToggleButton({
|
||||
super.key,
|
||||
required this.enabled,
|
||||
required this.brightnessListenable,
|
||||
});
|
||||
|
||||
final ValueNotifier<Brightness> brightnessListenable;
|
||||
final bool enabled;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ValueListenableBuilder<Brightness>(
|
||||
valueListenable: brightnessListenable,
|
||||
builder: (context, brightness, _) {
|
||||
final brightness = brightnessListenable.value;
|
||||
return _WidgetPreviewIconButton(
|
||||
tooltip: 'Switch to ${brightness.isLight ? 'dark' : 'light'} mode',
|
||||
onPressed: enabled ? _toggleBrightness : null,
|
||||
icon: brightness.isLight ? Icons.dark_mode : Icons.light_mode,
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
void _toggleBrightness() {
|
||||
brightnessListenable.value = brightnessListenable.value.invert;
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,9 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:flutter/widget_previews.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
/// Wraps a [Widget], initializing various state and properties to allow for
|
||||
@ -23,6 +26,8 @@ class WidgetPreview {
|
||||
this.width,
|
||||
this.height,
|
||||
this.textScaleFactor,
|
||||
this.brightness,
|
||||
this.theme,
|
||||
});
|
||||
|
||||
/// A description to be displayed alongside the preview.
|
||||
@ -50,4 +55,14 @@ class WidgetPreview {
|
||||
/// If not provided, the default text scaling factor provided by [MediaQuery]
|
||||
/// will be used.
|
||||
final double? textScaleFactor;
|
||||
|
||||
/// Material and Cupertino theming data to be applied to the previewed [Widget].
|
||||
///
|
||||
/// If not provided, the default theme will be used.
|
||||
final PreviewThemeData? theme;
|
||||
|
||||
/// Sets the initial theme brightness.
|
||||
///
|
||||
/// If not provided, the current system default brightness will be used.
|
||||
final Brightness? brightness;
|
||||
}
|
||||
|
@ -4,11 +4,13 @@
|
||||
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:flutter/foundation.dart' show kIsWeb;
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/foundation.dart' show kIsWeb, ValueListenable;
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/rendering.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter/widget_previews.dart';
|
||||
|
||||
import 'package:stack_trace/stack_trace.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
@ -114,7 +116,7 @@ class NoPreviewsDetectedWidget extends StatelessWidget {
|
||||
static Uri documentationUrl = Uri.https(
|
||||
'github.com',
|
||||
'flutter/flutter/blob/master/packages/flutter/'
|
||||
'lib/src/widgets/widget_preview.dart',
|
||||
'lib/src/widget_previews/widget_previews.dart',
|
||||
);
|
||||
|
||||
@override
|
||||
@ -159,7 +161,13 @@ class WidgetPreviewWidget extends StatefulWidget {
|
||||
|
||||
class WidgetPreviewWidgetState extends State<WidgetPreviewWidget> {
|
||||
final transformationController = TransformationController();
|
||||
final deviceOrientation = ValueNotifier<Orientation>(Orientation.portrait);
|
||||
|
||||
// Set the initial preview brightness based on the platform default or the
|
||||
// value explicitly specified for the preview.
|
||||
late final brightnessListenable = ValueNotifier<Brightness>(
|
||||
widget.preview.brightness ?? MediaQuery.platformBrightnessOf(context),
|
||||
);
|
||||
|
||||
final softRestartListenable = ValueNotifier<bool>(false);
|
||||
final key = GlobalKey();
|
||||
|
||||
@ -168,8 +176,30 @@ class WidgetPreviewWidgetState extends State<WidgetPreviewWidget> {
|
||||
(key.currentContext!.findRenderObject() as RenderBox).size;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
void didUpdateWidget(WidgetPreviewWidget oldWidget) {
|
||||
super.didUpdateWidget(oldWidget);
|
||||
|
||||
final previousBrightness = oldWidget.preview.brightness;
|
||||
final newBrightness = widget.preview.brightness;
|
||||
final currentBrightness = brightnessListenable.value;
|
||||
final systemBrightness = MediaQuery.platformBrightnessOf(context);
|
||||
|
||||
// No initial brightness was previously defined.
|
||||
if (previousBrightness == null && newBrightness != null) {
|
||||
if (currentBrightness == systemBrightness) {
|
||||
// If the current brightness is different than the system brightness, the user has manually
|
||||
// changed the brightness through the UI, so don't change it automatically.
|
||||
brightnessListenable.value = newBrightness;
|
||||
}
|
||||
}
|
||||
// Changing the initial brightness to either a new initial brightness or system brightness.
|
||||
else if (previousBrightness != null) {
|
||||
// If the current brightness is different than the initial brightness, the user has manually
|
||||
// changed the brightness through the UI, so don't change it automatically.
|
||||
if (currentBrightness == previousBrightness) {
|
||||
brightnessListenable.value = newBrightness ?? systemBrightness;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
@ -196,7 +226,10 @@ class WidgetPreviewWidgetState extends State<WidgetPreviewWidget> {
|
||||
try {
|
||||
final previewWidget = Container(
|
||||
key: key,
|
||||
child: widget.preview.builder(),
|
||||
child: WidgetPreviewTheming(
|
||||
theme: widget.preview.theme,
|
||||
child: widget.preview.builder(),
|
||||
),
|
||||
);
|
||||
if (performRestart) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
@ -228,7 +261,11 @@ class WidgetPreviewWidgetState extends State<WidgetPreviewWidget> {
|
||||
),
|
||||
);
|
||||
|
||||
preview = MediaQuery(data: _buildMediaQueryOverride(), child: preview);
|
||||
preview = WidgetPreviewMediaQueryOverride(
|
||||
preview: widget.preview,
|
||||
brightnessListenable: brightnessListenable,
|
||||
child: preview,
|
||||
);
|
||||
|
||||
preview = Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
@ -258,6 +295,11 @@ class WidgetPreviewWidgetState extends State<WidgetPreviewWidget> {
|
||||
enabled: !errorThrownDuringTreeConstruction,
|
||||
),
|
||||
const SizedBox(width: 30),
|
||||
BrightnessToggleButton(
|
||||
enabled: !errorThrownDuringTreeConstruction,
|
||||
brightnessListenable: brightnessListenable,
|
||||
),
|
||||
const SizedBox(width: 10),
|
||||
SoftRestartButton(
|
||||
enabled: !errorThrownDuringTreeConstruction,
|
||||
softRestartListenable: softRestartListenable,
|
||||
@ -277,22 +319,97 @@ class WidgetPreviewWidgetState extends State<WidgetPreviewWidget> {
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
MediaQueryData _buildMediaQueryOverride() {
|
||||
var mediaQueryData = MediaQuery.of(context);
|
||||
/// Applies theming defined in [theme] to [child].
|
||||
class WidgetPreviewTheming extends StatelessWidget {
|
||||
const WidgetPreviewTheming({
|
||||
super.key,
|
||||
required this.theme,
|
||||
required this.child,
|
||||
});
|
||||
|
||||
if (widget.preview.textScaleFactor != null) {
|
||||
final Widget child;
|
||||
|
||||
/// The set of themes to be applied to [child].
|
||||
final PreviewThemeData? theme;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final themeData = theme;
|
||||
if (themeData == null) {
|
||||
return child;
|
||||
}
|
||||
final (materialTheme, cupertinoTheme) = themeData.themeForBrightness(
|
||||
MediaQuery.platformBrightnessOf(context),
|
||||
);
|
||||
Widget result = child;
|
||||
if (materialTheme != null) {
|
||||
result = Theme(data: materialTheme, child: result);
|
||||
}
|
||||
if (cupertinoTheme != null) {
|
||||
result = CupertinoTheme(data: cupertinoTheme, child: result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// Wraps the previewed [child] with the correct [MediaQueryData] overrides
|
||||
/// based on [preview] and the current device [Brightness].
|
||||
class WidgetPreviewMediaQueryOverride extends StatelessWidget {
|
||||
const WidgetPreviewMediaQueryOverride({
|
||||
super.key,
|
||||
required this.preview,
|
||||
required this.brightnessListenable,
|
||||
required this.child,
|
||||
});
|
||||
|
||||
/// The preview specification used to render the preview.
|
||||
final WidgetPreview preview;
|
||||
|
||||
/// The currently set brightness for this preview instance.
|
||||
final ValueListenable<Brightness> brightnessListenable;
|
||||
|
||||
final Widget child;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ValueListenableBuilder<Brightness>(
|
||||
valueListenable: brightnessListenable,
|
||||
builder: (context, brightness, _) {
|
||||
return MediaQuery(
|
||||
data: _buildMediaQueryOverride(
|
||||
context: context,
|
||||
brightness: brightness,
|
||||
),
|
||||
// Use mediaQueryPreview instead of preview to avoid capturing preview
|
||||
// and creating an infinite loop.
|
||||
child: child,
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
MediaQueryData _buildMediaQueryOverride({
|
||||
required BuildContext context,
|
||||
required Brightness brightness,
|
||||
}) {
|
||||
var mediaQueryData = MediaQuery.of(
|
||||
context,
|
||||
).copyWith(platformBrightness: brightness);
|
||||
|
||||
if (preview.textScaleFactor != null) {
|
||||
mediaQueryData = mediaQueryData.copyWith(
|
||||
textScaler: TextScaler.linear(widget.preview.textScaleFactor!),
|
||||
textScaler: TextScaler.linear(preview.textScaleFactor!),
|
||||
);
|
||||
}
|
||||
|
||||
var size = Size(
|
||||
widget.preview.width ?? mediaQueryData.size.width,
|
||||
widget.preview.height ?? mediaQueryData.size.height,
|
||||
preview.width ?? mediaQueryData.size.width,
|
||||
preview.height ?? mediaQueryData.size.height,
|
||||
);
|
||||
|
||||
if (widget.preview.width != null || widget.preview.height != null) {
|
||||
if (preview.width != null || preview.height != null) {
|
||||
mediaQueryData = mediaQueryData.copyWith(size: size);
|
||||
}
|
||||
|
||||
|
@ -110,6 +110,8 @@ void main() {
|
||||
height: '100',
|
||||
textScaleFactor: '2',
|
||||
wrapper: 'testWrapper',
|
||||
theme: 'theming',
|
||||
brightness: 'Brightness.dark',
|
||||
),
|
||||
PreviewDetails.test(
|
||||
functionName: 'MyWidget.preview',
|
||||
@ -185,6 +187,8 @@ void main() {
|
||||
height: '100',
|
||||
textScaleFactor: '2',
|
||||
wrapper: 'testWrapper',
|
||||
theme: 'theming',
|
||||
brightness: 'Brightness.dark',
|
||||
),
|
||||
PreviewDetails.test(
|
||||
functionName: 'MyWidget.preview',
|
||||
@ -256,7 +260,15 @@ PreviewMapping stripNonDeterministicFields(PreviewMapping mapping) {
|
||||
) {
|
||||
return MapEntry<PreviewPath, List<PreviewDetails>>(
|
||||
key,
|
||||
value.map((PreviewDetails details) => details.copyWith(wrapperLibraryUri: '')).toList(),
|
||||
value
|
||||
.map(
|
||||
(PreviewDetails details) => details.copyWith(
|
||||
wrapperLibraryUri: '',
|
||||
themeLibraryUri: '',
|
||||
brightnessLibraryUri: '',
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
);
|
||||
});
|
||||
}
|
||||
@ -276,7 +288,14 @@ Widget testWrapper(Widget child) {
|
||||
return child;
|
||||
}
|
||||
|
||||
@Preview(name: 'Attributes preview', height: 100, width: 100.0, textScaleFactor: 2, wrapper: testWrapper)
|
||||
PreviewThemeData theming() => PreviewThemeData(
|
||||
materialLight: ThemeData(colorScheme: ColorScheme.light(primary: Colors.red)),
|
||||
materialDark: ThemeData(colorScheme: ColorScheme.dark(primary: Colors.blue)),
|
||||
cupertinoLight: CupertinoThemeData(primaryColor: Colors.yellow),
|
||||
cupertinoDark: CupertinoThemeData(primaryColor: Colors.purple),
|
||||
);
|
||||
|
||||
@Preview(name: 'Attributes preview', height: 100, width: 100.0, textScaleFactor: 2, wrapper: testWrapper, theme: theming, brightness: Brightness.dark)
|
||||
Widget attributesPreview() {
|
||||
return Text('Attributes');
|
||||
}
|
||||
|
@ -47,7 +47,12 @@ void main() {
|
||||
],
|
||||
(path: '', uri: Uri(path: 'src/bar.dart')): <PreviewDetails>[
|
||||
PreviewDetails(functionName: 'barPreview1', isBuilder: false),
|
||||
PreviewDetails(functionName: 'barPreview2', isBuilder: false),
|
||||
PreviewDetails.test(
|
||||
functionName: 'barPreview2',
|
||||
isBuilder: false,
|
||||
brightness: 'brightnessConstant',
|
||||
brightnessLibraryUri: 'brightness.dart',
|
||||
),
|
||||
PreviewDetails.test(
|
||||
functionName: 'barPreview3',
|
||||
isBuilder: true,
|
||||
@ -57,6 +62,9 @@ void main() {
|
||||
textScaleFactor: '50',
|
||||
wrapper: 'wrapper',
|
||||
wrapperLibraryUri: 'wrapper.dart',
|
||||
brightness: 'Brightness.dark',
|
||||
theme: 'myThemeCallback',
|
||||
themeLibraryUri: 'theme.dart',
|
||||
),
|
||||
],
|
||||
},
|
||||
@ -65,7 +73,8 @@ void main() {
|
||||
|
||||
// Check that the generated file contains:
|
||||
// - An import of the widget preview library
|
||||
// - Prefixed imports for both 'foo.dart' and 'src/bar.dart'
|
||||
// - Prefixed imports for 'foo.dart', 'src/bar.dart', 'wrapper.dart',
|
||||
// 'brightness.dart', and 'theme.dart'
|
||||
// - A top-level function 'List<WidgetPreview> previews()'
|
||||
// - A returned list containing function calls to 'preview()' from 'foo.dart' and
|
||||
// 'barPreview1()', 'barPreview2()', and 'barPreview3()' from 'src/bar.dart'
|
||||
@ -73,7 +82,7 @@ void main() {
|
||||
// The generated file is unfortunately unformatted.
|
||||
const String expectedGeneratedPreviewFileContents = '''
|
||||
// ignore_for_file: no_leading_underscores_for_library_prefixes
|
||||
import 'widget_preview.dart' as _i1;import 'foo.dart' as _i2;import 'src/bar.dart' as _i3;import 'wrapper.dart' as _i4;import 'package:flutter/widgets.dart' as _i5;List<_i1.WidgetPreview> previews() => [_i1.WidgetPreview(builder: () => _i2.preview()), _i1.WidgetPreview(builder: () => _i3.barPreview1()), _i1.WidgetPreview(builder: () => _i3.barPreview2()), _i1.WidgetPreview(name: Foo, height: 456.0, width: 123.0, textScaleFactor: 50.0, builder: () => _i4.wrapper(_i5.Builder(builder: _i3.barPreview3())), ), ];''';
|
||||
import 'widget_preview.dart' as _i1;import 'foo.dart' as _i2;import 'src/bar.dart' as _i3;import 'brightness.dart' as _i4;import 'theme.dart' as _i5;import '' as _i6;import 'wrapper.dart' as _i7;import 'package:flutter/widgets.dart' as _i8;List<_i1.WidgetPreview> previews() => [_i1.WidgetPreview(builder: () => _i2.preview()), _i1.WidgetPreview(builder: () => _i3.barPreview1()), _i1.WidgetPreview(brightness: _i4.brightnessConstant, builder: () => _i3.barPreview2(), ), _i1.WidgetPreview(name: Foo, height: 456.0, width: 123.0, textScaleFactor: 50.0, theme: _i5.myThemeCallback(), brightness: _i6.Brightness.dark, builder: () => _i7.wrapper(_i8.Builder(builder: _i3.barPreview3())), ), ];''';
|
||||
expect(generatedPreviewFile.readAsStringSync(), expectedGeneratedPreviewFileContents);
|
||||
|
||||
// Regenerate the generated file with no previews.
|
||||
|
@ -124,3 +124,39 @@ class SoftRestartButton extends StatelessWidget {
|
||||
softRestartListenable.value = true;
|
||||
}
|
||||
}
|
||||
|
||||
extension on Brightness {
|
||||
Brightness get invert => isLight ? Brightness.dark : Brightness.light;
|
||||
bool get isLight => this == Brightness.light;
|
||||
}
|
||||
|
||||
/// A button that toggles the current theme brightness.
|
||||
class BrightnessToggleButton extends StatelessWidget {
|
||||
const BrightnessToggleButton({
|
||||
super.key,
|
||||
required this.enabled,
|
||||
required this.brightnessListenable,
|
||||
});
|
||||
|
||||
final ValueNotifier<Brightness> brightnessListenable;
|
||||
final bool enabled;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ValueListenableBuilder<Brightness>(
|
||||
valueListenable: brightnessListenable,
|
||||
builder: (context, brightness, _) {
|
||||
final brightness = brightnessListenable.value;
|
||||
return _WidgetPreviewIconButton(
|
||||
tooltip: 'Switch to ${brightness.isLight ? 'dark' : 'light'} mode',
|
||||
onPressed: enabled ? _toggleBrightness : null,
|
||||
icon: brightness.isLight ? Icons.dark_mode : Icons.light_mode,
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
void _toggleBrightness() {
|
||||
brightnessListenable.value = brightnessListenable.value.invert;
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,9 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:flutter/widget_previews.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
/// Wraps a [Widget], initializing various state and properties to allow for
|
||||
@ -23,6 +26,8 @@ class WidgetPreview {
|
||||
this.width,
|
||||
this.height,
|
||||
this.textScaleFactor,
|
||||
this.brightness,
|
||||
this.theme,
|
||||
});
|
||||
|
||||
/// A description to be displayed alongside the preview.
|
||||
@ -50,4 +55,14 @@ class WidgetPreview {
|
||||
/// If not provided, the default text scaling factor provided by [MediaQuery]
|
||||
/// will be used.
|
||||
final double? textScaleFactor;
|
||||
|
||||
/// Material and Cupertino theming data to be applied to the previewed [Widget].
|
||||
///
|
||||
/// If not provided, the default theme will be used.
|
||||
final PreviewThemeData? theme;
|
||||
|
||||
/// Sets the initial theme brightness.
|
||||
///
|
||||
/// If not provided, the current system default brightness will be used.
|
||||
final Brightness? brightness;
|
||||
}
|
||||
|
@ -4,11 +4,13 @@
|
||||
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:flutter/foundation.dart' show kIsWeb;
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/foundation.dart' show kIsWeb, ValueListenable;
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/rendering.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter/widget_previews.dart';
|
||||
|
||||
import 'package:stack_trace/stack_trace.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
@ -114,7 +116,7 @@ class NoPreviewsDetectedWidget extends StatelessWidget {
|
||||
static Uri documentationUrl = Uri.https(
|
||||
'github.com',
|
||||
'flutter/flutter/blob/master/packages/flutter/'
|
||||
'lib/src/widgets/widget_preview.dart',
|
||||
'lib/src/widget_previews/widget_previews.dart',
|
||||
);
|
||||
|
||||
@override
|
||||
@ -159,7 +161,13 @@ class WidgetPreviewWidget extends StatefulWidget {
|
||||
|
||||
class WidgetPreviewWidgetState extends State<WidgetPreviewWidget> {
|
||||
final transformationController = TransformationController();
|
||||
final deviceOrientation = ValueNotifier<Orientation>(Orientation.portrait);
|
||||
|
||||
// Set the initial preview brightness based on the platform default or the
|
||||
// value explicitly specified for the preview.
|
||||
late final brightnessListenable = ValueNotifier<Brightness>(
|
||||
widget.preview.brightness ?? MediaQuery.platformBrightnessOf(context),
|
||||
);
|
||||
|
||||
final softRestartListenable = ValueNotifier<bool>(false);
|
||||
final key = GlobalKey();
|
||||
|
||||
@ -168,8 +176,30 @@ class WidgetPreviewWidgetState extends State<WidgetPreviewWidget> {
|
||||
(key.currentContext!.findRenderObject() as RenderBox).size;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
void didUpdateWidget(WidgetPreviewWidget oldWidget) {
|
||||
super.didUpdateWidget(oldWidget);
|
||||
|
||||
final previousBrightness = oldWidget.preview.brightness;
|
||||
final newBrightness = widget.preview.brightness;
|
||||
final currentBrightness = brightnessListenable.value;
|
||||
final systemBrightness = MediaQuery.platformBrightnessOf(context);
|
||||
|
||||
// No initial brightness was previously defined.
|
||||
if (previousBrightness == null && newBrightness != null) {
|
||||
if (currentBrightness == systemBrightness) {
|
||||
// If the current brightness is different than the system brightness, the user has manually
|
||||
// changed the brightness through the UI, so don't change it automatically.
|
||||
brightnessListenable.value = newBrightness;
|
||||
}
|
||||
}
|
||||
// Changing the initial brightness to either a new initial brightness or system brightness.
|
||||
else if (previousBrightness != null) {
|
||||
// If the current brightness is different than the initial brightness, the user has manually
|
||||
// changed the brightness through the UI, so don't change it automatically.
|
||||
if (currentBrightness == previousBrightness) {
|
||||
brightnessListenable.value = newBrightness ?? systemBrightness;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
@ -196,7 +226,10 @@ class WidgetPreviewWidgetState extends State<WidgetPreviewWidget> {
|
||||
try {
|
||||
final previewWidget = Container(
|
||||
key: key,
|
||||
child: widget.preview.builder(),
|
||||
child: WidgetPreviewTheming(
|
||||
theme: widget.preview.theme,
|
||||
child: widget.preview.builder(),
|
||||
),
|
||||
);
|
||||
if (performRestart) {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
@ -228,7 +261,11 @@ class WidgetPreviewWidgetState extends State<WidgetPreviewWidget> {
|
||||
),
|
||||
);
|
||||
|
||||
preview = MediaQuery(data: _buildMediaQueryOverride(), child: preview);
|
||||
preview = WidgetPreviewMediaQueryOverride(
|
||||
preview: widget.preview,
|
||||
brightnessListenable: brightnessListenable,
|
||||
child: preview,
|
||||
);
|
||||
|
||||
preview = Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
@ -258,6 +295,11 @@ class WidgetPreviewWidgetState extends State<WidgetPreviewWidget> {
|
||||
enabled: !errorThrownDuringTreeConstruction,
|
||||
),
|
||||
const SizedBox(width: 30),
|
||||
BrightnessToggleButton(
|
||||
enabled: !errorThrownDuringTreeConstruction,
|
||||
brightnessListenable: brightnessListenable,
|
||||
),
|
||||
const SizedBox(width: 10),
|
||||
SoftRestartButton(
|
||||
enabled: !errorThrownDuringTreeConstruction,
|
||||
softRestartListenable: softRestartListenable,
|
||||
@ -277,22 +319,97 @@ class WidgetPreviewWidgetState extends State<WidgetPreviewWidget> {
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
MediaQueryData _buildMediaQueryOverride() {
|
||||
var mediaQueryData = MediaQuery.of(context);
|
||||
/// Applies theming defined in [theme] to [child].
|
||||
class WidgetPreviewTheming extends StatelessWidget {
|
||||
const WidgetPreviewTheming({
|
||||
super.key,
|
||||
required this.theme,
|
||||
required this.child,
|
||||
});
|
||||
|
||||
if (widget.preview.textScaleFactor != null) {
|
||||
final Widget child;
|
||||
|
||||
/// The set of themes to be applied to [child].
|
||||
final PreviewThemeData? theme;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final themeData = theme;
|
||||
if (themeData == null) {
|
||||
return child;
|
||||
}
|
||||
final (materialTheme, cupertinoTheme) = themeData.themeForBrightness(
|
||||
MediaQuery.platformBrightnessOf(context),
|
||||
);
|
||||
Widget result = child;
|
||||
if (materialTheme != null) {
|
||||
result = Theme(data: materialTheme, child: result);
|
||||
}
|
||||
if (cupertinoTheme != null) {
|
||||
result = CupertinoTheme(data: cupertinoTheme, child: result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/// Wraps the previewed [child] with the correct [MediaQueryData] overrides
|
||||
/// based on [preview] and the current device [Brightness].
|
||||
class WidgetPreviewMediaQueryOverride extends StatelessWidget {
|
||||
const WidgetPreviewMediaQueryOverride({
|
||||
super.key,
|
||||
required this.preview,
|
||||
required this.brightnessListenable,
|
||||
required this.child,
|
||||
});
|
||||
|
||||
/// The preview specification used to render the preview.
|
||||
final WidgetPreview preview;
|
||||
|
||||
/// The currently set brightness for this preview instance.
|
||||
final ValueListenable<Brightness> brightnessListenable;
|
||||
|
||||
final Widget child;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ValueListenableBuilder<Brightness>(
|
||||
valueListenable: brightnessListenable,
|
||||
builder: (context, brightness, _) {
|
||||
return MediaQuery(
|
||||
data: _buildMediaQueryOverride(
|
||||
context: context,
|
||||
brightness: brightness,
|
||||
),
|
||||
// Use mediaQueryPreview instead of preview to avoid capturing preview
|
||||
// and creating an infinite loop.
|
||||
child: child,
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
MediaQueryData _buildMediaQueryOverride({
|
||||
required BuildContext context,
|
||||
required Brightness brightness,
|
||||
}) {
|
||||
var mediaQueryData = MediaQuery.of(
|
||||
context,
|
||||
).copyWith(platformBrightness: brightness);
|
||||
|
||||
if (preview.textScaleFactor != null) {
|
||||
mediaQueryData = mediaQueryData.copyWith(
|
||||
textScaler: TextScaler.linear(widget.preview.textScaleFactor!),
|
||||
textScaler: TextScaler.linear(preview.textScaleFactor!),
|
||||
);
|
||||
}
|
||||
|
||||
var size = Size(
|
||||
widget.preview.width ?? mediaQueryData.size.width,
|
||||
widget.preview.height ?? mediaQueryData.size.height,
|
||||
preview.width ?? mediaQueryData.size.width,
|
||||
preview.height ?? mediaQueryData.size.height,
|
||||
);
|
||||
|
||||
if (widget.preview.width != null || widget.preview.height != null) {
|
||||
if (preview.width != null || preview.height != null) {
|
||||
mediaQueryData = mediaQueryData.copyWith(size: size);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,263 @@
|
||||
// Copyright 2014 The Flutter Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/widget_previews.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:widget_preview_scaffold/src/controls.dart';
|
||||
import 'package:widget_preview_scaffold/src/widget_preview.dart';
|
||||
import 'package:widget_preview_scaffold/src/widget_preview_rendering.dart';
|
||||
|
||||
import 'widget_preview_scaffold_test_utils.dart';
|
||||
|
||||
// Applies localization theming allowing for direct comparison of `themeData` against the theme
|
||||
// data retreived from the tree.
|
||||
ThemeData localizeThemeData(ThemeData themeData) {
|
||||
return ThemeData.localize(
|
||||
themeData,
|
||||
themeData.typography.geometryThemeFor(ScriptCategory.englishLike),
|
||||
);
|
||||
}
|
||||
|
||||
// Resolves `themeData` so it can be directly compared against the theme data retreived from the
|
||||
// tree.
|
||||
CupertinoThemeData resolveCupertinoThemeData(
|
||||
BuildContext context,
|
||||
CupertinoThemeData themeData,
|
||||
) {
|
||||
return themeData.resolveFrom(context);
|
||||
}
|
||||
|
||||
void expectTheme({
|
||||
required BuildContext context,
|
||||
required ThemeData materialTheme,
|
||||
required CupertinoThemeData cupertinoTheme,
|
||||
}) {
|
||||
ThemeData actualMaterialTheme = Theme.of(context);
|
||||
CupertinoThemeData actualCupertinoTheme = CupertinoTheme.of(context);
|
||||
expect(actualMaterialTheme, localizeThemeData(materialTheme));
|
||||
expect(
|
||||
actualCupertinoTheme,
|
||||
resolveCupertinoThemeData(context, cupertinoTheme),
|
||||
);
|
||||
}
|
||||
|
||||
WidgetPreviewerWidgetScaffolding previewForBrightness({
|
||||
required Key key,
|
||||
Brightness? brightness,
|
||||
Brightness? platformBrightness,
|
||||
PreviewThemeData? previewThemeData,
|
||||
}) {
|
||||
return WidgetPreviewerWidgetScaffolding(
|
||||
platformBrightness: platformBrightness ?? Brightness.light,
|
||||
child: WidgetPreviewWidget(
|
||||
preview: WidgetPreview(
|
||||
builder: () => Text('Foo', key: key),
|
||||
theme: previewThemeData,
|
||||
brightness: brightness,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
final PreviewThemeData previewThemeData = PreviewThemeData(
|
||||
materialLight: ThemeData.light().copyWith(primaryColor: Colors.red),
|
||||
materialDark: ThemeData.dark().copyWith(primaryColor: Colors.blue),
|
||||
cupertinoLight: CupertinoThemeData(
|
||||
brightness: Brightness.light,
|
||||
primaryColor: Colors.yellow,
|
||||
),
|
||||
cupertinoDark: CupertinoThemeData(
|
||||
brightness: Brightness.dark,
|
||||
primaryColor: Colors.green,
|
||||
),
|
||||
);
|
||||
|
||||
void main() {
|
||||
testWidgets('Theming is correctly propagated down to the previewed widget', (
|
||||
tester,
|
||||
) async {
|
||||
final key = GlobalKey();
|
||||
|
||||
// Check that both Material and Cupertino light themes are available to the previewed widget.
|
||||
WidgetPreviewerWidgetScaffolding widgetPreview = previewForBrightness(
|
||||
key: key,
|
||||
brightness: Brightness.light,
|
||||
previewThemeData: previewThemeData,
|
||||
);
|
||||
await tester.pumpWidget(widgetPreview);
|
||||
|
||||
expectTheme(
|
||||
context: key.currentContext!,
|
||||
materialTheme: previewThemeData.materialLight!,
|
||||
cupertinoTheme: previewThemeData.cupertinoLight!,
|
||||
);
|
||||
|
||||
// Check that both Material and Cupertino dark themes are available to the previewed widget.
|
||||
widgetPreview = previewForBrightness(
|
||||
key: key,
|
||||
brightness: Brightness.dark,
|
||||
previewThemeData: previewThemeData,
|
||||
);
|
||||
await tester.pumpWidget(widgetPreview);
|
||||
|
||||
expectTheme(
|
||||
context: key.currentContext!,
|
||||
materialTheme: previewThemeData.materialDark!,
|
||||
cupertinoTheme: previewThemeData.cupertinoDark!,
|
||||
);
|
||||
});
|
||||
|
||||
testWidgets('Default theme is used if no preview theme is specified', (
|
||||
tester,
|
||||
) async {
|
||||
final key = GlobalKey();
|
||||
// Check that both Material and Cupertino light themes are available to the previewed widget.
|
||||
WidgetPreviewerWidgetScaffolding widgetPreview = previewForBrightness(
|
||||
key: key,
|
||||
brightness: Brightness.light,
|
||||
);
|
||||
await tester.pumpWidget(widgetPreview);
|
||||
|
||||
expectTheme(
|
||||
context: key.currentContext!,
|
||||
materialTheme: ThemeData(),
|
||||
cupertinoTheme: CupertinoThemeData(),
|
||||
);
|
||||
|
||||
// Check that both Material and Cupertino dark themes are available to the previewed widget.
|
||||
widgetPreview = previewForBrightness(key: key, brightness: Brightness.dark);
|
||||
await tester.pumpWidget(widgetPreview);
|
||||
|
||||
expectTheme(
|
||||
context: key.currentContext!,
|
||||
materialTheme: ThemeData(),
|
||||
cupertinoTheme: CupertinoThemeData(),
|
||||
);
|
||||
});
|
||||
|
||||
testWidgets('$BrightnessToggleButton correctly toggles preview brightness', (
|
||||
tester,
|
||||
) async {
|
||||
final key = GlobalKey();
|
||||
|
||||
// Check that both Material and Cupertino light themes are available to the previewed widget.
|
||||
WidgetPreviewerWidgetScaffolding widgetPreview = previewForBrightness(
|
||||
key: key,
|
||||
brightness: Brightness.light,
|
||||
previewThemeData: previewThemeData,
|
||||
);
|
||||
await tester.pumpWidget(widgetPreview);
|
||||
|
||||
final Finder brightnessToggle = find.byType(BrightnessToggleButton);
|
||||
expect(brightnessToggle, findsOne);
|
||||
expect(find.byTooltip('Switch to dark mode'), findsOne);
|
||||
final WidgetPreviewWidgetState state = tester
|
||||
.state<WidgetPreviewWidgetState>(find.byWidget(widgetPreview.child));
|
||||
expect(state.brightnessListenable.value, Brightness.light);
|
||||
|
||||
expectTheme(
|
||||
context: key.currentContext!,
|
||||
materialTheme: previewThemeData.materialLight!,
|
||||
cupertinoTheme: previewThemeData.cupertinoLight!,
|
||||
);
|
||||
|
||||
// Toggle to dark mode.
|
||||
await tester.tap(brightnessToggle);
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(brightnessToggle, findsOne);
|
||||
expect(find.byTooltip('Switch to light mode'), findsOne);
|
||||
expect(state.brightnessListenable.value, Brightness.dark);
|
||||
|
||||
// Check that both Material and Cupertino dark themes are available to the previewed widget.
|
||||
expectTheme(
|
||||
context: key.currentContext!,
|
||||
materialTheme: previewThemeData.materialDark!,
|
||||
cupertinoTheme: previewThemeData.cupertinoDark!,
|
||||
);
|
||||
});
|
||||
|
||||
testWidgets(
|
||||
"Updated brightness property doesn't override state set by $BrightnessToggleButton",
|
||||
(tester) async {
|
||||
final key = GlobalKey();
|
||||
|
||||
// Start with no explicit brightness set. This should use the system brightness (light).
|
||||
WidgetPreviewerWidgetScaffolding widgetPreview = previewForBrightness(
|
||||
key: key,
|
||||
previewThemeData: previewThemeData,
|
||||
);
|
||||
await tester.pumpWidget(widgetPreview);
|
||||
|
||||
final Finder brightnessToggle = find.byType(BrightnessToggleButton);
|
||||
final WidgetPreviewWidgetState state = tester
|
||||
.state<WidgetPreviewWidgetState>(find.byWidget(widgetPreview.child));
|
||||
|
||||
void expectLightMode() {
|
||||
expect(brightnessToggle, findsOne);
|
||||
expect(find.byTooltip('Switch to dark mode'), findsOne);
|
||||
|
||||
expect(state.brightnessListenable.value, Brightness.light);
|
||||
|
||||
expectTheme(
|
||||
context: key.currentContext!,
|
||||
materialTheme: previewThemeData.materialLight!,
|
||||
cupertinoTheme: previewThemeData.cupertinoLight!,
|
||||
);
|
||||
}
|
||||
|
||||
void expectDarkMode() {
|
||||
expect(brightnessToggle, findsOne);
|
||||
expect(find.byTooltip('Switch to light mode'), findsOne);
|
||||
|
||||
expect(state.brightnessListenable.value, Brightness.dark);
|
||||
|
||||
expectTheme(
|
||||
context: key.currentContext!,
|
||||
materialTheme: previewThemeData.materialDark!,
|
||||
cupertinoTheme: previewThemeData.cupertinoDark!,
|
||||
);
|
||||
}
|
||||
|
||||
// We start in light mode.
|
||||
expectLightMode();
|
||||
|
||||
// Switch to dark mode in the preview.
|
||||
await tester.tap(brightnessToggle);
|
||||
await tester.pumpAndSettle();
|
||||
expectDarkMode();
|
||||
|
||||
// Set an initial brightness for the preview to 'light'.
|
||||
widgetPreview = previewForBrightness(
|
||||
key: key,
|
||||
previewThemeData: previewThemeData,
|
||||
brightness: Brightness.light,
|
||||
);
|
||||
await tester.pumpWidget(widgetPreview);
|
||||
|
||||
// Confirm that the initial brightness is set to light but that the preview is still using
|
||||
// dark mode since the theme was changed manually via the UI.
|
||||
expect(state.widget.preview.brightness, Brightness.light);
|
||||
expectDarkMode();
|
||||
|
||||
// Manually switch back to light mode.
|
||||
await tester.tap(brightnessToggle);
|
||||
await tester.pumpAndSettle();
|
||||
expectLightMode();
|
||||
|
||||
// The preview brightness is now light, matching the current platform brightness.
|
||||
// Change the platform brightness to `dark` and remove the initial brightness, which should
|
||||
// cause the preview to use the dark theme.
|
||||
widgetPreview = previewForBrightness(
|
||||
key: key,
|
||||
previewThemeData: previewThemeData,
|
||||
brightness: Brightness.dark,
|
||||
);
|
||||
await tester.pumpWidget(widgetPreview);
|
||||
expectDarkMode();
|
||||
},
|
||||
);
|
||||
}
|
@ -6,33 +6,45 @@ import 'package:flutter/material.dart';
|
||||
import 'package:widget_preview_scaffold/src/widget_preview_rendering.dart';
|
||||
|
||||
class WidgetPreviewerWidgetScaffolding extends StatelessWidget {
|
||||
const WidgetPreviewerWidgetScaffolding({super.key, required this.child});
|
||||
const WidgetPreviewerWidgetScaffolding({
|
||||
super.key,
|
||||
this.platformBrightness = Brightness.light,
|
||||
required this.child,
|
||||
});
|
||||
|
||||
/// Sets the root platform brightness. Defaults to light.
|
||||
final Brightness platformBrightness;
|
||||
|
||||
final Widget child;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return WidgetsApp(
|
||||
color: Colors.blue,
|
||||
home: LayoutBuilder(
|
||||
builder: (BuildContext context, BoxConstraints constraints) {
|
||||
return WidgetPreviewerWindowConstraints(
|
||||
constraints: constraints,
|
||||
child: child,
|
||||
);
|
||||
},
|
||||
return MediaQuery(
|
||||
data: MediaQuery.of(
|
||||
context,
|
||||
).copyWith(platformBrightness: platformBrightness),
|
||||
child: WidgetsApp(
|
||||
color: Colors.blue,
|
||||
home: LayoutBuilder(
|
||||
builder: (BuildContext context, BoxConstraints constraints) {
|
||||
return WidgetPreviewerWindowConstraints(
|
||||
constraints: constraints,
|
||||
child: child,
|
||||
);
|
||||
},
|
||||
),
|
||||
pageRouteBuilder:
|
||||
<T>(RouteSettings settings, WidgetBuilder builder) =>
|
||||
PageRouteBuilder<T>(
|
||||
settings: settings,
|
||||
pageBuilder:
|
||||
(
|
||||
BuildContext context,
|
||||
Animation<double> animation,
|
||||
Animation<double> secondaryAnimation,
|
||||
) => builder(context),
|
||||
),
|
||||
),
|
||||
pageRouteBuilder:
|
||||
<T>(RouteSettings settings, WidgetBuilder builder) =>
|
||||
PageRouteBuilder<T>(
|
||||
settings: settings,
|
||||
pageBuilder:
|
||||
(
|
||||
BuildContext context,
|
||||
Animation<double> animation,
|
||||
Animation<double> secondaryAnimation,
|
||||
) => builder(context),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -23,9 +23,10 @@ dev_dependencies:
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
collection: 1.19.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
frontend_server_client: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 2.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -65,4 +66,4 @@ dartdoc:
|
||||
# Exclude this package from the hosted API docs.
|
||||
nodoc: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 76f8
|
||||
# PUBSPEC CHECKSUM: ae53
|
||||
|
@ -39,9 +39,10 @@ dev_dependencies:
|
||||
args: 2.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
async: 2.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
cli_config: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
clock: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 3.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
coverage: 1.12.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 3.0.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fake_async: 1.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 7.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -88,4 +89,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 725f
|
||||
# PUBSPEC CHECKSUM: 30b9
|
||||
|
Loading…
Reference in New Issue
Block a user