Compare commits
1 Commits
xha/exampl
...
fix_github
Author | SHA1 | Date | |
---|---|---|---|
a6152cc14e |
16
.github/workflows/analyze-and-test.yaml
vendored
@ -32,18 +32,4 @@ jobs:
|
|||||||
|| (echo "##[error] found changed files after build. please run 'dart tool/prepare_submit.dart'" \
|
|| (echo "##[error] found changed files after build. please run 'dart tool/prepare_submit.dart'" \
|
||||||
"and check in all changes" \
|
"and check in all changes" \
|
||||||
&& exit 1)
|
&& exit 1)
|
||||||
shell: bash
|
shell: bash
|
||||||
build_web_version:
|
|
||||||
name: Check that the web version compile
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: subosito/flutter-action@v1
|
|
||||||
with:
|
|
||||||
channel: 'beta'
|
|
||||||
- run: flutter config --enable-web
|
|
||||||
- run: flutter precache web
|
|
||||||
- run: flutter pub get
|
|
||||||
working-directory: example
|
|
||||||
- run: flutter build web
|
|
||||||
working-directory: example
|
|
32
.github/workflows/publish-on-pub.yaml
vendored
@ -1,8 +1,8 @@
|
|||||||
name: Publish package to pub.dev
|
name: Publish package to pub.dev
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
tags:
|
# tags:
|
||||||
- v*
|
# - v*
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@ -14,17 +14,19 @@ jobs:
|
|||||||
- run: flutter pub get
|
- run: flutter pub get
|
||||||
- run: flutter pub run tool/publish/comment_dependency_overrides.dart
|
- run: flutter pub run tool/publish/comment_dependency_overrides.dart
|
||||||
- run: flutter pub get
|
- run: flutter pub get
|
||||||
|
- run: echo ${GITHUB_REF}
|
||||||
- run: flutter pub run tool/publish/check_version.dart ${GITHUB_REF}
|
- run: flutter pub run tool/publish/check_version.dart ${GITHUB_REF}
|
||||||
- name: Setup credentials
|
# - name: Setup credentials
|
||||||
run: |
|
# run: |
|
||||||
cat <<EOF > $PUB_CACHE/credentials.json
|
# mkdir -p $FLUTTER_HOME/.pub-cache
|
||||||
{
|
# cat <<EOF > $FLUTTER_HOME/.pub-cache/credentials.json
|
||||||
"accessToken":"${{ secrets.OAUTH_ACCESS_TOKEN }}",
|
# {
|
||||||
"refreshToken":"${{ secrets.OAUTH_REFRESH_TOKEN }}",
|
# "accessToken":"${{ secrets.OAUTH_ACCESS_TOKEN }}",
|
||||||
"tokenEndpoint":"https://accounts.google.com/o/oauth2/token",
|
# "refreshToken":"${{ secrets.OAUTH_REFRESH_TOKEN }}",
|
||||||
"scopes": [ "openid", "https://www.googleapis.com/auth/userinfo.email" ],
|
# "tokenEndpoint":"https://accounts.google.com/o/oauth2/token",
|
||||||
"expiration": 1580681402856
|
# "scopes": [ "openid", "https://www.googleapis.com/auth/userinfo.email" ],
|
||||||
}
|
# "expiration": 1580681402856
|
||||||
EOF
|
# }
|
||||||
- name: Publish package
|
# EOF
|
||||||
run: flutter pub publish --force
|
# - name: Publish package
|
||||||
|
# run: flutter pub publish --force
|
||||||
|
71
CHANGELOG.md
@ -1,74 +1,3 @@
|
|||||||
## [1.2.1]
|
|
||||||
- Fix: Revert Cubic to `PathInterpolator.cubic`
|
|
||||||
|
|
||||||
## [1.2.0]
|
|
||||||
- Add support for gaussian blurs.
|
|
||||||
|
|
||||||
Example to blur some elements dynamically:
|
|
||||||
|
|
||||||
```dart
|
|
||||||
Lottie.asset(
|
|
||||||
'assets/AndroidWave.json',
|
|
||||||
delegates: LottieDelegates(values: [
|
|
||||||
ValueDelegate.blurRadius(
|
|
||||||
['**'], // The path to the element to blur
|
|
||||||
value: 20,
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
||||||
- Add support for drop shadows.
|
|
||||||
|
|
||||||
Example to add a shadow dynamically:
|
|
||||||
```dart
|
|
||||||
Lottie.asset(
|
|
||||||
'assets/animation.json',
|
|
||||||
delegates: LottieDelegates(values: [
|
|
||||||
ValueDelegate.dropShadow(
|
|
||||||
['**'], // The path to the elements with shadow
|
|
||||||
value: const DropShadow(
|
|
||||||
color: Colors.blue,
|
|
||||||
direction: 140,
|
|
||||||
distance: 60,
|
|
||||||
radius: 10,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
||||||
## [1.1.0]
|
|
||||||
- Add `errorBuilder` callback to provide an alternative widget in case an error occurs during loading.
|
|
||||||
```dart
|
|
||||||
Lottie.network(
|
|
||||||
'https://example.does.not.exist/lottie.json',
|
|
||||||
errorBuilder: (context, exception, stackTrace) {
|
|
||||||
return const Text('😢');
|
|
||||||
},
|
|
||||||
);
|
|
||||||
```
|
|
||||||
|
|
||||||
- Add `onWarning` to be notified when a warning occurs during the animation parsing or painting.
|
|
||||||
Previously the warnings where written in an internal `logger`.
|
|
||||||
```dart
|
|
||||||
Lottie.asset('animation.json'
|
|
||||||
onWarning: (warning) {
|
|
||||||
_logger.info(warning);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
```
|
|
||||||
- Various bug fixes
|
|
||||||
|
|
||||||
## [1.0.1]
|
|
||||||
- Implement `RenderBox.computeDryLayout`
|
|
||||||
|
|
||||||
## [1.0.0]
|
|
||||||
- Migrate to null safety
|
|
||||||
- Fix some rendering bugs
|
|
||||||
- Add an image delegate to dynamically change images
|
|
||||||
- Allow to use an imageProviderFactory with a zip file
|
|
||||||
|
|
||||||
## [0.7.1]
|
## [0.7.1]
|
||||||
- Fix a crash for some lottie file with empty paths.
|
- Fix a crash for some lottie file with empty paths.
|
||||||
|
|
||||||
|
25
README.md
@ -6,7 +6,7 @@
|
|||||||
Lottie is a mobile library for Android and iOS that parses [Adobe After Effects](https://www.adobe.com/products/aftereffects.html)
|
Lottie is a mobile library for Android and iOS that parses [Adobe After Effects](https://www.adobe.com/products/aftereffects.html)
|
||||||
animations exported as json with [Bodymovin](https://github.com/airbnb/lottie-web) and renders them natively on mobile!
|
animations exported as json with [Bodymovin](https://github.com/airbnb/lottie-web) and renders them natively on mobile!
|
||||||
|
|
||||||
This repository is an unofficial conversion of the [Lottie-android](https://github.com/airbnb/lottie-android) library in pure Dart.
|
This repository is a unofficial conversion of the [Lottie-android](https://github.com/airbnb/lottie-android) library in pure Dart.
|
||||||
|
|
||||||
It works on Android, iOS, macOS, linux, windows and web.
|
It works on Android, iOS, macOS, linux, windows and web.
|
||||||
|
|
||||||
@ -20,11 +20,9 @@ The `Lottie` widget will load the json file and run the animation indefinitely.
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() => runApp(const MyApp());
|
void main() => runApp(MyApp());
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class MyApp extends StatelessWidget {
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
@ -58,11 +56,9 @@ With a custom `AnimationController` you have a rich API to play the animation in
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() => runApp(const MyApp());
|
void main() => runApp(MyApp());
|
||||||
|
|
||||||
class MyApp extends StatefulWidget {
|
class MyApp extends StatefulWidget {
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_MyAppState createState() => _MyAppState();
|
_MyAppState createState() => _MyAppState();
|
||||||
}
|
}
|
||||||
@ -136,8 +132,6 @@ This example shows how to load and parse a Lottie composition from a json file.
|
|||||||
|
|
||||||
```dart
|
```dart
|
||||||
class MyWidget extends StatefulWidget {
|
class MyWidget extends StatefulWidget {
|
||||||
const MyWidget({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_MyWidgetState createState() => _MyWidgetState();
|
_MyWidgetState createState() => _MyWidgetState();
|
||||||
}
|
}
|
||||||
@ -166,7 +160,7 @@ class _MyWidgetState extends State<MyWidget> {
|
|||||||
if (composition != null) {
|
if (composition != null) {
|
||||||
return Lottie(composition: composition);
|
return Lottie(composition: composition);
|
||||||
} else {
|
} else {
|
||||||
return const Center(child: CircularProgressIndicator());
|
return Center(child: CircularProgressIndicator());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -188,7 +182,7 @@ class CustomDrawer extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return CustomPaint(
|
return CustomPaint(
|
||||||
painter: _Painter(composition),
|
painter: _Painter(composition),
|
||||||
size: const Size(400, 400),
|
size: Size(400, 400),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -242,7 +236,7 @@ class _Animation extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
ValueDelegate.position(
|
ValueDelegate.position(
|
||||||
const ['Shape Layer 1', 'Rectangle', '**'],
|
const ['Shape Layer 1', 'Rectangle', '**'],
|
||||||
relative: const Offset(100, 200),
|
relative: Offset(100, 200),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -252,12 +246,13 @@ class _Animation extends StatelessWidget {
|
|||||||
````
|
````
|
||||||
|
|
||||||
## Limitations
|
## Limitations
|
||||||
This port supports the same [feature set as Lottie Android](https://airbnb.io/lottie/#/supported-features).
|
Only the [supported features of Lottie Android](https://airbnb.io/lottie/#/supported-features)
|
||||||
|
are supported in this port.
|
||||||
|
|
||||||
## Flutter Web
|
## Flutter Web
|
||||||
Run the app with `flutter run -d chrome --web-renderer canvaskit`
|
Run the app with `flutter run -d Chrome --dart-define=FLUTTER_WEB_USE_SKIA=true --release`
|
||||||
|
|
||||||
See a preview here: https://xvrh.github.io/lottie-flutter-web/
|
See a preview here: https://xvrh.github.io/lottie-flutter/index.html
|
||||||
|
|
||||||
## More examples
|
## More examples
|
||||||
See the `example` folder for more code samples of the various possibilities.
|
See the `example` folder for more code samples of the various possibilities.
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
Lottie is a mobile library for Android and iOS that parses [Adobe After Effects](https://www.adobe.com/products/aftereffects.html)
|
Lottie is a mobile library for Android and iOS that parses [Adobe After Effects](https://www.adobe.com/products/aftereffects.html)
|
||||||
animations exported as json with [Bodymovin](https://github.com/airbnb/lottie-web) and renders them natively on mobile!
|
animations exported as json with [Bodymovin](https://github.com/airbnb/lottie-web) and renders them natively on mobile!
|
||||||
|
|
||||||
This repository is an unofficial conversion of the [Lottie-android](https://github.com/airbnb/lottie-android) library in pure Dart.
|
This repository is a unofficial conversion of the [Lottie-android](https://github.com/airbnb/lottie-android) library in pure Dart.
|
||||||
|
|
||||||
It works on Android, iOS, macOS, linux, windows and web.
|
It works on Android, iOS, macOS, linux, windows and web.
|
||||||
|
|
||||||
@ -78,12 +78,13 @@ import 'example/lib/examples/simple_dynamic_properties.dart#example';
|
|||||||
````
|
````
|
||||||
|
|
||||||
## Limitations
|
## Limitations
|
||||||
This port supports the same [feature set as Lottie Android](https://airbnb.io/lottie/#/supported-features).
|
Only the [supported features of Lottie Android](https://airbnb.io/lottie/#/supported-features)
|
||||||
|
are supported in this port.
|
||||||
|
|
||||||
## Flutter Web
|
## Flutter Web
|
||||||
Run the app with `flutter run -d chrome --web-renderer canvaskit`
|
Run the app with `flutter run -d Chrome --dart-define=FLUTTER_WEB_USE_SKIA=true --release`
|
||||||
|
|
||||||
See a preview here: https://xvrh.github.io/lottie-flutter-web/
|
See a preview here: https://xvrh.github.io/lottie-flutter/index.html
|
||||||
|
|
||||||
## More examples
|
## More examples
|
||||||
See the `example` folder for more code samples of the various possibilities.
|
See the `example` folder for more code samples of the various possibilities.
|
||||||
|
@ -1,29 +1,39 @@
|
|||||||
include: package:flutter_lints/flutter.yaml
|
include: package:pedantic/analysis_options.yaml
|
||||||
analyzer:
|
analyzer:
|
||||||
|
errors:
|
||||||
strong-mode:
|
strong-mode:
|
||||||
implicit-casts: false
|
implicit-casts: false
|
||||||
implicit-dynamic: false
|
implicit-dynamic: false
|
||||||
linter:
|
linter:
|
||||||
rules:
|
rules:
|
||||||
avoid_print: false
|
avoid_renaming_method_parameters: true
|
||||||
|
avoid_returning_null_for_future: true
|
||||||
always_declare_return_types: true
|
avoid_returning_null_for_void: true
|
||||||
avoid_dynamic_calls: true
|
avoid_returning_this: true
|
||||||
avoid_escaping_inner_quotes: true
|
|
||||||
avoid_setters_without_getters: true
|
avoid_setters_without_getters: true
|
||||||
cast_nullable_to_non_nullable: true
|
await_only_futures: true
|
||||||
|
camel_case_types: true
|
||||||
|
cancel_subscriptions: true
|
||||||
close_sinks: true
|
close_sinks: true
|
||||||
|
constant_identifier_names: true
|
||||||
|
empty_statements: true
|
||||||
|
hash_and_equals: true
|
||||||
|
iterable_contains_unrelated_type: true
|
||||||
|
list_remove_unrelated_type: true
|
||||||
no_adjacent_strings_in_list: true
|
no_adjacent_strings_in_list: true
|
||||||
no_default_cases: true
|
non_constant_identifier_names: true
|
||||||
omit_local_variable_types: true
|
|
||||||
only_throw_errors: true
|
only_throw_errors: true
|
||||||
|
overridden_fields: true
|
||||||
|
prefer_inlined_adds: true
|
||||||
prefer_interpolation_to_compose_strings: true
|
prefer_interpolation_to_compose_strings: true
|
||||||
prefer_single_quotes: true
|
prefer_null_aware_operators: true
|
||||||
sort_child_properties_last: true
|
prefer_relative_imports: true
|
||||||
|
prefer_typing_uninitialized_variables: true
|
||||||
sort_pub_dependencies: true
|
sort_pub_dependencies: true
|
||||||
test_types_in_equals: true
|
test_types_in_equals: true
|
||||||
unawaited_futures: true
|
unnecessary_brace_in_string_interps: true
|
||||||
|
unnecessary_getters_setters: true
|
||||||
unnecessary_parenthesis: true
|
unnecessary_parenthesis: true
|
||||||
unnecessary_statements: true
|
unnecessary_statements: true
|
||||||
unsafe_html: true
|
use_function_type_syntax_for_parameters: true
|
||||||
use_raw_strings: true
|
void_checks: true
|
||||||
|
@ -6,11 +6,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() => runApp(const MyApp());
|
void main() => runApp(MyApp());
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class MyApp extends StatelessWidget {
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
|
@ -1 +0,0 @@
|
|||||||
{"v":"5.7.7","fr":29.9700012207031,"ip":0,"op":181.000007372281,"w":375,"h":375,"nm":"Square","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[187.5,187.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow2","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0,0,0,1]},{"t":151.000006150356,"s":[0,0.371857702732,1,1]}],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[127.5]},{"t":151.000006150356,"s":[127.5]}],"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":151.000006150356,"s":[360]}],"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[10]},{"t":151.000006150356,"s":[15]}],"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[20]},{"t":151.000006150356,"s":[50]}],"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[217.641,217.641],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-4.68,-1.68],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":184.000007494474,"st":0,"bm":0}],"markers":[]}
|
|
@ -1 +0,0 @@
|
|||||||
{"v":"5.7.7","fr":29.9700012207031,"ip":0,"op":121.000004928431,"w":400,"h":400,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200,200,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":29,"nm":"Gaussian Blur2","np":5,"mn":"ADBE Gaussian Blur 2","ix":1,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":24.00000097754,"s":[120.7]}],"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":0,"ix":3}}]},{"ty":5,"nm":"Bulge","np":9,"mn":"ADBE Bulge","ix":2,"en":1,"ef":[{"ty":0,"nm":"Horizontal Radius","mn":"ADBE Bulge-0001","ix":1,"v":{"a":0,"k":50,"ix":1}},{"ty":0,"nm":"Vertical Radius","mn":"ADBE Bulge-0002","ix":2,"v":{"a":0,"k":50,"ix":2}},{"ty":3,"nm":"Bulge Center","mn":"ADBE Bulge-0003","ix":3,"v":{"a":0,"k":[200,200],"ix":3}},{"ty":0,"nm":"Bulge Height","mn":"ADBE Bulge-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Taper Radius","mn":"ADBE Bulge-0005","ix":5,"v":{"a":0,"k":0,"ix":5}},{"ty":7,"nm":"Antialiasing (Best Qual Only)","mn":"ADBE Bulge-0006","ix":6,"v":{"a":0,"k":1,"ix":6}},{"ty":7,"nm":"Pinning","mn":"ADBE Bulge-0007","ix":7,"v":{"a":0,"k":0,"ix":7}}]}],"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[274.975,274.975],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[-4.513,7.487],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":121.000004928431,"st":0,"bm":0}],"markers":[]}
|
|
@ -1 +0,0 @@
|
|||||||
{"v":"5.7.7","fr":29.9700012207031,"ip":0,"op":121.000004928431,"w":400,"h":400,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200,200,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":29,"nm":"Gaussian Blur2","np":5,"mn":"ADBE Gaussian Blur 2","ix":1,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":24.00000097754,"s":[120.7]}],"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":0,"ix":3}}]},{"ty":5,"nm":"Bulge","np":9,"mn":"ADBE Bulge","ix":2,"en":1,"ef":[{"ty":0,"nm":"Horizontal Radius","mn":"ADBE Bulge-0001","ix":1,"v":{"a":0,"k":50,"ix":1}},{"ty":0,"nm":"Vertical Radius","mn":"ADBE Bulge-0002","ix":2,"v":{"a":0,"k":50,"ix":2}},{"ty":3,"nm":"Bulge Center","mn":"ADBE Bulge-0003","ix":3,"v":{"a":0,"k":[200,200],"ix":3}},{"ty":0,"nm":"Bulge Height","mn":"ADBE Bulge-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Taper Radius","mn":"ADBE Bulge-0005","ix":5,"v":{"a":0,"k":0,"ix":5}},{"ty":7,"nm":"Antialiasing (Best Qual Only)","mn":"ADBE Bulge-0006","ix":6,"v":{"a":0,"k":1,"ix":6}},{"ty":7,"nm":"Pinning","mn":"ADBE Bulge-0007","ix":7,"v":{"a":0,"k":0,"ix":7}}]}],"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[274.975,274.975],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[-4.513,7.487],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0,1,0,0,0.5,0.505,0,0.5,1,0.009,0,1],"ix":9}},"s":{"a":0,"k":[-125,0],"ix":5},"e":{"a":0,"k":[100,0],"ix":6},"t":1,"nm":"Gradient Fill 1","mn":"ADBE Vector Graphic - G-Fill","hd":false}],"ip":0,"op":121.000004928431,"st":0,"bm":0}],"markers":[]}
|
|
@ -1,87 +0,0 @@
|
|||||||
{
|
|
||||||
"v": "5.7.1",
|
|
||||||
"fr": 60,
|
|
||||||
"ip": 0,
|
|
||||||
"op": 65,
|
|
||||||
"w": 1056,
|
|
||||||
"h": 1056,
|
|
||||||
"nm": "Animation",
|
|
||||||
"ddd": 0,
|
|
||||||
"assets": [],
|
|
||||||
"layers": [
|
|
||||||
{
|
|
||||||
"ddd": 0,
|
|
||||||
"ind": 1,
|
|
||||||
"ty": 4,
|
|
||||||
"nm": "Shape Layer 3",
|
|
||||||
"sr": 1,
|
|
||||||
"ks": {
|
|
||||||
"o": { "a": 0, "k": 100, "ix": 11 },
|
|
||||||
"r": { "a": 0, "k": 0, "ix": 10 },
|
|
||||||
"p": { "a": 0, "k": [528, 531, 0], "ix": 2 },
|
|
||||||
"a": { "a": 0, "k": [0, 0, 0], "ix": 1 },
|
|
||||||
"s": { "a": 0, "k": [147.368, 147.368, 100], "ix": 6 }
|
|
||||||
},
|
|
||||||
"ao": 0,
|
|
||||||
"shapes": [
|
|
||||||
{
|
|
||||||
"ty": "gr",
|
|
||||||
"it": [
|
|
||||||
{
|
|
||||||
"d": 1,
|
|
||||||
"ty": "el",
|
|
||||||
"s": { "a": 0, "k": [415, 415], "ix": 2 },
|
|
||||||
"p": { "a": 0, "k": [0, 0], "ix": 3 },
|
|
||||||
"nm": "Ellipse Path 1",
|
|
||||||
"mn": "ADBE Vector Shape - Ellipse",
|
|
||||||
"hd": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ty": "gf",
|
|
||||||
"o": { "a": 0, "k": 55, "ix": 10 },
|
|
||||||
"r": 1,
|
|
||||||
"bm": 0,
|
|
||||||
"g": {
|
|
||||||
"p": 3,
|
|
||||||
"k": {
|
|
||||||
"a": 0,
|
|
||||||
"k": [0, 0.969, 0.514, 0.745, 0.116, 0.984, 0.537, 0.373, 1, 1, 0.559, 0, 0.607, 0, 0.776, 0.5, 0.945, 1],
|
|
||||||
"ix": 9
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"s": { "a": 0, "k": [-206.344, -144.451], "ix": 5 },
|
|
||||||
"e": { "a": 0, "k": [173.147, 192.356], "ix": 6 },
|
|
||||||
"t": 1,
|
|
||||||
"nm": "Gradient Fill 9",
|
|
||||||
"mn": "ADBE Vector Graphic - G-Fill",
|
|
||||||
"hd": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ty": "tr",
|
|
||||||
"p": { "a": 0, "k": [1.141, 0.406], "ix": 2 },
|
|
||||||
"a": { "a": 0, "k": [-5, -39], "ix": 1 },
|
|
||||||
"s": { "a": 0, "k": [105.082, 105.082], "ix": 3 },
|
|
||||||
"r": { "a": 0, "k": -5.052, "ix": 6 },
|
|
||||||
"o": { "a": 0, "k": 100, "ix": 7 },
|
|
||||||
"sk": { "a": 0, "k": 0, "ix": 4 },
|
|
||||||
"sa": { "a": 0, "k": 0, "ix": 5 },
|
|
||||||
"nm": "Transform"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"nm": "Group 1",
|
|
||||||
"np": 9,
|
|
||||||
"cix": 2,
|
|
||||||
"bm": 0,
|
|
||||||
"ix": 1,
|
|
||||||
"mn": "ADBE Vector Group",
|
|
||||||
"hd": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"ip": -6,
|
|
||||||
"op": 69,
|
|
||||||
"st": 1.2,
|
|
||||||
"bm": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"markers": []
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
{"v":"5.7.7","fr":29.9700012207031,"ip":0,"op":121.000004928431,"w":400,"h":400,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200,200,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":29,"nm":"Gaussian Blur2","np":5,"mn":"ADBE Gaussian Blur 2","ix":1,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":24.00000097754,"s":[120.7]}],"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":0,"ix":3}}]},{"ty":5,"nm":"Bulge","np":9,"mn":"ADBE Bulge","ix":2,"en":1,"ef":[{"ty":0,"nm":"Horizontal Radius","mn":"ADBE Bulge-0001","ix":1,"v":{"a":0,"k":50,"ix":1}},{"ty":0,"nm":"Vertical Radius","mn":"ADBE Bulge-0002","ix":2,"v":{"a":0,"k":50,"ix":2}},{"ty":3,"nm":"Bulge Center","mn":"ADBE Bulge-0003","ix":3,"v":{"a":0,"k":[200,200],"ix":3}},{"ty":0,"nm":"Bulge Height","mn":"ADBE Bulge-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Taper Radius","mn":"ADBE Bulge-0005","ix":5,"v":{"a":0,"k":0,"ix":5}},{"ty":7,"nm":"Antialiasing (Best Qual Only)","mn":"ADBE Bulge-0006","ix":6,"v":{"a":0,"k":1,"ix":6}},{"ty":7,"nm":"Pinning","mn":"ADBE Bulge-0007","ix":7,"v":{"a":0,"k":0,"ix":7}}]}],"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[274.975,274.975],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[-4.513,7.487],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gs","o":{"a":0,"k":100,"ix":9},"w":{"a":0,"k":41,"ix":10},"g":{"p":3,"k":{"a":0,"k":[0,0.01,0,1,0.5,0.496,0,0.5,1,0.982,0,0],"ix":8}},"s":{"a":0,"k":[-45,0],"ix":4},"e":{"a":0,"k":[100,0],"ix":5},"t":1,"lc":1,"lj":1,"ml":4,"ml2":{"a":0,"k":4,"ix":13},"bm":0,"nm":"Gradient Stroke 1","mn":"ADBE Vector Graphic - G-Stroke","hd":false}],"ip":0,"op":121.000004928431,"st":0,"bm":0}],"markers":[]}
|
|
@ -1 +0,0 @@
|
|||||||
{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 1","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[100,100,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":0,"s":[85.714,85.714],"e":[52.714,52.714]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":16,"s":[52.714,52.714],"e":[85.714,85.714]},{"t":35}]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect"},{"ty":"st","c":{"k":[0,0,0,1]},"o":{"k":100},"w":{"k":14},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[3.198,1.099],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":36,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":1,"nm":"White Solid 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[45,45,0]},"a":{"k":[100,100,0]},"s":{"k":[45,45,100]}},"ao":0,"sw":200,"sh":200,"sc":"#ffffff","ip":0,"op":36,"st":0,"bm":0,"sr":1}],"v":"4.5.4","ddd":0,"ip":0,"op":36,"fr":60,"w":90,"h":90}
|
|
@ -1 +0,0 @@
|
|||||||
{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 1","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[100,100,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[{"i":{"x":[0.1,0.1],"y":[1,1]},"o":{"x":[0.9,0.9],"y":[0,0]},"n":["0p1_1_0p9_0","0p1_1_0p9_0"],"t":0,"s":[85.714,85.714],"e":[52.714,52.714]},{"i":{"x":[0.1,0.1],"y":[1,1]},"o":{"x":[0.9,0.9],"y":[0,0]},"n":["0p1_1_0p9_0","0p1_1_0p9_0"],"t":16,"s":[52.714,52.714],"e":[85.714,85.714]},{"t":35}]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect"},{"ty":"st","c":{"k":[0,0,0,1]},"o":{"k":100},"w":{"k":14},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[2.198,1.099],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":273,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":1,"nm":"White Solid 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[45,45,0]},"a":{"k":[100,100,0]},"s":{"k":[45,45,100]}},"ao":0,"sw":200,"sh":200,"sc":"#ffffff","ip":0,"op":36,"st":0,"bm":0,"sr":1}],"v":"4.5.4","ddd":0,"ip":0,"op":36,"fr":60,"w":90,"h":90}
|
|
@ -1 +0,0 @@
|
|||||||
{ "assets": [], "layers": [ { "ddd": 0, "ind": 0, "ty": 4, "nm": "Shape Layer 1", "ks": { "o": { "k": 100 }, "r": { "k": 0 }, "p": { "k": [ 100, 100, 0 ] }, "a": { "k": [ 0, 0, 0 ] }, "s": { "k": [ 100, 100, 100 ] } }, "ao": 0, "shapes": [ { "ty": "gr", "it": [ { "ty": "rc", "d": 1, "s": { "k": [ { "i": { "x": [ 0.12, 0.12 ], "y": [ 0.12, 1 ] }, "o": { "x": [ 0.88, 0.88 ], "y": [ 0.88, 0 ] }, "n": [ "0p12_0p12_0p88_0p88", "0p12_1_0p88_0" ], "t": 0, "s": [ 85.714, 85.714 ], "e": [ 85.714, 154.714 ] }, { "i": { "x": [ 0.12, 0.12 ], "y": [ 0.12, 1 ] }, "o": { "x": [ 0.88, 0.88 ], "y": [ 0.88, 0 ] }, "n": [ "0p12_0p12_0p88_0p88", "0p12_1_0p88_0" ], "t": 16, "s": [ 85.714, 154.714 ], "e": [ 85.714, 85.714 ] }, { "t": 35 } ] }, "p": { "k": [ 0, 0 ] }, "r": { "k": 0 }, "nm": "Rectangle Path 1", "mn": "ADBE Vector Shape - Rect" }, { "ty": "st", "c": { "k": [ 0, 0, 0, 1 ] }, "o": { "k": 100 }, "w": { "k": 14 }, "lc": 1, "lj": 1, "ml": 4, "nm": "Stroke 1", "mn": "ADBE Vector Graphic - Stroke" }, { "ty": "tr", "p": { "k": [ 2.198, 1.099 ], "ix": 2 }, "a": { "k": [ 0, 0 ], "ix": 1 }, "s": { "k": [ 100, 100 ], "ix": 3 }, "r": { "k": 0, "ix": 6 }, "o": { "k": 100, "ix": 7 }, "sk": { "k": 0, "ix": 4 }, "sa": { "k": 0, "ix": 5 }, "nm": "Transform" } ], "nm": "Rectangle 1", "np": 2, "mn": "ADBE Vector Group" } ], "ip": 0, "op": 36, "st": 0, "bm": 0, "sr": 1 } ], "v": "4.5.4", "ddd": 0, "ip": 0, "op": 36, "fr": 60, "w": 200, "h": 200 }
|
|
@ -1 +0,0 @@
|
|||||||
{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 1","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[100,100,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[{"i":{"x":[0.27,0.27],"y":[1,0.27]},"o":{"x":[0.73,0.73],"y":[0,0.73]},"n":["0p27_1_0p73_0","0p27_0p27_0p73_0p73"],"t":0,"s":[85.714,85.714],"e":[172.714,85.714]},{"i":{"x":[0.27,0.27],"y":[1,0.27]},"o":{"x":[0.73,0.73],"y":[0,0.73]},"n":["0p27_1_0p73_0","0p27_0p27_0p73_0p73"],"t":16,"s":[172.714,85.714],"e":[85.714,85.714]},{"t":35}]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect"},{"ty":"st","c":{"k":[0,0,0,1]},"o":{"k":100},"w":{"k":14},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[2.198,1.099],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":36,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":1,"nm":"White Solid 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[45,45,0]},"a":{"k":[100,100,0]},"s":{"k":[45,45,100]}},"ao":0,"sw":200,"sh":200,"sc":"#ffffff","ip":0,"op":36,"st":0,"bm":0,"sr":1}],"v":"4.5.4","ddd":0,"ip":0,"op":36,"fr":60,"w":90,"h":90}
|
|
@ -1 +0,0 @@
|
|||||||
{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 1","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[100,100,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[{"i":{"x":[0.27,0.27],"y":[1,0.27]},"o":{"x":[0.73,0.73],"y":[0,0.73]},"n":["0p27_1_0p73_0","0p27_0p27_0p73_0p73"],"t":0,"s":[85.714,85.714],"e":[172.714,85.714]},{"i":{"x":[0.27,0.27],"y":[0.27,1]},"o":{"x":[0.73,0.73],"y":[0.73,0]},"n":["0p27_0p27_0p73_0p73","0p27_1_0p73_0"],"t":16,"s":[172.714,85.714],"e":[172.714,163.714]},{"i":{"x":[0.27,0.27],"y":[1,1]},"o":{"x":[0.73,0.73],"y":[0,0]},"n":["0p27_1_0p73_0","0p27_1_0p73_0"],"t":35,"s":[172.714,163.714],"e":[85.714,85.714]},{"t":62}]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect"},{"ty":"st","c":{"k":[0,0,0,1]},"o":{"k":100},"w":{"k":14},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[2.198,1.099],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":63,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":1,"nm":"White Solid 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[45,45,0]},"a":{"k":[100,100,0]},"s":{"k":[45,45,100]}},"ao":0,"sw":200,"sh":200,"sc":"#ffffff","ip":0,"op":64,"st":0,"bm":0,"sr":1}],"v":"4.5.4","ddd":0,"ip":0,"op":63,"fr":60,"w":90,"h":90}
|
|
@ -1 +0,0 @@
|
|||||||
{ "assets": [], "layers": [ { "ddd": 0, "ind": 0, "ty": 4, "nm": "Shape Layer 4", "parent": 3, "ks": { "o": { "k": 100 }, "r": { "k": 0 }, "p": { "k": [ { "i": { "x": 0, "y": 1 }, "o": { "x": 0.167, "y": 0.167 }, "n": "0_1_0p167_0p167", "t": 35, "s": [ 111.714, 91, 0 ], "e": [ 99.714, 100, 0 ], "to": [ 0, 0, 0 ], "ti": [ 0, 0, 0 ] }, { "t": 62 } ] }, "a": { "k": [ 0, 0, 0 ] }, "s": { "k": [ 100, 100, 100 ] } }, "ao": 0, "shapes": [ { "ty": "gr", "it": [ { "ty": "rc", "d": 1, "s": { "k": [ { "i": { "x": [ 0, 0 ], "y": [ 1, 1 ] }, "o": { "x": [ 0.167, 0.167 ], "y": [ 0.167, 0.167 ] }, "n": [ "0_1_0p167_0p167", "0_1_0p167_0p167" ], "t": 35, "s": [ 109.714, 103.714 ], "e": [ 85.714, 85.714 ] }, { "t": 62 } ] }, "p": { "k": [ 0, 0 ] }, "r": { "k": 0 }, "nm": "Rectangle Path 1", "mn": "ADBE Vector Shape - Rect" }, { "ty": "st", "c": { "k": [ 0, 0, 0, 1 ] }, "o": { "k": 100 }, "w": { "k": 14 }, "lc": 1, "lj": 1, "ml": 4, "nm": "Stroke 1", "mn": "ADBE Vector Graphic - Stroke" }, { "ty": "tr", "p": { "k": [ 0.198, 1.099 ], "ix": 2 }, "a": { "k": [ 0, 0 ], "ix": 1 }, "s": { "k": [ 100, 100 ], "ix": 3 }, "r": { "k": 0, "ix": 6 }, "o": { "k": 100, "ix": 7 }, "sk": { "k": 0, "ix": 4 }, "sa": { "k": 0, "ix": 5 }, "nm": "Transform" } ], "nm": "Rectangle 1", "np": 2, "mn": "ADBE Vector Group" } ], "ip": 35, "op": 63, "st": 0, "bm": 0, "sr": 1 }, { "ddd": 0, "ind": 1, "ty": 4, "nm": "Shape Layer 3", "parent": 3, "ks": { "o": { "k": 100 }, "r": { "k": 0 }, "p": { "k": [ { "i": { "x": 0, "y": 1 }, "o": { "x": 0.167, "y": 0.167 }, "n": "0_1_0p167_0p167", "t": 16, "s": [ 111.714, 100, 0 ], "e": [ 111.714, 91, 0 ], "to": [ 0, 0, 0 ], "ti": [ 0, 0, 0 ] }, { "t": 35 } ] }, "a": { "k": [ 0, 0, 0 ] }, "s": { "k": [ 100, 100, 100 ] } }, "ao": 0, "shapes": [ { "ty": "gr", "it": [ { "ty": "rc", "d": 1, "s": { "k": [ { "i": { "x": [ 0, 0 ], "y": [ 0, 1 ] }, "o": { "x": [ 0.167, 0.167 ], "y": [ 0.167, 0.167 ] }, "n": [ "0_0_0p167_0p167", "0_1_0p167_0p167" ], "t": 16, "s": [ 109.714, 85.714 ], "e": [ 109.714, 103.714 ] }, { "t": 35 } ] }, "p": { "k": [ 0, 0 ] }, "r": { "k": 0 }, "nm": "Rectangle Path 1", "mn": "ADBE Vector Shape - Rect" }, { "ty": "st", "c": { "k": [ 0, 0, 0, 1 ] }, "o": { "k": 100 }, "w": { "k": 14 }, "lc": 1, "lj": 1, "ml": 4, "nm": "Stroke 1", "mn": "ADBE Vector Graphic - Stroke" }, { "ty": "tr", "p": { "k": [ 0.198, 1.099 ], "ix": 2 }, "a": { "k": [ 0, 0 ], "ix": 1 }, "s": { "k": [ 100, 100 ], "ix": 3 }, "r": { "k": 0, "ix": 6 }, "o": { "k": 100, "ix": 7 }, "sk": { "k": 0, "ix": 4 }, "sa": { "k": 0, "ix": 5 }, "nm": "Transform" } ], "nm": "Rectangle 1", "np": 2, "mn": "ADBE Vector Group" } ], "ip": 16, "op": 35, "st": 0, "bm": 0, "sr": 1 }, { "ddd": 0, "ind": 2, "ty": 4, "nm": "Shape Layer 2", "parent": 3, "ks": { "o": { "k": 100 }, "r": { "k": 0 }, "p": { "k": [ { "i": { "x": 0, "y": 1 }, "o": { "x": 0.167, "y": 0.167 }, "n": "0_1_0p167_0p167", "t": 0, "s": [ 99.714, 100, 0 ], "e": [ 111.714, 100, 0 ], "to": [ 0, 0, 0 ], "ti": [ 0, 0, 0 ] }, { "t": 16 } ] }, "a": { "k": [ 0, 0, 0 ] }, "s": { "k": [ 100, 100, 100 ] } }, "ao": 0, "shapes": [ { "ty": "gr", "it": [ { "ty": "rc", "d": 1, "s": { "k": [ { "i": { "x": [ 0, 0 ], "y": [ 1, 0 ] }, "o": { "x": [ 0.167, 0.167 ], "y": [ 0.167, 0.167 ] }, "n": [ "0_1_0p167_0p167", "0_0_0p167_0p167" ], "t": 0, "s": [ 85.714, 85.714 ], "e": [ 109.714, 85.714 ] }, { "t": 16 } ] }, "p": { "k": [ 0, 0 ] }, "r": { "k": 0 }, "nm": "Rectangle Path 1", "mn": "ADBE Vector Shape - Rect" }, { "ty": "st", "c": { "k": [ 0, 0, 0, 1 ] }, "o": { "k": 100 }, "w": { "k": 14 }, "lc": 1, "lj": 1, "ml": 4, "nm": "Stroke 1", "mn": "ADBE Vector Graphic - Stroke" }, { "ty": "tr", "p": { "k": [ 0.198, 1.099 ], "ix": 2 }, "a": { "k": [ 0, 0 ], "ix": 1 }, "s": { "k": [ 100, 100 ], "ix": 3 }, "r": { "k": 0, "ix": 6 }, "o": { "k": 100, "ix": 7 }, "sk": { "k": 0, "ix": 4 }, "sa": { "k": 0, "ix": 5 }, "nm": "Transform" } ], "nm": "Rectangle 1", "np": 2, "mn": "ADBE Vector Group" } ], "ip": 0, "op": 16, "st": 0, "bm": 0, "sr": 1 }, { "ddd": 0, "ind": 3, "ty": 1, "nm": "White Solid 1", "ks": { "o": { "k": 100 }, "r": { "k": 0 }, "p": { "k": [ 45, 45, 0 ] }, "a": { "k": [ 100, 100, 0 ] }, "s": { "k": [ 45, 45, 100 ] } }, "ao": 0, "sw": 200, "sh": 200, "sc": "#ffffff", "ip": 0, "op": 63, "st": 0, "bm": 0, "sr": 1 } ], "v": "4.5.4", "ddd": 0, "ip": 0, "op": 63, "fr": 60, "w": 90, "h": 90 }
|
|
@ -1 +0,0 @@
|
|||||||
{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 2","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[100,100,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":[{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"n":"0_1_1_0","t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[42.857,-42.857],[42.857,42.857],[-42.857,42.857],[-42.857,-42.857]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[42.857,-75],[42.857,75],[-42.857,75],[-42.857,-75]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"n":"0_1_1_0","t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[42.857,-75],[42.857,75],[-42.857,75],[-42.857,-75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74,-75],[74,75],[-74,75],[-74,-75]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"n":"0_1_1_0","t":35,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[74,-75],[74,75],[-74,75],[-74,-75]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[42.857,-42.857],[42.857,42.857],[-42.857,42.857],[-42.857,-42.857]],"c":true}]},{"t":48}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"st","c":{"k":[0,0,0,1]},"o":{"k":100},"w":{"k":14},"lc":1,"lj":1,"ml":4,"nm":"Stroke 2","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":49,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":1,"nm":"White Solid 3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[45,45,0]},"a":{"k":[100,100,0]},"s":{"k":[45,45,100]}},"ao":0,"sw":200,"sh":200,"sc":"#ffffff","ip":0,"op":49,"st":0,"bm":0,"sr":1}],"v":"4.5.4","ddd":0,"ip":0,"op":49,"fr":60,"w":90,"h":90}
|
|
@ -1 +0,0 @@
|
|||||||
{"v":"5.7.7","fr":29.9700012207031,"ip":0,"op":181.000007372281,"w":375,"h":375,"nm":"Square","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[187.5,187.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow2","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,1,0.609851837158,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":127.5,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":10,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":20,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[217.641,217.641],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-4.68,-1.68],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":184.000007494474,"st":0,"bm":0}],"markers":[]}
|
|
@ -1 +0,0 @@
|
|||||||
{"v":"5.7.7","fr":29.9700012207031,"ip":0,"op":121.000004928431,"w":400,"h":400,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200,200,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":29,"nm":"Gaussian Blur2","np":5,"mn":"ADBE Gaussian Blur 2","ix":1,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":24.00000097754,"s":[120.7]}],"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":0,"ix":3}}]},{"ty":5,"nm":"Bulge","np":9,"mn":"ADBE Bulge","ix":2,"en":1,"ef":[{"ty":0,"nm":"Horizontal Radius","mn":"ADBE Bulge-0001","ix":1,"v":{"a":0,"k":50,"ix":1}},{"ty":0,"nm":"Vertical Radius","mn":"ADBE Bulge-0002","ix":2,"v":{"a":0,"k":50,"ix":2}},{"ty":3,"nm":"Bulge Center","mn":"ADBE Bulge-0003","ix":3,"v":{"a":0,"k":[200,200],"ix":3}},{"ty":0,"nm":"Bulge Height","mn":"ADBE Bulge-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Taper Radius","mn":"ADBE Bulge-0005","ix":5,"v":{"a":0,"k":0,"ix":5}},{"ty":7,"nm":"Antialiasing (Best Qual Only)","mn":"ADBE Bulge-0006","ix":6,"v":{"a":0,"k":1,"ix":6}},{"ty":7,"nm":"Pinning","mn":"ADBE Bulge-0007","ix":7,"v":{"a":0,"k":0,"ix":7}}]}],"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[274.975,274.975],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[-4.513,7.487],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":46,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":121.000004928431,"st":0,"bm":0}],"markers":[]}
|
|
@ -1,497 +0,0 @@
|
|||||||
{
|
|
||||||
"v": "5.7.3",
|
|
||||||
"fr": 25,
|
|
||||||
"ip": 0,
|
|
||||||
"op": 200,
|
|
||||||
"w": 720,
|
|
||||||
"h": 720,
|
|
||||||
"nm": "2222",
|
|
||||||
"ddd": 0,
|
|
||||||
"assets": [
|
|
||||||
{
|
|
||||||
"id": "comp_0",
|
|
||||||
"layers": [
|
|
||||||
{
|
|
||||||
"ddd": 0,
|
|
||||||
"ind": 1,
|
|
||||||
"ty": 4,
|
|
||||||
"nm": "形状图层 14",
|
|
||||||
"sr": 2,
|
|
||||||
"ks": {
|
|
||||||
"o": {
|
|
||||||
"a": 0,
|
|
||||||
"k": 100,
|
|
||||||
"ix": 11
|
|
||||||
},
|
|
||||||
"r": {
|
|
||||||
"a": 0,
|
|
||||||
"k": 0,
|
|
||||||
"ix": 10
|
|
||||||
},
|
|
||||||
"p": {
|
|
||||||
"a": 0,
|
|
||||||
"k": [
|
|
||||||
604.375,
|
|
||||||
402,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"ix": 2
|
|
||||||
},
|
|
||||||
"a": {
|
|
||||||
"a": 0,
|
|
||||||
"k": [
|
|
||||||
-372,
|
|
||||||
42,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"ix": 1
|
|
||||||
},
|
|
||||||
"s": {
|
|
||||||
"a": 0,
|
|
||||||
"k": [
|
|
||||||
101.874,
|
|
||||||
100,
|
|
||||||
100
|
|
||||||
],
|
|
||||||
"ix": 6
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ao": 0,
|
|
||||||
"shapes": [
|
|
||||||
{
|
|
||||||
"ty": "gr",
|
|
||||||
"it": [
|
|
||||||
{
|
|
||||||
"ind": 0,
|
|
||||||
"ty": "sh",
|
|
||||||
"ix": 1,
|
|
||||||
"ks": {
|
|
||||||
"a": 1,
|
|
||||||
"k": [
|
|
||||||
{
|
|
||||||
"i": {
|
|
||||||
"x": 0.667,
|
|
||||||
"y": 1
|
|
||||||
},
|
|
||||||
"o": {
|
|
||||||
"x": 0.333,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"t": 0,
|
|
||||||
"s": [
|
|
||||||
{
|
|
||||||
"i": [
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"o": [
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"v": [
|
|
||||||
[
|
|
||||||
-51.35,
|
|
||||||
-640
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-51.35,
|
|
||||||
640
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-51.4,
|
|
||||||
640
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-51.4,
|
|
||||||
-640
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"c": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"i": {
|
|
||||||
"x": 0.667,
|
|
||||||
"y": 1
|
|
||||||
},
|
|
||||||
"o": {
|
|
||||||
"x": 0.333,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"t": 34,
|
|
||||||
"s": [
|
|
||||||
{
|
|
||||||
"i": [
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"o": [
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"v": [
|
|
||||||
[
|
|
||||||
51.4,
|
|
||||||
-640
|
|
||||||
],
|
|
||||||
[
|
|
||||||
51.4,
|
|
||||||
640
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-51.4,
|
|
||||||
640
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-51.4,
|
|
||||||
-640
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"c": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"i": {
|
|
||||||
"x": 0.833,
|
|
||||||
"y": 1
|
|
||||||
},
|
|
||||||
"o": {
|
|
||||||
"x": 0.333,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"t": 62,
|
|
||||||
"s": [
|
|
||||||
{
|
|
||||||
"i": [
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"o": [
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"v": [
|
|
||||||
[
|
|
||||||
51.4,
|
|
||||||
-640
|
|
||||||
],
|
|
||||||
[
|
|
||||||
51.4,
|
|
||||||
640
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-51.4,
|
|
||||||
640
|
|
||||||
],
|
|
||||||
[
|
|
||||||
-51.4,
|
|
||||||
-640
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"c": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"t": 100,
|
|
||||||
"s": [
|
|
||||||
{
|
|
||||||
"i": [
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"o": [
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
[
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"v": [
|
|
||||||
[
|
|
||||||
51.4,
|
|
||||||
-640
|
|
||||||
],
|
|
||||||
[
|
|
||||||
51.4,
|
|
||||||
640
|
|
||||||
],
|
|
||||||
[
|
|
||||||
51.1,
|
|
||||||
640
|
|
||||||
],
|
|
||||||
[
|
|
||||||
51.1,
|
|
||||||
-640
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"c": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"ix": 2
|
|
||||||
},
|
|
||||||
"nm": "路径 1",
|
|
||||||
"mn": "ADBE Vector Shape - Group",
|
|
||||||
"hd": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ty": "fl",
|
|
||||||
"c": {
|
|
||||||
"a": 0,
|
|
||||||
"k": [
|
|
||||||
0.96862745285,
|
|
||||||
0.960784316063,
|
|
||||||
0.172549024224,
|
|
||||||
1
|
|
||||||
],
|
|
||||||
"ix": 4
|
|
||||||
},
|
|
||||||
"o": {
|
|
||||||
"a": 0,
|
|
||||||
"k": 100,
|
|
||||||
"ix": 5
|
|
||||||
},
|
|
||||||
"r": 1,
|
|
||||||
"bm": 0,
|
|
||||||
"nm": "EditableColor#2",
|
|
||||||
"mn": "ADBE Vector Graphic - Fill",
|
|
||||||
"hd": false,
|
|
||||||
"ln": "2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ty": "tr",
|
|
||||||
"p": {
|
|
||||||
"a": 0,
|
|
||||||
"k": [
|
|
||||||
-310,
|
|
||||||
42
|
|
||||||
],
|
|
||||||
"ix": 2
|
|
||||||
},
|
|
||||||
"a": {
|
|
||||||
"a": 0,
|
|
||||||
"k": [
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"ix": 1
|
|
||||||
},
|
|
||||||
"s": {
|
|
||||||
"a": 0,
|
|
||||||
"k": [
|
|
||||||
100,
|
|
||||||
100
|
|
||||||
],
|
|
||||||
"ix": 3
|
|
||||||
},
|
|
||||||
"r": {
|
|
||||||
"a": 0,
|
|
||||||
"k": 0,
|
|
||||||
"ix": 6
|
|
||||||
},
|
|
||||||
"o": {
|
|
||||||
"a": 0,
|
|
||||||
"k": 100,
|
|
||||||
"ix": 7
|
|
||||||
},
|
|
||||||
"sk": {
|
|
||||||
"a": 0,
|
|
||||||
"k": 0,
|
|
||||||
"ix": 4
|
|
||||||
},
|
|
||||||
"sa": {
|
|
||||||
"a": 0,
|
|
||||||
"k": 0,
|
|
||||||
"ix": 5
|
|
||||||
},
|
|
||||||
"nm": "变换"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"nm": "矩形 1",
|
|
||||||
"np": 2,
|
|
||||||
"cix": 2,
|
|
||||||
"bm": 0,
|
|
||||||
"ix": 1,
|
|
||||||
"mn": "ADBE Vector Group",
|
|
||||||
"hd": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"ip": 0,
|
|
||||||
"op": 100,
|
|
||||||
"st": 0,
|
|
||||||
"bm": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"layers": [
|
|
||||||
{
|
|
||||||
"ddd": 0,
|
|
||||||
"ind": 1,
|
|
||||||
"ty": 0,
|
|
||||||
"nm": "测试2",
|
|
||||||
"refId": "comp_0",
|
|
||||||
"sr": 2,
|
|
||||||
"ks": {
|
|
||||||
"o": {
|
|
||||||
"a": 0,
|
|
||||||
"k": 100,
|
|
||||||
"ix": 11
|
|
||||||
},
|
|
||||||
"r": {
|
|
||||||
"a": 0,
|
|
||||||
"k": 0,
|
|
||||||
"ix": 10
|
|
||||||
},
|
|
||||||
"p": {
|
|
||||||
"a": 0,
|
|
||||||
"k": [
|
|
||||||
360,
|
|
||||||
360,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"ix": 2
|
|
||||||
},
|
|
||||||
"a": {
|
|
||||||
"a": 0,
|
|
||||||
"k": [
|
|
||||||
360,
|
|
||||||
360,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"ix": 1
|
|
||||||
},
|
|
||||||
"s": {
|
|
||||||
"a": 0,
|
|
||||||
"k": [
|
|
||||||
100,
|
|
||||||
100,
|
|
||||||
100
|
|
||||||
],
|
|
||||||
"ix": 6
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ao": 0,
|
|
||||||
"w": 720,
|
|
||||||
"h": 720,
|
|
||||||
"ip": 0,
|
|
||||||
"op": 200,
|
|
||||||
"st": 0,
|
|
||||||
"bm": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"markers": []
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
{"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Shape Layer 1","parent":1,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[100,100,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":0,"s":[85.714,85.714],"e":[52.714,52.714]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"n":["0p667_1_0p333_0","0p667_1_0p333_0"],"t":16,"s":[52.714,52.714],"e":[85.714,85.714]},{"t":35}]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect"},{"ty":"st","c":{"k":[0,0,0,1]},"o":{"k":100},"w":{"k":14},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[2.198,1.099],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":36,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":1,"nm":"White Solid 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[45,45,0]},"a":{"k":[100,100,0]},"s":{"k":[45,45,100]}},"ao":0,"sw":200,"sh":200,"sc":"#ffffff","ip":0,"op":36,"st":0,"bm":0,"sr":1}],"v":"4.5.4","ddd":0,"ip":0,"op":36,"fr":60,"w":90,"h":90}
|
|
@ -21,6 +21,6 @@
|
|||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1.0</string>
|
<string>1.0</string>
|
||||||
<key>MinimumOSVersion</key>
|
<key>MinimumOSVersion</key>
|
||||||
<string>9.0</string>
|
<string>8.0</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
|
||||||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
||||||
#include "Generated.xcconfig"
|
#include "Generated.xcconfig"
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
|
|
||||||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
|
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
|
||||||
#include "Generated.xcconfig"
|
#include "Generated.xcconfig"
|
||||||
|
@ -10,32 +10,78 @@ project 'Runner', {
|
|||||||
'Release' => :release,
|
'Release' => :release,
|
||||||
}
|
}
|
||||||
|
|
||||||
def flutter_root
|
def parse_KV_file(file, separator='=')
|
||||||
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
|
file_abs_path = File.expand_path(file)
|
||||||
unless File.exist?(generated_xcode_build_settings_path)
|
if !File.exists? file_abs_path
|
||||||
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
|
return [];
|
||||||
end
|
end
|
||||||
|
generated_key_values = {}
|
||||||
File.foreach(generated_xcode_build_settings_path) do |line|
|
skip_line_start_symbols = ["#", "/"]
|
||||||
matches = line.match(/FLUTTER_ROOT\=(.*)/)
|
File.foreach(file_abs_path) do |line|
|
||||||
return matches[1].strip if matches
|
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
|
||||||
|
plugin = line.split(pattern=separator)
|
||||||
|
if plugin.length == 2
|
||||||
|
podname = plugin[0].strip()
|
||||||
|
path = plugin[1].strip()
|
||||||
|
podpath = File.expand_path("#{path}", file_abs_path)
|
||||||
|
generated_key_values[podname] = podpath
|
||||||
|
else
|
||||||
|
puts "Invalid plugin specification: #{line}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
|
generated_key_values
|
||||||
end
|
end
|
||||||
|
|
||||||
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
|
|
||||||
|
|
||||||
flutter_ios_podfile_setup
|
|
||||||
|
|
||||||
target 'Runner' do
|
target 'Runner' do
|
||||||
use_frameworks!
|
use_frameworks!
|
||||||
use_modular_headers!
|
use_modular_headers!
|
||||||
|
|
||||||
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
|
# Flutter Pod
|
||||||
|
|
||||||
|
copied_flutter_dir = File.join(__dir__, 'Flutter')
|
||||||
|
copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
|
||||||
|
copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
|
||||||
|
unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
|
||||||
|
# Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
|
||||||
|
# That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
|
||||||
|
# CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
|
||||||
|
|
||||||
|
generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
|
||||||
|
unless File.exist?(generated_xcode_build_settings_path)
|
||||||
|
raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
|
||||||
|
end
|
||||||
|
generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
|
||||||
|
cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
|
||||||
|
|
||||||
|
unless File.exist?(copied_framework_path)
|
||||||
|
FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
|
||||||
|
end
|
||||||
|
unless File.exist?(copied_podspec_path)
|
||||||
|
FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Keep pod path relative so it can be checked into Podfile.lock.
|
||||||
|
pod 'Flutter', :path => 'Flutter'
|
||||||
|
|
||||||
|
# Plugin Pods
|
||||||
|
|
||||||
|
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
|
||||||
|
# referring to absolute paths on developers' machines.
|
||||||
|
system('rm -rf .symlinks')
|
||||||
|
system('mkdir -p .symlinks/plugins')
|
||||||
|
plugin_pods = parse_KV_file('../.flutter-plugins')
|
||||||
|
plugin_pods.each do |name, path|
|
||||||
|
symlink = File.join('.symlinks', 'plugins', name)
|
||||||
|
File.symlink(path, symlink)
|
||||||
|
pod name, :path => File.join(symlink, 'ios')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
post_install do |installer|
|
post_install do |installer|
|
||||||
installer.pods_project.targets.each do |target|
|
installer.pods_project.targets.each do |target|
|
||||||
flutter_additional_ios_build_settings(target)
|
target.build_configurations.each do |config|
|
||||||
|
config.build_settings['ENABLE_BITCODE'] = 'NO'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -2,21 +2,27 @@ PODS:
|
|||||||
- Flutter (1.0.0)
|
- Flutter (1.0.0)
|
||||||
- path_provider (0.0.1):
|
- path_provider (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- path_provider_macos (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- Flutter (from `Flutter`)
|
- Flutter (from `Flutter`)
|
||||||
- path_provider (from `.symlinks/plugins/path_provider/ios`)
|
- path_provider (from `.symlinks/plugins/path_provider/ios`)
|
||||||
|
- path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`)
|
||||||
|
|
||||||
EXTERNAL SOURCES:
|
EXTERNAL SOURCES:
|
||||||
Flutter:
|
Flutter:
|
||||||
:path: Flutter
|
:path: Flutter
|
||||||
path_provider:
|
path_provider:
|
||||||
:path: ".symlinks/plugins/path_provider/ios"
|
:path: ".symlinks/plugins/path_provider/ios"
|
||||||
|
path_provider_macos:
|
||||||
|
:path: ".symlinks/plugins/path_provider_macos/ios"
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
|
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
|
||||||
path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
|
path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d
|
||||||
|
path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0
|
||||||
|
|
||||||
PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
|
PODFILE CHECKSUM: c34e2287a9ccaa606aeceab922830efb9a6ff69a
|
||||||
|
|
||||||
COCOAPODS: 1.11.2
|
COCOAPODS: 1.9.1
|
||||||
|
@ -264,10 +264,12 @@
|
|||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
|
||||||
|
"${PODS_ROOT}/../Flutter/Flutter.framework",
|
||||||
"${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework",
|
"${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework",
|
||||||
);
|
);
|
||||||
name = "[CP] Embed Pods Frameworks";
|
name = "[CP] Embed Pods Frameworks";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework",
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -311,6 +313,7 @@
|
|||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
249021D3217E4FDB00AE95B9 /* Profile */ = {
|
249021D3217E4FDB00AE95B9 /* Profile */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
@ -350,7 +353,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
SUPPORTED_PLATFORMS = iphoneos;
|
SUPPORTED_PLATFORMS = iphoneos;
|
||||||
@ -388,6 +391,7 @@
|
|||||||
};
|
};
|
||||||
97C147031CF9000F007C117D /* Debug */ = {
|
97C147031CF9000F007C117D /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
@ -433,7 +437,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = YES;
|
MTL_ENABLE_DEBUG_INFO = YES;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
@ -443,6 +447,7 @@
|
|||||||
};
|
};
|
||||||
97C147041CF9000F007C117D /* Release */ = {
|
97C147041CF9000F007C117D /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
@ -482,7 +487,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
SUPPORTED_PLATFORMS = iphoneos;
|
SUPPORTED_PLATFORMS = iphoneos;
|
||||||
|
@ -2,6 +2,6 @@
|
|||||||
<Workspace
|
<Workspace
|
||||||
version = "1.0">
|
version = "1.0">
|
||||||
<FileRef
|
<FileRef
|
||||||
location = "self:">
|
location = "group:Runner.xcodeproj">
|
||||||
</FileRef>
|
</FileRef>
|
||||||
</Workspace>
|
</Workspace>
|
||||||
|
@ -2,11 +2,9 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter/scheduler.dart';
|
import 'package:flutter/scheduler.dart';
|
||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() => runApp(const App());
|
void main() => runApp(App());
|
||||||
|
|
||||||
class App extends StatelessWidget {
|
class App extends StatelessWidget {
|
||||||
const App({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
@ -44,6 +42,6 @@ class __PageState extends State<_Page> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return const Center();
|
return Center();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
runApp(const App());
|
runApp(App());
|
||||||
}
|
}
|
||||||
|
|
||||||
class App extends StatelessWidget {
|
class App extends StatelessWidget {
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() => runApp(const MyApp());
|
void main() => runApp(MyApp());
|
||||||
|
|
||||||
class MyApp extends StatefulWidget {
|
class MyApp extends StatefulWidget {
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_MyAppState createState() => _MyAppState();
|
_MyAppState createState() => _MyAppState();
|
||||||
}
|
}
|
||||||
|
@ -9,11 +9,9 @@ import 'package:lottie/lottie.dart';
|
|||||||
/// This works by creating an AnimationController instance and passing it
|
/// This works by creating an AnimationController instance and passing it
|
||||||
/// to the Lottie widget.
|
/// to the Lottie widget.
|
||||||
/// The AnimationController class has a rich API to run the animation in various ways.
|
/// The AnimationController class has a rich API to run the animation in various ways.
|
||||||
void main() => runApp(const MyApp());
|
void main() => runApp(MyApp());
|
||||||
|
|
||||||
class MyApp extends StatefulWidget {
|
class MyApp extends StatefulWidget {
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_MyAppState createState() => _MyAppState();
|
_MyAppState createState() => _MyAppState();
|
||||||
}
|
}
|
||||||
@ -45,7 +43,7 @@ class _MyAppState extends State<MyApp> with TickerProviderStateMixin {
|
|||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text('Animation control'),
|
title: Text('Animation control'),
|
||||||
),
|
),
|
||||||
body: Column(
|
body: Column(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
@ -60,27 +58,27 @@ class _MyAppState extends State<MyApp> with TickerProviderStateMixin {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
Text(_controller.value.toStringAsFixed(2)),
|
Text('${_controller.value.toStringAsFixed(2)}'),
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
// Play backward
|
// Play backward
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: const Icon(Icons.arrow_left),
|
icon: Icon(Icons.arrow_left),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
_controller.reverse();
|
_controller.reverse();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
// Pause
|
// Pause
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: const Icon(Icons.pause),
|
icon: Icon(Icons.pause),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
_controller.stop();
|
_controller.stop();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
// Play forward
|
// Play forward
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: const Icon(Icons.arrow_right),
|
icon: Icon(Icons.arrow_right),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
_controller.forward();
|
_controller.forward();
|
||||||
},
|
},
|
||||||
@ -88,7 +86,8 @@ class _MyAppState extends State<MyApp> with TickerProviderStateMixin {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(height: 30),
|
const SizedBox(height: 30),
|
||||||
ElevatedButton(
|
RaisedButton(
|
||||||
|
child: Text('Loop between frames'),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
// Loop between 2 specifics frames
|
// Loop between 2 specifics frames
|
||||||
|
|
||||||
@ -101,7 +100,6 @@ class _MyAppState extends State<MyApp> with TickerProviderStateMixin {
|
|||||||
period: _controller.duration! * (stop - start),
|
period: _controller.duration! * (stop - start),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: const Text('Loop between frames'),
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:lottie/lottie.dart';
|
|
||||||
|
|
||||||
void main() => runApp(const MyApp());
|
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return MaterialApp(
|
|
||||||
home: Scaffold(
|
|
||||||
body: ListView(
|
|
||||||
children: [
|
|
||||||
Lottie.asset(
|
|
||||||
'assets/AndroidWave.json',
|
|
||||||
height: 300,
|
|
||||||
delegates: LottieDelegates(values: [
|
|
||||||
ValueDelegate.blurRadius(
|
|
||||||
['**'],
|
|
||||||
value: 20,
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -3,14 +3,12 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() => runApp(const MyApp());
|
void main() => runApp(MyApp());
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class MyApp extends StatelessWidget {
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return const MaterialApp(
|
return MaterialApp(
|
||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
body: MyWidget(),
|
body: MyWidget(),
|
||||||
),
|
),
|
||||||
@ -19,8 +17,6 @@ class MyApp extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class MyWidget extends StatefulWidget {
|
class MyWidget extends StatefulWidget {
|
||||||
const MyWidget({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_MyWidgetState createState() => _MyWidgetState();
|
_MyWidgetState createState() => _MyWidgetState();
|
||||||
}
|
}
|
||||||
@ -50,7 +46,7 @@ class _MyWidgetState extends State<MyWidget> {
|
|||||||
if (composition != null) {
|
if (composition != null) {
|
||||||
return CustomDrawer(composition);
|
return CustomDrawer(composition);
|
||||||
} else {
|
} else {
|
||||||
return const Center(child: CircularProgressIndicator());
|
return Center(child: CircularProgressIndicator());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -67,7 +63,7 @@ class CustomDrawer extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return CustomPaint(
|
return CustomPaint(
|
||||||
painter: _Painter(composition),
|
painter: _Painter(composition),
|
||||||
size: const Size(400, 400),
|
size: Size(400, 400),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,14 +3,12 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() => runApp(const MyApp());
|
void main() => runApp(MyApp());
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class MyApp extends StatelessWidget {
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return const MaterialApp(
|
return MaterialApp(
|
||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
body: MyWidget(),
|
body: MyWidget(),
|
||||||
),
|
),
|
||||||
@ -20,8 +18,6 @@ class MyApp extends StatelessWidget {
|
|||||||
|
|
||||||
//--- example
|
//--- example
|
||||||
class MyWidget extends StatefulWidget {
|
class MyWidget extends StatefulWidget {
|
||||||
const MyWidget({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_MyWidgetState createState() => _MyWidgetState();
|
_MyWidgetState createState() => _MyWidgetState();
|
||||||
}
|
}
|
||||||
@ -50,7 +46,7 @@ class _MyWidgetState extends State<MyWidget> {
|
|||||||
if (composition != null) {
|
if (composition != null) {
|
||||||
return Lottie(composition: composition);
|
return Lottie(composition: composition);
|
||||||
} else {
|
} else {
|
||||||
return const Center(child: CircularProgressIndicator());
|
return Center(child: CircularProgressIndicator());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:lottie/lottie.dart';
|
|
||||||
|
|
||||||
void main() => runApp(const MyApp());
|
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return MaterialApp(
|
|
||||||
home: Scaffold(
|
|
||||||
body: ListView(
|
|
||||||
children: [
|
|
||||||
Lottie.asset(
|
|
||||||
'assets/Tests/Fill.json',
|
|
||||||
height: 300,
|
|
||||||
delegates: LottieDelegates(values: [
|
|
||||||
ValueDelegate.dropShadow(
|
|
||||||
['**'],
|
|
||||||
value: const DropShadow(
|
|
||||||
color: Colors.blue,
|
|
||||||
direction: 140,
|
|
||||||
distance: 60,
|
|
||||||
radius: 10,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -4,7 +4,7 @@ import 'package:flutter_colorpicker/flutter_colorpicker.dart';
|
|||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
runApp(const App());
|
runApp(App());
|
||||||
}
|
}
|
||||||
|
|
||||||
class App extends StatefulWidget {
|
class App extends StatefulWidget {
|
||||||
@ -33,7 +33,7 @@ class _AppState extends State<App> with TickerProviderStateMixin {
|
|||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
backgroundColor: Colors.white,
|
backgroundColor: Colors.white,
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text('Dynamic properties'),
|
title: Text('Dynamic properties'),
|
||||||
),
|
),
|
||||||
body: ListView(
|
body: ListView(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
@ -63,7 +63,7 @@ class _AppState extends State<App> with TickerProviderStateMixin {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
Center(
|
Center(
|
||||||
child: SizedBox(
|
child: Container(
|
||||||
width: 500,
|
width: 500,
|
||||||
child: ColorPicker(
|
child: ColorPicker(
|
||||||
pickerColor: _color,
|
pickerColor: _color,
|
||||||
|
@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
runApp(const App());
|
runApp(App());
|
||||||
}
|
}
|
||||||
|
|
||||||
class App extends StatefulWidget {
|
class App extends StatefulWidget {
|
||||||
@ -36,7 +36,7 @@ class _AppState extends State<App> with TickerProviderStateMixin {
|
|||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
backgroundColor: Colors.white,
|
backgroundColor: Colors.white,
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text('Dynamic text'),
|
title: Text('Dynamic text'),
|
||||||
),
|
),
|
||||||
body: Center(
|
body: Center(
|
||||||
child: Column(
|
child: Column(
|
||||||
@ -54,7 +54,7 @@ class _AppState extends State<App> with TickerProviderStateMixin {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(
|
Container(
|
||||||
width: 300,
|
width: 300,
|
||||||
child: CupertinoTextField(
|
child: CupertinoTextField(
|
||||||
controller: _textController,
|
controller: _textController,
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:lottie/lottie.dart';
|
|
||||||
|
|
||||||
void main() => runApp(const MyApp());
|
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return MaterialApp(
|
|
||||||
home: Scaffold(
|
|
||||||
body: ListView(
|
|
||||||
children: [_Animation()],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class _Animation extends StatelessWidget {
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Lottie.network(
|
|
||||||
'https://example.does.not.exist/lottie.json',
|
|
||||||
errorBuilder: (context, exception, stackTrace) {
|
|
||||||
return const Text('😢');
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() => runApp(const MyApp());
|
void main() => runApp(MyApp());
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class MyApp extends StatelessWidget {
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
|
@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
runApp(const App());
|
runApp(App());
|
||||||
}
|
}
|
||||||
|
|
||||||
class App extends StatefulWidget {
|
class App extends StatefulWidget {
|
||||||
|
@ -5,7 +5,7 @@ import 'package:lottie/lottie.dart';
|
|||||||
/// It is based on this article for lottie-ios:
|
/// It is based on this article for lottie-ios:
|
||||||
/// https://medium.com/swlh/controlling-lottie-animation-with-markers-5e9035d94623
|
/// https://medium.com/swlh/controlling-lottie-animation-with-markers-5e9035d94623
|
||||||
void main() async {
|
void main() async {
|
||||||
runApp(const App());
|
runApp(App());
|
||||||
}
|
}
|
||||||
|
|
||||||
class App extends StatefulWidget {
|
class App extends StatefulWidget {
|
||||||
@ -30,13 +30,13 @@ class _AppState extends State<App> with TickerProviderStateMixin {
|
|||||||
theme: ThemeData.dark(),
|
theme: ThemeData.dark(),
|
||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text('Markers'),
|
title: Text('Markers'),
|
||||||
),
|
),
|
||||||
body: FutureBuilder<LottieComposition>(
|
body: FutureBuilder<LottieComposition>(
|
||||||
future: _composition,
|
future: _composition,
|
||||||
builder: (context, snapshot) {
|
builder: (context, snapshot) {
|
||||||
if (snapshot.hasError) return ErrorWidget(snapshot.error!);
|
if (snapshot.hasError) return ErrorWidget(snapshot.error!);
|
||||||
if (!snapshot.hasData) return const CircularProgressIndicator();
|
if (!snapshot.hasData) return CircularProgressIndicator();
|
||||||
return _LottieDetails(snapshot.data!);
|
return _LottieDetails(snapshot.data!);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
@ -80,24 +80,24 @@ class _LottieDetailsState extends State<_LottieDetails>
|
|||||||
height: 150,
|
height: 150,
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
title: const Text('Composition start frame'),
|
title: Text('Composition start frame'),
|
||||||
trailing: Text(widget.composition.startFrame.toStringAsFixed(1)),
|
trailing: Text(widget.composition.startFrame.toStringAsFixed(1)),
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
title: const Text('Composition duration'),
|
title: Text('Composition duration'),
|
||||||
trailing: Text(widget.composition.durationFrames.toStringAsFixed(1)),
|
trailing: Text(widget.composition.durationFrames.toStringAsFixed(1)),
|
||||||
),
|
),
|
||||||
ElevatedButton(
|
RaisedButton(
|
||||||
|
child: Text('touchDownEnd - touchUpCancel'),
|
||||||
onPressed: () => _playBetween('touchDownEnd', 'touchUpCancel'),
|
onPressed: () => _playBetween('touchDownEnd', 'touchUpCancel'),
|
||||||
child: const Text('touchDownEnd - touchUpCancel'),
|
|
||||||
),
|
),
|
||||||
ElevatedButton(
|
RaisedButton(
|
||||||
|
child: Text('touchDownStart - touchDownEnd'),
|
||||||
onPressed: () => _playBetween('touchDownStart', 'touchDownEnd'),
|
onPressed: () => _playBetween('touchDownStart', 'touchDownEnd'),
|
||||||
child: const Text('touchDownStart - touchDownEnd'),
|
|
||||||
),
|
),
|
||||||
ElevatedButton(
|
RaisedButton(
|
||||||
|
child: Text('touchDownEnd - touchUpEnd'),
|
||||||
onPressed: () => _playBetween('touchDownEnd', 'touchUpEnd'),
|
onPressed: () => _playBetween('touchDownEnd', 'touchUpEnd'),
|
||||||
child: const Text('touchDownEnd - touchUpEnd'),
|
|
||||||
),
|
),
|
||||||
for (var marker in widget.composition.markers)
|
for (var marker in widget.composition.markers)
|
||||||
ListTile(
|
ListTile(
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() => runApp(const MyApp());
|
void main() => runApp(MyApp());
|
||||||
|
|
||||||
class MyApp extends StatefulWidget {
|
class MyApp extends StatefulWidget {
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_MyAppState createState() => _MyAppState();
|
_MyAppState createState() => _MyAppState();
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ void main() async {
|
|||||||
..level = Level.ALL
|
..level = Level.ALL
|
||||||
..onRecord.listen(print);
|
..onRecord.listen(print);
|
||||||
|
|
||||||
runApp(const App());
|
runApp(App());
|
||||||
}
|
}
|
||||||
|
|
||||||
class App extends StatefulWidget {
|
class App extends StatefulWidget {
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
//@dart=2.10
|
||||||
|
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@ -7,17 +9,15 @@ import 'package:path/path.dart' as p;
|
|||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
|
|
||||||
/// This example shows how to save the frame of an animation to files on disk.
|
/// This example shows how to save the frame of an animation to files on disk.
|
||||||
void main() => runApp(const MyApp());
|
void main() => runApp(MyApp());
|
||||||
|
|
||||||
class MyApp extends StatefulWidget {
|
class MyApp extends StatefulWidget {
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_MyAppState createState() => _MyAppState();
|
_MyAppState createState() => _MyAppState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _MyAppState extends State<MyApp> {
|
class _MyAppState extends State<MyApp> {
|
||||||
List<File>? _frames;
|
List<File> _frames;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -28,15 +28,15 @@ class _MyAppState extends State<MyApp> {
|
|||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
children: [
|
children: [
|
||||||
ElevatedButton(
|
RaisedButton(
|
||||||
|
child: Text('Export all frames'),
|
||||||
onPressed: _export,
|
onPressed: _export,
|
||||||
child: const Text('Export all frames'),
|
|
||||||
),
|
),
|
||||||
if (_frames != null)
|
if (_frames != null)
|
||||||
Expanded(
|
Expanded(
|
||||||
child: GridView.count(
|
child: GridView.count(
|
||||||
crossAxisCount: 10,
|
crossAxisCount: 10,
|
||||||
children: [..._frames!.map((f) => Image.file(f))],
|
children: [..._frames.map((f) => Image.file(f))],
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
@ -53,7 +53,7 @@ class _MyAppState extends State<MyApp> {
|
|||||||
var frames = await exportFrames(
|
var frames = await exportFrames(
|
||||||
composition, await _createTempDirectory('export-lottie'),
|
composition, await _createTempDirectory('export-lottie'),
|
||||||
progresses: [for (var i = 0.0; i <= 1; i += 0.1) i],
|
progresses: [for (var i = 0.0; i <= 1; i += 0.1) i],
|
||||||
size: const Size(50, 50));
|
size: Size(50, 50));
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
_frames = frames;
|
_frames = frames;
|
||||||
@ -62,7 +62,7 @@ class _MyAppState extends State<MyApp> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<List<File>> exportFrames(LottieComposition composition, String directory,
|
Future<List<File>> exportFrames(LottieComposition composition, String directory,
|
||||||
{required Size size, required List<double> progresses}) async {
|
{@required Size size, @required List<double> progresses}) async {
|
||||||
var drawable = LottieDrawable(composition);
|
var drawable = LottieDrawable(composition);
|
||||||
|
|
||||||
var frames = <File>[];
|
var frames = <File>[];
|
||||||
@ -89,7 +89,7 @@ Future<ByteData> _toByteData(LottieDrawable drawable, Size size) async {
|
|||||||
|
|
||||||
var picture = pictureRecorder.endRecording();
|
var picture = pictureRecorder.endRecording();
|
||||||
var image = await picture.toImage(size.width.toInt(), size.height.toInt());
|
var image = await picture.toImage(size.width.toInt(), size.height.toInt());
|
||||||
return (await image.toByteData(format: ImageByteFormat.png))!;
|
return await image.toByteData(format: ImageByteFormat.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<String> _createTempDirectory(String folderName) async {
|
Future<String> _createTempDirectory(String folderName) async {
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() => runApp(const MyApp());
|
void main() => runApp(MyApp());
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class MyApp extends StatelessWidget {
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
@ -37,7 +35,7 @@ class _Animation extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
ValueDelegate.position(
|
ValueDelegate.position(
|
||||||
const ['Shape Layer 1', 'Rectangle', '**'],
|
const ['Shape Layer 1', 'Rectangle', '**'],
|
||||||
relative: const Offset(100, 200),
|
relative: Offset(100, 200),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:lottie/lottie.dart';
|
|
||||||
|
|
||||||
// This example show how to use a Lottie animation as a SplashScreen for your application
|
|
||||||
// Since animation are loaded from the assets and can take a few milliseconds to
|
|
||||||
// load, we instruct flutter to defer the first frame until when the animation
|
|
||||||
// is actually ready to be displayed.
|
|
||||||
void main() async {
|
|
||||||
Logger.root
|
|
||||||
..level = Level.ALL
|
|
||||||
..onRecord.listen(print);
|
|
||||||
|
|
||||||
runApp(const SplashScreen());
|
|
||||||
}
|
|
||||||
|
|
||||||
class SplashScreen extends StatefulWidget {
|
|
||||||
const SplashScreen({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
|
||||||
_SplashScreenState createState() => _SplashScreenState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _SplashScreenState extends State<SplashScreen>
|
|
||||||
with TickerProviderStateMixin {
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
super.initState();
|
|
||||||
WidgetsBinding.instance!.deferFirstFrame();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return MaterialApp(
|
|
||||||
color: Colors.lightBlue,
|
|
||||||
home: Scaffold(
|
|
||||||
backgroundColor: Colors.lightBlue,
|
|
||||||
appBar: AppBar(
|
|
||||||
title: const Text('Splash screen'),
|
|
||||||
),
|
|
||||||
body: SingleChildScrollView(
|
|
||||||
child: Center(
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
Lottie.asset('assets/AndroidWave.json',
|
|
||||||
onLoaded: (composition) {
|
|
||||||
WidgetsBinding.instance!.allowFirstFrame();
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,86 +0,0 @@
|
|||||||
import 'dart:typed_data';
|
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter/services.dart';
|
|
||||||
import 'package:logging/logging.dart';
|
|
||||||
import 'package:lottie/lottie.dart';
|
|
||||||
|
|
||||||
void main() async {
|
|
||||||
Logger.root
|
|
||||||
..level = Level.ALL
|
|
||||||
..onRecord.listen(print);
|
|
||||||
|
|
||||||
runApp(const MaterialApp(
|
|
||||||
color: Colors.lightBlue,
|
|
||||||
home: App(),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
class App extends StatefulWidget {
|
|
||||||
const App({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
|
||||||
_AppState createState() => _AppState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _AppState extends State<App> with TickerProviderStateMixin {
|
|
||||||
late Future<Uint8List> _lottieAnimation;
|
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
super.initState();
|
|
||||||
|
|
||||||
// Start loading the animation in background here
|
|
||||||
_lottieAnimation = _loadAnimation();
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<Uint8List> _loadAnimation() async {
|
|
||||||
var asset = await rootBundle.load('assets/AndroidWave.json');
|
|
||||||
return asset.buffer.asUint8List();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
backgroundColor: Colors.lightBlue,
|
|
||||||
appBar: AppBar(
|
|
||||||
title: const Text('Splash screen'),
|
|
||||||
),
|
|
||||||
body: Center(
|
|
||||||
child: ElevatedButton(
|
|
||||||
onPressed: () async {
|
|
||||||
var bytes = await _lottieAnimation;
|
|
||||||
await Navigator.push<void>(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (context) => AnimationScreen(
|
|
||||||
animationBytes: bytes,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
child: const Text('Open splash'),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class AnimationScreen extends StatelessWidget {
|
|
||||||
final Uint8List animationBytes;
|
|
||||||
|
|
||||||
const AnimationScreen({Key? key, required this.animationBytes})
|
|
||||||
: super(key: key);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
appBar: AppBar(
|
|
||||||
title: const Text('Animation'),
|
|
||||||
),
|
|
||||||
body: Center(
|
|
||||||
child: Lottie.memory(animationBytes),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() => runApp(const MyApp());
|
void main() => runApp(MyApp());
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class MyApp extends StatelessWidget {
|
||||||
const MyApp({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
|
@ -4,58 +4,51 @@ import 'package:logging/logging.dart';
|
|||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
import 'src/all_files.g.dart';
|
import 'src/all_files.g.dart';
|
||||||
|
|
||||||
final _logger = Logger('main_app');
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
Logger.root
|
Logger.root
|
||||||
..level = Level.ALL
|
..level = Level.ALL
|
||||||
..onRecord.listen(print);
|
..onRecord.listen(print);
|
||||||
Lottie.traceEnabled = true;
|
Lottie.traceEnabled = true;
|
||||||
runApp(const App());
|
runApp(App());
|
||||||
}
|
}
|
||||||
|
|
||||||
class App extends StatelessWidget {
|
class App extends StatelessWidget {
|
||||||
const App({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
//showPerformanceOverlay: true,
|
//showPerformanceOverlay: true,
|
||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text('Lottie Flutter'),
|
title: Text('Lottie Flutter'),
|
||||||
),
|
),
|
||||||
body: Scrollbar(
|
body: GridView.builder(
|
||||||
child: GridView.builder(
|
itemCount: files.length,
|
||||||
itemCount: files.length,
|
gridDelegate:
|
||||||
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
|
SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 4),
|
||||||
crossAxisCount: 4),
|
itemBuilder: (context, index) {
|
||||||
itemBuilder: (context, index) {
|
var assetName = files[index];
|
||||||
var assetName = files[index];
|
return GestureDetector(
|
||||||
return GestureDetector(
|
child: _Item(
|
||||||
onTap: () {
|
child: Lottie.asset(
|
||||||
Navigator.push(
|
assetName,
|
||||||
context,
|
frameBuilder: (context, child, composition) {
|
||||||
MaterialPageRoute<void>(
|
return AnimatedOpacity(
|
||||||
builder: (context) => Detail(assetName)));
|
child: child,
|
||||||
},
|
opacity: composition == null ? 0 : 1,
|
||||||
child: _Item(
|
duration: const Duration(seconds: 1),
|
||||||
child: Lottie.asset(
|
curve: Curves.easeOut,
|
||||||
assetName,
|
);
|
||||||
onWarning: (w) => _logger.info('$assetName - $w'),
|
},
|
||||||
frameBuilder: (context, child, composition) {
|
|
||||||
return AnimatedOpacity(
|
|
||||||
opacity: composition == null ? 0 : 1,
|
|
||||||
duration: const Duration(seconds: 1),
|
|
||||||
curve: Curves.easeOut,
|
|
||||||
child: child,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
);
|
),
|
||||||
},
|
onTap: () {
|
||||||
),
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute<void>(
|
||||||
|
builder: (context) => Detail(assetName)));
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@ -74,11 +67,11 @@ class _Item extends StatelessWidget {
|
|||||||
child: Container(
|
child: Container(
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
borderRadius: const BorderRadius.all(Radius.circular(10)),
|
borderRadius: BorderRadius.all(Radius.circular(10)),
|
||||||
boxShadow: [
|
boxShadow: [
|
||||||
BoxShadow(
|
BoxShadow(
|
||||||
color: Colors.black.withOpacity(0.1),
|
color: Colors.black.withOpacity(0.1),
|
||||||
offset: const Offset(2, 2),
|
offset: Offset(2, 2),
|
||||||
blurRadius: 5)
|
blurRadius: 5)
|
||||||
]),
|
]),
|
||||||
child: child,
|
child: child,
|
||||||
@ -109,7 +102,7 @@ class _DetailState extends State<Detail> with TickerProviderStateMixin {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text(widget.assetName),
|
title: Text('${widget.assetName}'),
|
||||||
),
|
),
|
||||||
body: SingleChildScrollView(
|
body: SingleChildScrollView(
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -20,7 +20,7 @@ class App extends StatelessWidget {
|
|||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text(''),
|
title: Text(''),
|
||||||
),
|
),
|
||||||
body: SingleChildScrollView(
|
body: SingleChildScrollView(
|
||||||
child: Center(
|
child: Center(
|
||||||
|
@ -108,17 +108,14 @@ final files = [
|
|||||||
'assets/Tests/hd.json',
|
'assets/Tests/hd.json',
|
||||||
'assets/Tests/map.zip',
|
'assets/Tests/map.zip',
|
||||||
'assets/TwitterHeartButton.json',
|
'assets/TwitterHeartButton.json',
|
||||||
'assets/battery_optimizations.json',
|
'assets/_loading_indicator.json',
|
||||||
'assets/bluetoothscanning.json',
|
'assets/bluetoothscanning.json',
|
||||||
'assets/camera_change.json',
|
|
||||||
'assets/envelope.json',
|
|
||||||
'assets/example_with_images/data.json',
|
'assets/example_with_images/data.json',
|
||||||
'assets/lf20_w2Afea.json',
|
'assets/lf20_w2Afea.json',
|
||||||
'assets/lottiefiles/100_percent.json',
|
'assets/lottiefiles/100_percent.json',
|
||||||
'assets/lottiefiles/28861-connection-style-2.json',
|
|
||||||
'assets/lottiefiles/45668-arrow-with-light-passing-through.json',
|
|
||||||
'assets/lottiefiles/Plane.json',
|
'assets/lottiefiles/Plane.json',
|
||||||
'assets/lottiefiles/StreetByMorning.json',
|
'assets/lottiefiles/StreetByMorning.json',
|
||||||
|
'assets/lottiefiles/___.json',
|
||||||
'assets/lottiefiles/a_mountain.json',
|
'assets/lottiefiles/a_mountain.json',
|
||||||
'assets/lottiefiles/accept_arrows.json',
|
'assets/lottiefiles/accept_arrows.json',
|
||||||
'assets/lottiefiles/airbnb.json',
|
'assets/lottiefiles/airbnb.json',
|
||||||
@ -349,9 +346,7 @@ final files = [
|
|||||||
'assets/lottiefiles/yoga_carpet.json',
|
'assets/lottiefiles/yoga_carpet.json',
|
||||||
'assets/lottiefiles/youtube_icon_reveal.json',
|
'assets/lottiefiles/youtube_icon_reveal.json',
|
||||||
'assets/playing.json',
|
'assets/playing.json',
|
||||||
'assets/spinning_carrousel.zip',
|
'assets/weather/_hurricane.json',
|
||||||
'assets/sticker.json',
|
|
||||||
'assets/tent.json',
|
|
||||||
'assets/weather/fog.json',
|
'assets/weather/fog.json',
|
||||||
'assets/weather/hurricane.json',
|
'assets/weather/hurricane.json',
|
||||||
'assets/weather/thunder-storm.json',
|
'assets/weather/thunder-storm.json',
|
||||||
|
@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
runApp(const App());
|
runApp(App());
|
||||||
}
|
}
|
||||||
|
|
||||||
class App extends StatelessWidget {
|
class App extends StatelessWidget {
|
||||||
@ -13,7 +13,7 @@ class App extends StatelessWidget {
|
|||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text(''),
|
title: Text(''),
|
||||||
),
|
),
|
||||||
body: SingleChildScrollView(
|
body: SingleChildScrollView(
|
||||||
child: Center(
|
child: Center(
|
||||||
|
@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
runApp(const App());
|
runApp(App());
|
||||||
}
|
}
|
||||||
|
|
||||||
class App extends StatelessWidget {
|
class App extends StatelessWidget {
|
||||||
@ -13,12 +13,11 @@ class App extends StatelessWidget {
|
|||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text(''),
|
title: Text(''),
|
||||||
),
|
),
|
||||||
body: GridView(
|
body: GridView(
|
||||||
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
|
gridDelegate:
|
||||||
crossAxisCount: 4,
|
SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 4),
|
||||||
),
|
|
||||||
children: [
|
children: [
|
||||||
Lottie.asset(
|
Lottie.asset(
|
||||||
'assets/Tests/WeAccept.json',
|
'assets/Tests/WeAccept.json',
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
|
||||||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
|
||||||
#include "ephemeral/Flutter-Generated.xcconfig"
|
#include "ephemeral/Flutter-Generated.xcconfig"
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
|
|
||||||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
|
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
|
||||||
#include "ephemeral/Flutter-Generated.xcconfig"
|
#include "ephemeral/Flutter-Generated.xcconfig"
|
||||||
|
@ -9,32 +9,74 @@ project 'Runner', {
|
|||||||
'Release' => :release,
|
'Release' => :release,
|
||||||
}
|
}
|
||||||
|
|
||||||
def flutter_root
|
def parse_KV_file(file, separator='=')
|
||||||
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__)
|
file_abs_path = File.expand_path(file)
|
||||||
unless File.exist?(generated_xcode_build_settings_path)
|
if !File.exists? file_abs_path
|
||||||
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first"
|
return [];
|
||||||
end
|
end
|
||||||
|
pods_ary = []
|
||||||
File.foreach(generated_xcode_build_settings_path) do |line|
|
skip_line_start_symbols = ["#", "/"]
|
||||||
matches = line.match(/FLUTTER_ROOT\=(.*)/)
|
File.foreach(file_abs_path) { |line|
|
||||||
return matches[1].strip if matches
|
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
|
||||||
end
|
plugin = line.split(pattern=separator)
|
||||||
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\""
|
if plugin.length == 2
|
||||||
|
podname = plugin[0].strip()
|
||||||
|
path = plugin[1].strip()
|
||||||
|
podpath = File.expand_path("#{path}", file_abs_path)
|
||||||
|
pods_ary.push({:name => podname, :path => podpath});
|
||||||
|
else
|
||||||
|
puts "Invalid plugin specification: #{line}"
|
||||||
|
end
|
||||||
|
}
|
||||||
|
return pods_ary
|
||||||
end
|
end
|
||||||
|
|
||||||
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
|
def pubspec_supports_macos(file)
|
||||||
|
file_abs_path = File.expand_path(file)
|
||||||
flutter_macos_podfile_setup
|
if !File.exists? file_abs_path
|
||||||
|
return false;
|
||||||
|
end
|
||||||
|
File.foreach(file_abs_path) { |line|
|
||||||
|
return true if line =~ /^\s*macos:/
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
target 'Runner' do
|
target 'Runner' do
|
||||||
use_frameworks!
|
use_frameworks!
|
||||||
use_modular_headers!
|
use_modular_headers!
|
||||||
|
|
||||||
flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__))
|
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
|
||||||
|
# referring to absolute paths on developers' machines.
|
||||||
|
ephemeral_dir = File.join('Flutter', 'ephemeral')
|
||||||
|
symlink_dir = File.join(ephemeral_dir, '.symlinks')
|
||||||
|
symlink_plugins_dir = File.join(symlink_dir, 'plugins')
|
||||||
|
system("rm -rf #{symlink_dir}")
|
||||||
|
system("mkdir -p #{symlink_plugins_dir}")
|
||||||
|
|
||||||
|
# Flutter Pods
|
||||||
|
generated_xcconfig = parse_KV_file(File.join(ephemeral_dir, 'Flutter-Generated.xcconfig'))
|
||||||
|
if generated_xcconfig.empty?
|
||||||
|
puts "Flutter-Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first."
|
||||||
|
end
|
||||||
|
generated_xcconfig.map { |p|
|
||||||
|
if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
|
||||||
|
symlink = File.join(symlink_dir, 'flutter')
|
||||||
|
File.symlink(File.dirname(p[:path]), symlink)
|
||||||
|
pod 'FlutterMacOS', :path => File.join(symlink, File.basename(p[:path]))
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
# Plugin Pods
|
||||||
|
plugin_pods = parse_KV_file('../.flutter-plugins')
|
||||||
|
plugin_pods.map { |p|
|
||||||
|
symlink = File.join(symlink_plugins_dir, p[:name])
|
||||||
|
File.symlink(p[:path], symlink)
|
||||||
|
if pubspec_supports_macos(File.join(symlink, 'pubspec.yaml'))
|
||||||
|
pod p[:name], :path => File.join(symlink, 'macos')
|
||||||
|
end
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
post_install do |installer|
|
# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system.
|
||||||
installer.pods_project.targets.each do |target|
|
install! 'cocoapods', :disable_input_output_paths => true
|
||||||
flutter_additional_macos_build_settings(target)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
@ -1,22 +1,27 @@
|
|||||||
PODS:
|
PODS:
|
||||||
- FlutterMacOS (1.0.0)
|
- FlutterMacOS (1.0.0)
|
||||||
|
- path_provider (0.0.1)
|
||||||
- path_provider_macos (0.0.1):
|
- path_provider_macos (0.0.1):
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- FlutterMacOS (from `Flutter/ephemeral`)
|
- FlutterMacOS (from `Flutter/ephemeral/.symlinks/flutter/darwin-x64-profile`)
|
||||||
|
- path_provider (from `Flutter/ephemeral/.symlinks/plugins/path_provider/macos`)
|
||||||
- path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`)
|
- path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`)
|
||||||
|
|
||||||
EXTERNAL SOURCES:
|
EXTERNAL SOURCES:
|
||||||
FlutterMacOS:
|
FlutterMacOS:
|
||||||
:path: Flutter/ephemeral
|
:path: Flutter/ephemeral/.symlinks/flutter/darwin-x64-profile
|
||||||
|
path_provider:
|
||||||
|
:path: Flutter/ephemeral/.symlinks/plugins/path_provider/macos
|
||||||
path_provider_macos:
|
path_provider_macos:
|
||||||
:path: Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos
|
:path: Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
FlutterMacOS: 57701585bf7de1b3fc2bb61f6378d73bbdea8424
|
FlutterMacOS: 15bea8a44d2fa024068daa0140371c020b4b6ff9
|
||||||
|
path_provider: e0848572d1d38b9a7dd099e79cf83f5b7e2cde9f
|
||||||
path_provider_macos: a0a3fd666cb7cd0448e936fb4abad4052961002b
|
path_provider_macos: a0a3fd666cb7cd0448e936fb4abad4052961002b
|
||||||
|
|
||||||
PODFILE CHECKSUM: 6eac6b3292e5142cfc23bdeb71848a40ec51c14c
|
PODFILE CHECKSUM: d8ba9b3e9e93c62c74a660b46c6fcb09f03991a7
|
||||||
|
|
||||||
COCOAPODS: 1.10.1
|
COCOAPODS: 1.10.0
|
||||||
|
@ -26,6 +26,10 @@
|
|||||||
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
|
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
|
||||||
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
|
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
|
||||||
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
|
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
|
||||||
|
33D1A10422148B71006C7A3E /* FlutterMacOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */; };
|
||||||
|
33D1A10522148B93006C7A3E /* FlutterMacOS.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
|
D73912F022F37F9E000D13A0 /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D73912EF22F37F9E000D13A0 /* App.framework */; };
|
||||||
|
D73912F222F3801D000D13A0 /* App.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = D73912EF22F37F9E000D13A0 /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
F03CC91740A974D36C2A6384 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BC6FF5FCD90624533CC60DB /* Pods_Runner.framework */; };
|
F03CC91740A974D36C2A6384 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BC6FF5FCD90624533CC60DB /* Pods_Runner.framework */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
@ -46,6 +50,8 @@
|
|||||||
dstPath = "";
|
dstPath = "";
|
||||||
dstSubfolderSpec = 10;
|
dstSubfolderSpec = 10;
|
||||||
files = (
|
files = (
|
||||||
|
D73912F222F3801D000D13A0 /* App.framework in Bundle Framework */,
|
||||||
|
33D1A10522148B93006C7A3E /* FlutterMacOS.framework in Bundle Framework */,
|
||||||
);
|
);
|
||||||
name = "Bundle Framework";
|
name = "Bundle Framework";
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -67,12 +73,14 @@
|
|||||||
33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; };
|
33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; };
|
33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; };
|
||||||
33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; };
|
33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
33D1A10322148B71006C7A3E /* FlutterMacOS.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FlutterMacOS.framework; path = Flutter/ephemeral/FlutterMacOS.framework; sourceTree = SOURCE_ROOT; };
|
||||||
33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
|
33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
|
||||||
33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
|
33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
|
||||||
33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
|
33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
|
||||||
5B4C0E87024EC2686CA05E23 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
5B4C0E87024EC2686CA05E23 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
||||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
|
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
|
||||||
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
|
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
|
||||||
|
D73912EF22F37F9E000D13A0 /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/ephemeral/App.framework; sourceTree = SOURCE_ROOT; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@ -80,6 +88,8 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
D73912F022F37F9E000D13A0 /* App.framework in Frameworks */,
|
||||||
|
33D1A10422148B71006C7A3E /* FlutterMacOS.framework in Frameworks */,
|
||||||
F03CC91740A974D36C2A6384 /* Pods_Runner.framework in Frameworks */,
|
F03CC91740A974D36C2A6384 /* Pods_Runner.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -135,6 +145,8 @@
|
|||||||
33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
|
33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
|
||||||
33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
|
33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
|
||||||
33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
|
33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
|
||||||
|
D73912EF22F37F9E000D13A0 /* App.framework */,
|
||||||
|
33D1A10322148B71006C7A3E /* FlutterMacOS.framework */,
|
||||||
);
|
);
|
||||||
path = Flutter;
|
path = Flutter;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -269,7 +281,7 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
|
shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename\n";
|
||||||
};
|
};
|
||||||
33CC111E2044C6BF0003C045 /* ShellScript */ = {
|
33CC111E2044C6BF0003C045 /* ShellScript */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
@ -319,12 +331,9 @@
|
|||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
|
|
||||||
"${BUILT_PRODUCTS_DIR}/path_provider_macos/path_provider_macos.framework",
|
|
||||||
);
|
);
|
||||||
name = "[CP] Embed Pods Frameworks";
|
name = "[CP] Embed Pods Frameworks";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_macos.framework",
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
|
@ -7,77 +7,77 @@ packages:
|
|||||||
name: archive
|
name: archive
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.6"
|
version: "3.0.0-nullsafety.0"
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: async
|
name: async
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.8.1"
|
version: "2.5.0-nullsafety.3"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: boolean_selector
|
name: boolean_selector
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0-nullsafety.3"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: characters
|
name: characters
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0-nullsafety.5"
|
||||||
charcode:
|
charcode:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: charcode
|
name: charcode
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.1"
|
version: "1.2.0-nullsafety.3"
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0-nullsafety.3"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.15.0"
|
version: "1.15.0-nullsafety.5"
|
||||||
crypto:
|
crypto:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: crypto
|
name: crypto
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "3.0.0-nullsafety.0"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: fake_async
|
name: fake_async
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.0-nullsafety.3"
|
||||||
ffi:
|
ffi:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: ffi
|
name: ffi
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.2"
|
version: "0.1.3"
|
||||||
file:
|
file:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file
|
name: file
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.2"
|
version: "5.2.1"
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -89,14 +89,7 @@ packages:
|
|||||||
name: flutter_colorpicker
|
name: flutter_colorpicker
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.1"
|
version: "0.4.0-nullsafety.0"
|
||||||
flutter_lints:
|
|
||||||
dependency: "direct dev"
|
|
||||||
description:
|
|
||||||
name: flutter_lints
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.4"
|
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -108,119 +101,126 @@ packages:
|
|||||||
name: golden_toolkit
|
name: golden_toolkit
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.11.0"
|
version: "0.9.0-nullsafety.0"
|
||||||
http:
|
http:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: http
|
name: http
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.13.4"
|
version: "0.12.2"
|
||||||
http_parser:
|
http_parser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: http_parser
|
name: http_parser
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0"
|
version: "3.1.4"
|
||||||
lints:
|
intl:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: lints
|
name: intl
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.1"
|
version: "0.16.1"
|
||||||
logging:
|
logging:
|
||||||
dependency: "direct main"
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: logging
|
name: logging
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.2"
|
version: "1.0.0-nullsafety.0"
|
||||||
lottie:
|
lottie:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: ".."
|
path: ".."
|
||||||
relative: true
|
relative: true
|
||||||
source: path
|
source: path
|
||||||
version: "1.2.1"
|
version: "0.8.0-nullsafety.0"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: matcher
|
name: matcher
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.10"
|
version: "0.12.10-nullsafety.3"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.7.0"
|
version: "1.3.0-nullsafety.6"
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path
|
name: path
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.0"
|
version: "1.8.0-nullsafety.3"
|
||||||
path_provider:
|
path_provider:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: path_provider
|
name: path_provider
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.6"
|
version: "1.6.27"
|
||||||
path_provider_linux:
|
path_provider_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_linux
|
name: path_provider_linux
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "0.0.1+2"
|
||||||
path_provider_macos:
|
path_provider_macos:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_macos
|
name: path_provider_macos
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.2"
|
version: "0.0.4+8"
|
||||||
path_provider_platform_interface:
|
path_provider_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_platform_interface
|
name: path_provider_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.1"
|
version: "1.0.4"
|
||||||
path_provider_windows:
|
path_provider_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_windows
|
name: path_provider_windows
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.4"
|
version: "0.0.4+3"
|
||||||
|
pedantic:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pedantic
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "1.9.2"
|
||||||
platform:
|
platform:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: platform
|
name: platform
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.2"
|
version: "2.2.1"
|
||||||
plugin_platform_interface:
|
plugin_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: plugin_platform_interface
|
name: plugin_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.2"
|
version: "1.0.3"
|
||||||
process:
|
process:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: process
|
name: process
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.2.4"
|
version: "3.0.13"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -232,70 +232,70 @@ packages:
|
|||||||
name: source_span
|
name: source_span
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.1"
|
version: "1.8.0-nullsafety.4"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stack_trace
|
name: stack_trace
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.10.0"
|
version: "1.10.0-nullsafety.6"
|
||||||
stream_channel:
|
stream_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stream_channel
|
name: stream_channel
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0-nullsafety.3"
|
||||||
string_scanner:
|
string_scanner:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: string_scanner
|
name: string_scanner
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0-nullsafety.3"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: term_glyph
|
name: term_glyph
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.0-nullsafety.3"
|
||||||
test_api:
|
test_api:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.2"
|
version: "0.2.19-nullsafety.6"
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: typed_data
|
name: typed_data
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.0-nullsafety.5"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vector_math
|
name: vector_math
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0-nullsafety.5"
|
||||||
win32:
|
win32:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: win32
|
name: win32
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.10"
|
version: "1.7.4"
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: xdg_directories
|
name: xdg_directories
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.0"
|
version: "0.1.2"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.14.0 <3.0.0"
|
dart: ">=2.12.0-29.10.beta <3.0.0"
|
||||||
flutter: ">=2.5.0"
|
flutter: ">=1.24.0-10.2.pre <2.0.0"
|
||||||
|
@ -8,18 +8,16 @@ environment:
|
|||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
flutter_colorpicker:
|
flutter_colorpicker: ^0.4.0-nullsafety.0
|
||||||
http:
|
http:
|
||||||
logging:
|
|
||||||
lottie:
|
lottie:
|
||||||
path: ../
|
path: ../
|
||||||
path_provider:
|
path_provider:
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_lints:
|
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
golden_toolkit:
|
golden_toolkit: ^0.9.0-nullsafety.0
|
||||||
|
|
||||||
# For information on the generic Dart part of this file, see the
|
# For information on the generic Dart part of this file, see the
|
||||||
# following page: https://dart.dev/tools/pub/pubspec
|
# following page: https://dart.dev/tools/pub/pubspec
|
||||||
@ -62,4 +60,4 @@ flutter:
|
|||||||
- asset: assets/fonts/Roboto.ttf
|
- asset: assets/fonts/Roboto.ttf
|
||||||
- family: Noto Emoji
|
- family: Noto Emoji
|
||||||
fonts:
|
fonts:
|
||||||
- asset: assets/fonts/Noto-Emoji.ttf
|
- asset: assets/fonts/NotoEmoji-Regular.ttf
|
@ -7,19 +7,21 @@ import 'package:lottie/lottie.dart';
|
|||||||
import 'utils.dart';
|
import 'utils.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
void testGolden(String description, ValueDelegate delegate,
|
late LottieComposition composition;
|
||||||
{double? progress, String? filePath}) {
|
|
||||||
filePath ??= 'Tests/Shapes.json';
|
|
||||||
|
|
||||||
|
setUpAll(() async {
|
||||||
|
composition = await LottieComposition.fromBytes(
|
||||||
|
File('assets/Tests/Shapes.json').readAsBytesSync());
|
||||||
|
});
|
||||||
|
|
||||||
|
void testGolden(String description, ValueDelegate delegate,
|
||||||
|
{double? progress}) async {
|
||||||
var screenshotName = description
|
var screenshotName = description
|
||||||
.toLowerCase()
|
.toLowerCase()
|
||||||
.replaceAll(RegExp('[^a-z0-9 ]'), '')
|
.replaceAll(RegExp('[^a-z0-9 ]'), '')
|
||||||
.replaceAll(' ', '_');
|
.replaceAll(' ', '_');
|
||||||
|
|
||||||
testWidgets(description, (tester) async {
|
testWidgets(description, (tester) async {
|
||||||
var composition = await LottieComposition.fromBytes(
|
|
||||||
File('example/assets/$filePath').readAsBytesSync());
|
|
||||||
|
|
||||||
var animation =
|
var animation =
|
||||||
AnimationController(vsync: tester, duration: composition.duration);
|
AnimationController(vsync: tester, duration: composition.duration);
|
||||||
if (progress != null) {
|
if (progress != null) {
|
||||||
@ -43,11 +45,13 @@ void main() {
|
|||||||
Lottie(
|
Lottie(
|
||||||
composition: composition,
|
composition: composition,
|
||||||
controller: animation,
|
controller: animation,
|
||||||
delegates: const LottieDelegates(values: []),
|
delegates: LottieDelegates(values: []),
|
||||||
addRepaintBoundary: false,
|
addRepaintBoundary: false,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
|
await expectLater(find.byType(Lottie),
|
||||||
|
matchesGoldenFile('goldens/dynamic_without_delegate.png'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -90,19 +94,19 @@ void main() {
|
|||||||
testGolden(
|
testGolden(
|
||||||
'Transform anchor point',
|
'Transform anchor point',
|
||||||
ValueDelegate.transformAnchorPoint(['Shape Layer 1', 'Rectangle'],
|
ValueDelegate.transformAnchorPoint(['Shape Layer 1', 'Rectangle'],
|
||||||
value: const Offset(20, 20)),
|
value: Offset(20, 20)),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden(
|
testGolden(
|
||||||
'Transform position',
|
'Transform position',
|
||||||
ValueDelegate.transformPosition(['Shape Layer 1', 'Rectangle'],
|
ValueDelegate.transformPosition(['Shape Layer 1', 'Rectangle'],
|
||||||
value: const Offset(20, 20)),
|
value: Offset(20, 20)),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden(
|
testGolden(
|
||||||
'Transform position (relative)',
|
'Transform position (relative)',
|
||||||
ValueDelegate.transformPosition(['Shape Layer 1', 'Rectangle'],
|
ValueDelegate.transformPosition(['Shape Layer 1', 'Rectangle'],
|
||||||
relative: const Offset(20, 20)),
|
relative: Offset(20, 20)),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden(
|
testGolden(
|
||||||
@ -118,7 +122,7 @@ void main() {
|
|||||||
testGolden(
|
testGolden(
|
||||||
'Transform scale',
|
'Transform scale',
|
||||||
ValueDelegate.transformScale(['Shape Layer 1', 'Rectangle'],
|
ValueDelegate.transformScale(['Shape Layer 1', 'Rectangle'],
|
||||||
value: const Offset(0.5, 0.5)),
|
value: Offset(0.5, 0.5)),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden(
|
testGolden(
|
||||||
@ -131,26 +135,26 @@ void main() {
|
|||||||
testGolden(
|
testGolden(
|
||||||
'Rectangle position',
|
'Rectangle position',
|
||||||
ValueDelegate.position(['Shape Layer 1', 'Rectangle', 'Rectangle Path 1'],
|
ValueDelegate.position(['Shape Layer 1', 'Rectangle', 'Rectangle Path 1'],
|
||||||
relative: const Offset(20, 20)),
|
relative: Offset(20, 20)),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden(
|
testGolden(
|
||||||
'Rectangle size',
|
'Rectangle size',
|
||||||
ValueDelegate.rectangleSize(
|
ValueDelegate.rectangleSize(
|
||||||
['Shape Layer 1', 'Rectangle', 'Rectangle Path 1'],
|
['Shape Layer 1', 'Rectangle', 'Rectangle Path 1'],
|
||||||
relative: const Offset(30, 40)),
|
relative: Offset(30, 40)),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden(
|
testGolden(
|
||||||
'Ellipse position',
|
'Ellipse position',
|
||||||
ValueDelegate.position(['Shape Layer 1', 'Ellipse', 'Ellipse Path 1'],
|
ValueDelegate.position(['Shape Layer 1', 'Ellipse', 'Ellipse Path 1'],
|
||||||
relative: const Offset(20, 20)),
|
relative: Offset(20, 20)),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden(
|
testGolden(
|
||||||
'Ellipse size',
|
'Ellipse size',
|
||||||
ValueDelegate.ellipseSize(['Shape Layer 1', 'Ellipse', 'Ellipse Path 1'],
|
ValueDelegate.ellipseSize(['Shape Layer 1', 'Ellipse', 'Ellipse Path 1'],
|
||||||
relative: const Offset(40, 60)),
|
relative: Offset(40, 60)),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden(
|
testGolden(
|
||||||
@ -168,7 +172,7 @@ void main() {
|
|||||||
testGolden(
|
testGolden(
|
||||||
'Star position',
|
'Star position',
|
||||||
ValueDelegate.position(['Shape Layer 1', 'Star', 'Polystar Path 1'],
|
ValueDelegate.position(['Shape Layer 1', 'Star', 'Polystar Path 1'],
|
||||||
relative: const Offset(20, 20)),
|
relative: Offset(20, 20)),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden(
|
testGolden(
|
||||||
@ -214,7 +218,7 @@ void main() {
|
|||||||
testGolden(
|
testGolden(
|
||||||
'Polygon position',
|
'Polygon position',
|
||||||
ValueDelegate.position(['Shape Layer 1', 'Star', 'Polystar Path 1'],
|
ValueDelegate.position(['Shape Layer 1', 'Star', 'Polystar Path 1'],
|
||||||
relative: const Offset(20, 20)),
|
relative: Offset(20, 20)),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden(
|
testGolden(
|
||||||
@ -235,7 +239,7 @@ void main() {
|
|||||||
'Repeater transform position',
|
'Repeater transform position',
|
||||||
ValueDelegate.transformPosition(
|
ValueDelegate.transformPosition(
|
||||||
['Shape Layer 1', 'Repeater Shape', 'Repeater 1'],
|
['Shape Layer 1', 'Repeater Shape', 'Repeater 1'],
|
||||||
relative: const Offset(100, 100)),
|
relative: Offset(100, 100)),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden(
|
testGolden(
|
||||||
@ -263,7 +267,7 @@ void main() {
|
|||||||
'Repeater transform scale',
|
'Repeater transform scale',
|
||||||
ValueDelegate.transformScale(
|
ValueDelegate.transformScale(
|
||||||
['Shape Layer 1', 'Repeater Shape', 'Repeater 1'],
|
['Shape Layer 1', 'Repeater Shape', 'Repeater 1'],
|
||||||
value: const Offset(2, 2)),
|
value: Offset(2, 2)),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden('Time remapping', ValueDelegate.timeRemap(['Circle 1'], value: 1),
|
testGolden('Time remapping', ValueDelegate.timeRemap(['Circle 1'], value: 1),
|
||||||
@ -272,7 +276,7 @@ void main() {
|
|||||||
testGolden(
|
testGolden(
|
||||||
'Color Filter',
|
'Color Filter',
|
||||||
ValueDelegate.colorFilter(['**'],
|
ValueDelegate.colorFilter(['**'],
|
||||||
value: const ColorFilter.mode(Colors.green, BlendMode.srcATop)),
|
value: ColorFilter.mode(Colors.green, BlendMode.srcATop)),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden(
|
testGolden(
|
||||||
@ -280,35 +284,6 @@ void main() {
|
|||||||
ValueDelegate.colorFilter(['**'], value: null),
|
ValueDelegate.colorFilter(['**'], value: null),
|
||||||
);
|
);
|
||||||
|
|
||||||
testGolden(
|
|
||||||
'Matte property',
|
|
||||||
ValueDelegate.rectangleSize(
|
|
||||||
['Shape Layer 1', 'Rectangle 1', 'Rectangle Path 1'],
|
|
||||||
value: const Offset(50, 50)),
|
|
||||||
filePath: 'Tests/TrackMattes.json',
|
|
||||||
);
|
|
||||||
|
|
||||||
testGolden(
|
|
||||||
'Blur',
|
|
||||||
ValueDelegate.blurRadius(
|
|
||||||
['**'],
|
|
||||||
value: 22,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
testGolden(
|
|
||||||
'Drop shadow',
|
|
||||||
ValueDelegate.dropShadow(
|
|
||||||
['Shape Layer 1', '**'],
|
|
||||||
value: const DropShadow(
|
|
||||||
color: Colors.green,
|
|
||||||
direction: 150,
|
|
||||||
distance: 20,
|
|
||||||
radius: 10,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
for (var progress in [0.0, 0.5, 1.0]) {
|
for (var progress in [0.0, 0.5, 1.0]) {
|
||||||
testGolden(
|
testGolden(
|
||||||
'Opacity interpolation ($progress)',
|
'Opacity interpolation ($progress)',
|
||||||
@ -320,7 +295,7 @@ void main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
testWidgets('warningShimmer', (tester) async {
|
testWidgets('warningShimmer', (tester) async {
|
||||||
var size = const Size(500, 400);
|
var size = Size(500, 400);
|
||||||
tester.binding.window.physicalSizeTestValue = size;
|
tester.binding.window.physicalSizeTestValue = size;
|
||||||
tester.binding.window.devicePixelRatioTestValue = 1.0;
|
tester.binding.window.devicePixelRatioTestValue = 1.0;
|
||||||
|
|
@ -1,4 +1,5 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
import 'dart:ui';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:lottie/lottie.dart';
|
import 'package:lottie/lottie.dart';
|
||||||
@ -6,7 +7,7 @@ import 'package:lottie/lottie.dart';
|
|||||||
void main() {
|
void main() {
|
||||||
testWidgets('Dynamic test', (tester) async {
|
testWidgets('Dynamic test', (tester) async {
|
||||||
var composition = await LottieComposition.fromBytes(
|
var composition = await LottieComposition.fromBytes(
|
||||||
File('example/assets/Tests/DynamicText.json').readAsBytesSync());
|
File('assets/Tests/DynamicText.json').readAsBytesSync());
|
||||||
|
|
||||||
await tester.pumpWidget(
|
await tester.pumpWidget(
|
||||||
MaterialApp(
|
MaterialApp(
|
||||||
@ -15,9 +16,9 @@ void main() {
|
|||||||
animate: false,
|
animate: false,
|
||||||
delegates: LottieDelegates(
|
delegates: LottieDelegates(
|
||||||
text: (input) => '🔥c️🔥👮🏿🔥',
|
text: (input) => '🔥c️🔥👮🏿🔥',
|
||||||
textStyle: (font) => const TextStyle(
|
textStyle: (font) => TextStyle(
|
||||||
fontFamily: 'Roboto', fontFamilyFallback: ['Noto Emoji']),
|
fontFamily: 'Roboto', fontFamilyFallback: ['Noto Emoji']),
|
||||||
values: const []),
|
values: []),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
@ -8,12 +8,12 @@ import 'utils.dart';
|
|||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
testWidgets('Animations with stroke', (tester) async {
|
testWidgets('Animations with stroke', (tester) async {
|
||||||
var size = const Size(500, 400);
|
var size = Size(500, 400);
|
||||||
tester.binding.window.physicalSizeTestValue = size;
|
tester.binding.window.physicalSizeTestValue = size;
|
||||||
tester.binding.window.devicePixelRatioTestValue = 1.0;
|
tester.binding.window.devicePixelRatioTestValue = 1.0;
|
||||||
|
|
||||||
var composition = await LottieComposition.fromBytes(
|
var composition = await LottieComposition.fromBytes(
|
||||||
File('example/assets/17297-fireworks.json').readAsBytesSync());
|
File('assets/17297-fireworks.json').readAsBytesSync());
|
||||||
|
|
||||||
await tester.pumpWidget(FilmStrip(composition, size: size));
|
await tester.pumpWidget(FilmStrip(composition, size: size));
|
||||||
|
|
7
example/test/flutter_test_config.dart
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
import 'package:golden_toolkit/golden_toolkit.dart';
|
||||||
|
|
||||||
|
Future<void> testExecutable(FutureOr<void> Function() testMain) async {
|
||||||
|
await loadAppFonts();
|
||||||
|
return testMain();
|
||||||
|
}
|
@ -7,13 +7,13 @@ import 'package:path/path.dart' as p;
|
|||||||
import 'utils.dart';
|
import 'utils.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
var root = 'example/assets';
|
var root = 'assets';
|
||||||
for (var asset in Directory(root)
|
for (var asset in Directory(root)
|
||||||
.listSync(recursive: true)
|
.listSync(recursive: true)
|
||||||
.whereType<File>()
|
.whereType<File>()
|
||||||
.where((f) => const ['.json', '.zip'].contains(p.extension(f.path)))) {
|
.where((f) => const ['.json', '.zip'].contains(p.extension(f.path)))) {
|
||||||
testWidgets('Goldens ${asset.path}', (tester) async {
|
testWidgets('Goldens ${asset.path}', (tester) async {
|
||||||
var size = const Size(500, 400);
|
var size = Size(500, 400);
|
||||||
tester.binding.window.physicalSizeTestValue = size;
|
tester.binding.window.physicalSizeTestValue = size;
|
||||||
tester.binding.window.devicePixelRatioTestValue = 1.0;
|
tester.binding.window.devicePixelRatioTestValue = 1.0;
|
||||||
var composition =
|
var composition =
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
BIN
example/test/goldens/all/Logo/logosmall.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
example/test/goldens/all/Mobilo/a.png
Normal file
After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 7.1 KiB |
BIN
example/test/goldens/all/Mobilo/b.png
Normal file
After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
BIN
example/test/goldens/all/Mobilo/f.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
example/test/goldens/all/Mobilo/g.png
Normal file
After Width: | Height: | Size: 9.5 KiB |
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
BIN
example/test/goldens/all/Mobilo/k.png
Normal file
After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |