From 140e6af1918dfda49fd26be04847401f88eb112b Mon Sep 17 00:00:00 2001 From: Jaime Blasco Date: Tue, 26 May 2020 16:59:49 +0200 Subject: [PATCH 01/13] Add new url --- docs/_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_config.yml b/docs/_config.yml index e345383..f7c2c36 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -24,7 +24,7 @@ tagline: A pseudo-3D engine for Flutter description: >- # this means to ignore newlines until "baseurl:" A Round, flat, designer-friendly pseudo-3D engine for Flutter baseurl: "" # the subpath of your site, e.g. /blog -url: "https://jamesblasco.github.io/zflutter/" # the base hostname & protocol for your site, e.g. http://example.com +url: "https://z.flutter.gallery" # the base hostname & protocol for your site, e.g. http://example.com twitter_username: jamesblasco github_username: jamesblasco From 2bed1399f2c643211be786a00188623e3f37befd Mon Sep 17 00:00:00 2001 From: Jaime Blasco Date: Wed, 27 May 2020 11:03:21 +0200 Subject: [PATCH 02/13] Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 0315923..3eafe3f 100644 --- a/README.md +++ b/README.md @@ -3,16 +3,24 @@ # Zflutter + + **A pseudo-3D engine for Flutter.** +
This is an alpha version and it might change before release. To read the docs and see examples visit [z.flutter.gallery](https://z.flutter.gallery/) + + + +



+ # Zflutter is based on Zdog First we would like to give the mertits to [Zdog](https://zzz.dog), the pseudo-3D JavaScript engine that has been the base inspiration for this project. From 509db7c87801c92a95ae84e3fcd3cb3c8d87fa4d Mon Sep 17 00:00:00 2001 From: Jaime Blasco Date: Wed, 27 May 2020 11:04:41 +0200 Subject: [PATCH 03/13] Create CNAME --- docs/CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/CNAME diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 0000000..68b1f1a --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +z.flutter.gallery \ No newline at end of file From e6633821e9dd48429b8fe8d09aed5c7956f800e9 Mon Sep 17 00:00:00 2001 From: Jaime Blasco Date: Tue, 2 Jun 2020 07:17:41 +0200 Subject: [PATCH 04/13] Delete CNAME --- docs/CNAME | 1 - 1 file changed, 1 deletion(-) delete mode 100644 docs/CNAME diff --git a/docs/CNAME b/docs/CNAME deleted file mode 100644 index 68b1f1a..0000000 --- a/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -z.flutter.gallery \ No newline at end of file From 3c523b6520caa2bd526325919a839cb5fd33ad11 Mon Sep 17 00:00:00 2001 From: Jaime Blasco Date: Tue, 2 Jun 2020 07:18:01 +0200 Subject: [PATCH 05/13] Create CNAME --- docs/CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/CNAME diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 0000000..68b1f1a --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +z.flutter.gallery \ No newline at end of file From 93192bdd0bffdc0ab95d5f261524605711edb0fc Mon Sep 17 00:00:00 2001 From: Jaime Blasco Date: Tue, 2 Jun 2020 10:31:14 +0200 Subject: [PATCH 06/13] Update dice.dart --- zflutter/example/lib/examples/dice/dice.dart | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/zflutter/example/lib/examples/dice/dice.dart b/zflutter/example/lib/examples/dice/dice.dart index e0e270a..d963607 100644 --- a/zflutter/example/lib/examples/dice/dice.dart +++ b/zflutter/example/lib/examples/dice/dice.dart @@ -6,10 +6,10 @@ import 'package:flutter/physics.dart'; import 'package:zflutter/zflutter.dart'; class Dices extends StatefulWidget { - _PhysicsAnimation createState() => _PhysicsAnimation(); + _PhysicsAnimation createState() => _DicesState(); } -class _PhysicsAnimation extends State +class _DicesState extends State with SingleTickerProviderStateMixin { AnimationController animationController; @@ -304,7 +304,5 @@ class Dice extends StatelessWidget { ), ], ); -// include the dots repeating as many shapes/groups as possible -// ! when copying an element be sure to reset the rotation/translation of the copied shape } } From e3c0fcfec6142c8655264a3886ced58d2cee5556 Mon Sep 17 00:00:00 2001 From: Jaime Blasco Date: Sat, 15 Aug 2020 12:50:04 +0200 Subject: [PATCH 07/13] Update Gemfile.lock --- docs/Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index 9b6d231..ebf5799 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -28,7 +28,7 @@ GEM i18n (>= 0.9.5, < 2) jekyll-sass-converter (~> 2.0) jekyll-watch (~> 2.0) - kramdown (~> 2.1) + kramdown (~> 2.3) kramdown-parser-gfm (~> 1.0) liquid (~> 4.0) mercenary (~> 0.3.3) @@ -47,10 +47,10 @@ GEM jekyll (>= 3.8.5, < 4.1.0) jekyll-seo-tag (~> 2.0) rake (>= 12.3.1, < 13.1.0) - kramdown (2.2.1) + kramdown (2.3.0) rexml kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) + kramdown (~> 2.3) liquid (4.0.3) listen (3.2.1) rb-fsevent (~> 0.10, >= 0.10.3) From 35854bbef9fdbbcc4c72e8091219b5bf368e5772 Mon Sep 17 00:00:00 2001 From: guoshuyu <359369982@qq.com> Date: Tue, 2 Aug 2022 11:37:58 +0800 Subject: [PATCH 08/13] init project support flutter 3 --- .../ios/Flutter/AppFrameworkInfo.plist | 2 +- .../ios/Runner.xcodeproj/project.pbxproj | 10 +- .../contents.xcworkspacedata | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- zflutter/example/ios/Runner/Info.plist | 2 + .../lib/examples/device/cupertino_sheet.dart | 12 +- .../examples/device/modal_bottom_sheet.dart | 11 +- zflutter/example/lib/examples/dice/dice.dart | 3 +- .../example/lib/examples/getting_started.dart | 2 - zflutter/example/lib/examples/on_the_go.dart | 2 - zflutter/example/lib/main.dart | 2 - zflutter/example/pubspec.lock | 148 +++++++----------- zflutter/example/pubspec.yaml | 2 +- zflutter/lib/src/core/path_command.dart | 1 - zflutter/lib/src/core/render/render_box.dart | 3 + .../lib/src/core/render/render_shape.dart | 4 - zflutter/lib/src/core/renderer.dart | 1 - .../lib/src/core/widgets/box_adapter.dart | 1 - zflutter/lib/src/core/widgets/positioned.dart | 2 - zflutter/lib/src/widgets/figures/box.dart | 3 - .../lib/src/widgets/figures/cylinder.dart | 3 - .../lib/src/widgets/figures/hemisphere.dart | 3 - zflutter/pubspec.lock | 136 +++++++--------- 23 files changed, 141 insertions(+), 216 deletions(-) diff --git a/zflutter/example/ios/Flutter/AppFrameworkInfo.plist b/zflutter/example/ios/Flutter/AppFrameworkInfo.plist index 6b4c0f7..f2872cf 100644 --- a/zflutter/example/ios/Flutter/AppFrameworkInfo.plist +++ b/zflutter/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 8.0 + 9.0 diff --git a/zflutter/example/ios/Runner.xcodeproj/project.pbxproj b/zflutter/example/ios/Runner.xcodeproj/project.pbxproj index d59cc08..844a8ab 100644 --- a/zflutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/zflutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ @@ -135,7 +135,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -280,7 +280,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -362,7 +362,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -411,7 +411,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/zflutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/zflutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 1d526a1..919434a 100644 --- a/zflutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/zflutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/zflutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/zflutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140c..3db53b6 100644 --- a/zflutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/zflutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ UIViewControllerBasedStatusBarAppearance + CADisableMinimumFrameDurationOnPhone + diff --git a/zflutter/example/lib/examples/device/cupertino_sheet.dart b/zflutter/example/lib/examples/device/cupertino_sheet.dart index 01c7239..dd69990 100644 --- a/zflutter/example/lib/examples/device/cupertino_sheet.dart +++ b/zflutter/example/lib/examples/device/cupertino_sheet.dart @@ -1,14 +1,12 @@ import 'dart:ui'; import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class PhotoShareBottomSheet extends StatelessWidget { - final ScrollController scrollController; - const PhotoShareBottomSheet({Key key, this.scrollController}) + const PhotoShareBottomSheet({Key key}) : super(key: key); @override @@ -25,7 +23,7 @@ class PhotoShareBottomSheet extends StatelessWidget { appBar: appBar(context), body: CustomScrollView( physics: ClampingScrollPhysics(), - controller: scrollController, + //controller: scrollController, slivers: [ SliverSafeArea( bottom: false, @@ -516,7 +514,7 @@ class _SliverGroupElement extends RenderObjectElement { } @override - void insertChildRenderObject(RenderObject child, int slot) { + void insertRenderObjectChild(RenderObject child, int slot) { final _RenderSliverGroup renderObject = this.renderObject; if (slot == 0) renderObject.decoration = child; if (slot == 1) renderObject.foregroundDecoration = child; @@ -525,12 +523,12 @@ class _SliverGroupElement extends RenderObjectElement { } @override - void moveChildRenderObject(RenderObject child, slot) { + void moveRenderObjectChild(RenderObject child, slot, newSlot) { assert(false); } @override - void removeChildRenderObject(RenderObject child) { + void removeRenderObjectChild(RenderObject child, slot) { final _RenderSliverGroup renderObject = this.renderObject; if (renderObject.decoration == child) renderObject.decoration = null; if (renderObject.foregroundDecoration == child) diff --git a/zflutter/example/lib/examples/device/modal_bottom_sheet.dart b/zflutter/example/lib/examples/device/modal_bottom_sheet.dart index ee31e35..56cc408 100644 --- a/zflutter/example/lib/examples/device/modal_bottom_sheet.dart +++ b/zflutter/example/lib/examples/device/modal_bottom_sheet.dart @@ -10,6 +10,9 @@ class ModalBottomSheetExample extends StatefulWidget { } class _ModalBottomSheetExampleState extends State { + + final ScrollController scrollController = new ScrollController(); + @override void initState() { showModal(); @@ -24,8 +27,8 @@ class _ModalBottomSheetExampleState extends State { expand: true, context: context, backgroundColor: Colors.transparent, - builder: (context, scrollController) => Close( - child: PhotoShareBottomSheet(scrollController: scrollController), + builder: (context) => Close( + child: PhotoShareBottomSheet(), ), ); }); @@ -78,8 +81,8 @@ class _ModalBottomSheetExampleState extends State { expand: true, context: context, backgroundColor: Colors.transparent, - builder: (context, scrollController) => - PhotoShareBottomSheet(scrollController: scrollController), + builder: (context) => + PhotoShareBottomSheet(), ); }, ), diff --git a/zflutter/example/lib/examples/dice/dice.dart b/zflutter/example/lib/examples/dice/dice.dart index d963607..b9bd134 100644 --- a/zflutter/example/lib/examples/dice/dice.dart +++ b/zflutter/example/lib/examples/dice/dice.dart @@ -1,12 +1,11 @@ import 'dart:math'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/physics.dart'; import 'package:zflutter/zflutter.dart'; class Dices extends StatefulWidget { - _PhysicsAnimation createState() => _DicesState(); + _DicesState createState() => _DicesState(); } class _DicesState extends State diff --git a/zflutter/example/lib/examples/getting_started.dart b/zflutter/example/lib/examples/getting_started.dart index 6113a13..600417e 100644 --- a/zflutter/example/lib/examples/getting_started.dart +++ b/zflutter/example/lib/examples/getting_started.dart @@ -1,5 +1,3 @@ -import 'dart:math'; - import 'package:flutter/material.dart'; import 'package:z_flutter_example/spin.dart'; import 'package:zflutter/zflutter.dart'; diff --git a/zflutter/example/lib/examples/on_the_go.dart b/zflutter/example/lib/examples/on_the_go.dart index 4653b35..d9eef81 100644 --- a/zflutter/example/lib/examples/on_the_go.dart +++ b/zflutter/example/lib/examples/on_the_go.dart @@ -1,5 +1,3 @@ -import 'dart:ui'; - import 'dart:math' as math; import 'package:flutter/widgets.dart'; diff --git a/zflutter/example/lib/main.dart b/zflutter/example/lib/main.dart index 259f83e..115c395 100644 --- a/zflutter/example/lib/main.dart +++ b/zflutter/example/lib/main.dart @@ -1,6 +1,4 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:zflutter/zflutter.dart'; import 'examples/examples.dart'; import 'examples/getting_started.dart'; diff --git a/zflutter/example/pubspec.lock b/zflutter/example/pubspec.lock index d8fce85..31098db 100644 --- a/zflutter/example/pubspec.lock +++ b/zflutter/example/pubspec.lock @@ -1,69 +1,62 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: - archive: - dependency: transitive - description: - name: archive - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.13" - args: - dependency: transitive - description: - name: args - url: "https://pub.dartlang.org" - source: hosted - version: "1.6.0" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.4.1" + version: "2.8.2" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.0" - charcode: + version: "2.1.0" + characters: dependency: transitive description: - name: charcode - url: "https://pub.dartlang.org" + name: characters + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.3" - collection: + version: "1.2.0" + charcode: dependency: transitive description: - name: collection - url: "https://pub.dartlang.org" + name: charcode + url: "https://pub.flutter-io.cn" source: hosted - version: "1.14.12" - convert: + version: "1.3.1" + clock: dependency: transitive description: - name: convert - url: "https://pub.dartlang.org" + name: clock + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.1" - crypto: + version: "1.1.0" + collection: dependency: transitive description: - name: crypto - url: "https://pub.dartlang.org" + name: collection + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.4" + version: "1.16.0" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted version: "0.1.3" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.3.0" flutter: dependency: "direct main" description: flutter @@ -74,55 +67,48 @@ packages: description: flutter source: sdk version: "0.0.0" - image: + matcher: dependency: transitive description: - name: image - url: "https://pub.dartlang.org" + name: matcher + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.12" - matcher: + version: "0.12.11" + material_color_utilities: dependency: transitive description: - name: matcher - url: "https://pub.dartlang.org" + name: material_color_utilities + url: "https://pub.flutter-io.cn" source: hosted - version: "0.12.6" + version: "0.1.4" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.8" + version: "1.7.0" modal_bottom_sheet: dependency: "direct main" description: name: modal_bottom_sheet - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.1.5" + version: "2.1.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.6.4" - petitparser: - dependency: transitive - description: - name: petitparser - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.0" + version: "1.8.1" quiver: dependency: transitive description: name: quiver - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.3" + version: "2.1.5" sky_engine: dependency: transitive description: flutter @@ -132,65 +118,51 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.7.0" + version: "1.8.2" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.9.3" + version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.5" + version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.0" + version: "1.2.0" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.15" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.6" + version: "0.4.9" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.8" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "3.6.1" + version: "2.1.2" zflutter: dependency: "direct main" description: @@ -199,5 +171,5 @@ packages: source: path version: "0.0.1+2" sdks: - dart: ">=2.7.0 <3.0.0" - flutter: ">=1.12.0 <2.0.0" + dart: ">=2.17.0 <3.0.0" + flutter: ">=3.0.0" diff --git a/zflutter/example/pubspec.yaml b/zflutter/example/pubspec.yaml index 1537b2d..2f1ba8a 100644 --- a/zflutter/example/pubspec.yaml +++ b/zflutter/example/pubspec.yaml @@ -30,7 +30,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^0.1.3 - modal_bottom_sheet: ^0.1.5 + modal_bottom_sheet: ^2.1.0 dev_dependencies: flutter_test: diff --git a/zflutter/lib/src/core/path_command.dart b/zflutter/lib/src/core/path_command.dart index 5b8bfc6..2e0f146 100644 --- a/zflutter/lib/src/core/path_command.dart +++ b/zflutter/lib/src/core/path_command.dart @@ -1,5 +1,4 @@ import 'package:flutter/cupertino.dart'; -import 'package:zflutter/src/core/renderer.dart'; import 'core.dart'; diff --git a/zflutter/lib/src/core/render/render_box.dart b/zflutter/lib/src/core/render/render_box.dart index be3c9d4..5c96ade 100644 --- a/zflutter/lib/src/core/render/render_box.dart +++ b/zflutter/lib/src/core/render/render_box.dart @@ -10,6 +10,9 @@ class RenderZBox extends RenderBox { void performSort() { sortValue = this.origin.z; } + + @override + Size computeDryLayout(BoxConstraints constraints) => constraints.biggest; } enum SortMode { inherit, stack, update } diff --git a/zflutter/lib/src/core/render/render_shape.dart b/zflutter/lib/src/core/render/render_shape.dart index 0f06d58..eed5d27 100644 --- a/zflutter/lib/src/core/render/render_shape.dart +++ b/zflutter/lib/src/core/render/render_shape.dart @@ -1,11 +1,7 @@ -import 'dart:ui'; - import 'package:flutter/rendering.dart'; import 'package:zflutter/zflutter.dart'; import '../core.dart'; -import '../path_command.dart'; -import '../renderer.dart'; class RenderZShape extends RenderZBox { Color _color; diff --git a/zflutter/lib/src/core/renderer.dart b/zflutter/lib/src/core/renderer.dart index a4ed9a2..10ea5a8 100644 --- a/zflutter/lib/src/core/renderer.dart +++ b/zflutter/lib/src/core/renderer.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:zflutter/src/core/core.dart'; -import 'package:zflutter/src/core/path_command.dart'; class ZRenderer { Path path = Path(); diff --git a/zflutter/lib/src/core/widgets/box_adapter.dart b/zflutter/lib/src/core/widgets/box_adapter.dart index f8bd037..3f213de 100644 --- a/zflutter/lib/src/core/widgets/box_adapter.dart +++ b/zflutter/lib/src/core/widgets/box_adapter.dart @@ -1,5 +1,4 @@ import 'package:flutter/widgets.dart'; -import 'package:zflutter/src/core/core.dart'; import 'package:zflutter/src/core/render/render_box_adapter.dart'; import 'package:zflutter/zflutter.dart'; diff --git a/zflutter/lib/src/core/widgets/positioned.dart b/zflutter/lib/src/core/widgets/positioned.dart index 7e0a89a..157628f 100644 --- a/zflutter/lib/src/core/widgets/positioned.dart +++ b/zflutter/lib/src/core/widgets/positioned.dart @@ -1,7 +1,5 @@ import 'package:flutter/foundation.dart'; -import 'package:flutter/rendering.dart'; import 'package:flutter/widgets.dart'; -import 'package:zflutter/src/core/render/render_box.dart'; import 'package:zflutter/src/core/widgets/update_parent_data.dart'; import 'package:zflutter/src/widgets/illustration.dart'; diff --git a/zflutter/lib/src/widgets/figures/box.dart b/zflutter/lib/src/widgets/figures/box.dart index e128521..d08472e 100644 --- a/zflutter/lib/src/widgets/figures/box.dart +++ b/zflutter/lib/src/widgets/figures/box.dart @@ -1,9 +1,6 @@ -import 'dart:ui'; - import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:zflutter/src/widgets/group.dart'; import 'package:zflutter/zflutter.dart'; class ZBox extends StatelessWidget { diff --git a/zflutter/lib/src/widgets/figures/cylinder.dart b/zflutter/lib/src/widgets/figures/cylinder.dart index 2cc4602..1de90a3 100644 --- a/zflutter/lib/src/widgets/figures/cylinder.dart +++ b/zflutter/lib/src/widgets/figures/cylinder.dart @@ -1,9 +1,6 @@ -import 'dart:ui'; - import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:zflutter/src/widgets/group.dart'; import 'package:zflutter/zflutter.dart'; class ZCylinder extends StatelessWidget { diff --git a/zflutter/lib/src/widgets/figures/hemisphere.dart b/zflutter/lib/src/widgets/figures/hemisphere.dart index 26ffee3..82b10fe 100644 --- a/zflutter/lib/src/widgets/figures/hemisphere.dart +++ b/zflutter/lib/src/widgets/figures/hemisphere.dart @@ -1,9 +1,6 @@ -import 'dart:ui'; - import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:zflutter/src/widgets/group.dart'; import 'package:zflutter/zflutter.dart'; import 'dart:math' as math; diff --git a/zflutter/pubspec.lock b/zflutter/pubspec.lock index 8d36263..a8e1e23 100644 --- a/zflutter/pubspec.lock +++ b/zflutter/pubspec.lock @@ -1,62 +1,55 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: - archive: - dependency: transitive - description: - name: archive - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.13" - args: - dependency: transitive - description: - name: args - url: "https://pub.dartlang.org" - source: hosted - version: "1.6.0" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.4.1" + version: "2.8.2" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.0" + version: "1.2.0" charcode: dependency: transitive description: name: charcode - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.3" - collection: + version: "1.3.1" + clock: dependency: transitive description: - name: collection - url: "https://pub.dartlang.org" + name: clock + url: "https://pub.flutter-io.cn" source: hosted - version: "1.14.12" - convert: + version: "1.1.0" + collection: dependency: transitive description: - name: convert - url: "https://pub.dartlang.org" + name: collection + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.1" - crypto: + version: "1.16.0" + fake_async: dependency: transitive description: - name: crypto - url: "https://pub.dartlang.org" + name: fake_async + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.4" + version: "1.3.0" flutter: dependency: "direct main" description: flutter @@ -67,48 +60,41 @@ packages: description: flutter source: sdk version: "0.0.0" - image: + matcher: dependency: transitive description: - name: image - url: "https://pub.dartlang.org" + name: matcher + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.12" - matcher: + version: "0.12.11" + material_color_utilities: dependency: transitive description: - name: matcher - url: "https://pub.dartlang.org" + name: material_color_utilities + url: "https://pub.flutter-io.cn" source: hosted - version: "0.12.6" + version: "0.1.4" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.8" + version: "1.7.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.6.4" - petitparser: - dependency: transitive - description: - name: petitparser - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.4.0" + version: "1.8.1" quiver: dependency: "direct main" description: name: quiver - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.3" + version: "2.1.5" sky_engine: dependency: transitive description: flutter @@ -118,64 +104,50 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.7.0" + version: "1.8.2" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.9.3" + version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.5" + version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.0" + version: "1.2.0" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.15" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.6" + version: "0.4.9" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.8" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" + url: "https://pub.flutter-io.cn" source: hosted - version: "3.6.1" + version: "2.1.2" sdks: - dart: ">=2.7.0 <3.0.0" + dart: ">=2.17.0-0 <3.0.0" From 142f1474ece126765b66cfe48b106576de1c3c42 Mon Sep 17 00:00:00 2001 From: guoshuyu <359369982@qq.com> Date: Tue, 2 Aug 2022 15:21:01 +0800 Subject: [PATCH 09/13] init null safety --- zflutter/example/pubspec.lock | 2 +- zflutter/lib/src/core/core.dart | 86 ++++++++--------- zflutter/lib/src/core/path_command.dart | 66 ++++++------- zflutter/lib/src/core/render/render_box.dart | 22 ++--- .../src/core/render/render_box_adapter.dart | 36 +++---- .../lib/src/core/render/render_shape.dart | 94 +++++++++---------- zflutter/lib/src/core/renderer.dart | 16 ++-- .../lib/src/core/widgets/box_adapter.dart | 8 +- zflutter/lib/src/core/widgets/positioned.dart | 36 +++---- zflutter/lib/src/core/widgets/shape.dart | 14 +-- .../src/core/widgets/update_parent_data.dart | 3 +- zflutter/lib/src/core/widgets/widget.dart | 2 +- zflutter/lib/src/widgets/drag_detector.dart | 22 ++--- zflutter/lib/src/widgets/figures/box.dart | 58 ++++++------ zflutter/lib/src/widgets/figures/cone.dart | 51 +++++----- .../lib/src/widgets/figures/cylinder.dart | 28 +++--- .../lib/src/widgets/figures/hemisphere.dart | 38 ++++---- zflutter/lib/src/widgets/figures/rect.dart | 67 ++++++------- zflutter/lib/src/widgets/group.dart | 2 +- zflutter/lib/src/widgets/illustration.dart | 18 ++-- zflutter/pubspec.lock | 2 +- zflutter/pubspec.yaml | 4 +- 22 files changed, 326 insertions(+), 349 deletions(-) diff --git a/zflutter/example/pubspec.lock b/zflutter/example/pubspec.lock index 31098db..d417186 100644 --- a/zflutter/example/pubspec.lock +++ b/zflutter/example/pubspec.lock @@ -108,7 +108,7 @@ packages: name: quiver url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.5" + version: "3.1.0" sky_engine: dependency: transitive description: flutter diff --git a/zflutter/lib/src/core/core.dart b/zflutter/lib/src/core/core.dart index 1b97d93..e559b66 100644 --- a/zflutter/lib/src/core/core.dart +++ b/zflutter/lib/src/core/core.dart @@ -19,17 +19,17 @@ const tau = math.pi * 2; // A immutable 3D vector // Todo: Add unit test for this. It is important class ZVector { - final double x; - final double y; - final double z; + final double? x; + final double? y; + final double? z; const ZVector(this.x, this.y, this.z) - : assert(x != null && y != null && y != null); + : assert(x != null && y != null); const ZVector.only({this.x = 0, this.y = 0, this.z = 0}) - : assert(x != null && y != null && y != null); + : assert(x != null && y != null); - const ZVector.all(double value) + const ZVector.all(double? value) : assert(value != null), this.x = value, this.y = value, @@ -42,54 +42,54 @@ class ZVector { int get hashCode => hash3(x.hashCode, y.hashCode, z.hashCode); ZVector add({double x = 0, double y = 0, double z = 0}) { - return ZVector(this.x + x, this.y + y, this.z + z); + return ZVector(this.x! + x, this.y! + y, this.z! + z); } ZVector subtract({double x = 0, double y = 0, double z = 0}) { - return ZVector(this.x - x, this.y - y, this.z - z); + return ZVector(this.x! - x, this.y! - y, this.z! - z); } ZVector subtractVector(ZVector v) { - return ZVector(this.x - v.x, this.y - v.y, this.z - v.z); + return ZVector(this.x! - v.x!, this.y! - v.y!, this.z! - v.z!); } ZVector addVector(ZVector v) { - return ZVector(this.x + v.x, this.y + v.y, this.z + v.z); + return ZVector(this.x! + v.x!, this.y! + v.y!, this.z! + v.z!); } - ZVector rotate(ZVector rotation) { + ZVector rotate(ZVector? rotation) { if (rotation == null) return this; return this.rotateZ(rotation.z).rotateY(rotation.y).rotateX(rotation.x); } - ZVector rotateZ(double angle) { + ZVector rotateZ(double? angle) { return _rotateProperty(angle, Axis.x, Axis.y); } - ZVector rotateX(double angle) { + ZVector rotateX(double? angle) { return _rotateProperty(angle, Axis.y, Axis.z); } - ZVector rotateY(double angle) { + ZVector rotateY(double? angle) { return _rotateProperty(angle, Axis.x, Axis.z); } - ZVector _rotateProperty(double angle, Axis propA, Axis propB) { + ZVector _rotateProperty(double? angle, Axis propA, Axis propB) { if (angle == null || angle % tau == 0) { return this; } var cos = math.cos(angle); var sin = math.sin(angle); - var a = toMap[propA]; - var b = toMap[propB]; + var a = toMap[propA]!; + var b = toMap[propB]!; return replaceAxisInMap( {propA: a * cos - b * sin, propB: b * cos + a * sin}); } replaceAxisInMap(Map axis) { - double x, y, z; + double? x, y, z; axis.forEach((key, value) { if (key == Axis.x) x = value; if (key == Axis.y) y = value; @@ -98,39 +98,39 @@ class ZVector { return ZVector(x ?? this.x, y ?? this.y, z ?? this.z); } - Map get toMap => { + Map get toMap => { Axis.x: x, Axis.y: y, Axis.z: z, }; - ZVector multiply(ZVector scale) { + ZVector multiply(ZVector? scale) { if (scale == null) return this; - final mx = scale?.x ?? 1; - final my = scale?.y ?? 1; - final mz = scale?.z ?? 1; - return ZVector(x * mx, y * my, z * mz); + final mx = scale.x ?? 1; + final my = scale.y ?? 1; + final mz = scale.z ?? 1; + return ZVector(x! * mx, y! * my, z! * mz); } - ZVector divide(ZVector scale) { + ZVector divide(ZVector? scale) { if (scale == null) return this; - final mx = scale?.x ?? 1; - final my = scale?.y ?? 1; - final mz = scale?.z ?? 1; - return ZVector(x / mx, y / my, z / mz); + final mx = scale.x ?? 1; + final my = scale.y ?? 1; + final mz = scale.z ?? 1; + return ZVector(x! / mx, y! / my, z! / mz); } - ZVector multiplyScalar(num scale) { + ZVector multiplyScalar(num? scale) { if (scale == null) return this; - final m = scale ?? 1; - return ZVector(x * m, y * m, z * m); + final m = scale; + return ZVector(x! * m, y! * m, z! * m); } ZVector transform(ZVector translation, ZVector rotation, ZVector scale) { return this.multiply(scale).rotate(rotation).addVector(translation); } - static ZVector lerp(ZVector a, ZVector b, double t) { + static ZVector lerp(ZVector a, ZVector? b, double t) { final x = lerpDouble(a.x, b?.x ?? 0.0, t); final y = lerpDouble(a.y, b?.y ?? 0.0, t); final z = lerpDouble(a.z, b?.z ?? 0.0, t); @@ -138,7 +138,7 @@ class ZVector { } double magnitude() { - var sum = this.x * this.x + this.y * this.y + this.z * this.z; + var sum = this.x! * this.x! + this.y! * this.y! + this.z! * this.z!; return getMagnitudeSqrt(sum); } @@ -151,7 +151,7 @@ class ZVector { } double magnitude2d() { - var sum = this.x * this.x + this.y * this.y; + var sum = this.x! * this.x! + this.y! * this.y!; return getMagnitudeSqrt(sum); } @@ -159,7 +159,7 @@ class ZVector { return ZVector(this.x, this.y, this.z); } - ZVector copyWith({double x, double y, double z}) { + ZVector copyWith({double? x, double? y, double? z}) { return ZVector(x ?? this.x, y ?? this.y, z ?? this.z); } @@ -173,12 +173,12 @@ class ZVector { /// Cross product. ZVector cross(ZVector other) { - final double _x = x; - final double _y = y; - final double _z = z; - final double ox = other.x; - final double oy = other.y; - final double oz = other.z; + final double _x = x!; + final double _y = y!; + final double _z = z!; + final double ox = other.x!; + final double oy = other.y!; + final double oz = other.z!; return ZVector.only( x: _y * oz - _z * oy, y: _z * ox - _x * oz, @@ -188,7 +188,7 @@ class ZVector { ZVector unit() { var total = magnitude(); - return ZVector(x / total, y / total, z / total); + return ZVector(x! / total, y! / total, z! / total); } @override diff --git a/zflutter/lib/src/core/path_command.dart b/zflutter/lib/src/core/path_command.dart index 2e0f146..355239d 100644 --- a/zflutter/lib/src/core/path_command.dart +++ b/zflutter/lib/src/core/path_command.dart @@ -1,11 +1,9 @@ -import 'package:flutter/cupertino.dart'; - import 'core.dart'; // TODO: This Paths needs to be immutable; abstract class ZPathCommand { - final ZVector endRenderPoint = ZVector.zero; + final ZVector? endRenderPoint = ZVector.zero; void reset(); @@ -13,24 +11,24 @@ abstract class ZPathCommand { void render(ZRenderer renderer); - ZVector point({index = 0}); + ZVector? point({index = 0}); - ZVector renderPoint({int index = 0}); + ZVector? renderPoint({int index = 0}); - set previous(ZVector previousPoint) {} + set previous(ZVector? previousPoint) {} ZPathCommand clone(); } class ZMove extends ZPathCommand { - ZVector _point; + ZVector? _point; - ZVector _renderPoint; + ZVector? _renderPoint; - ZVector get endRenderPoint => _renderPoint; + ZVector? get endRenderPoint => _renderPoint; - ZMove.vector(this._point) { - _renderPoint = _point.copy(); + ZMove.vector(ZVector this._point) { + _renderPoint = _point!.copy(); } ZMove(double x, double y, double z) { @@ -46,35 +44,35 @@ class ZMove extends ZPathCommand { } ZPathCommand transform(ZVector translation, ZVector rotate, ZVector scale) { - return ZMove.vector(_renderPoint.transform(translation, rotate, scale)); + return ZMove.vector(_renderPoint!.transform(translation, rotate, scale)); } void render(ZRenderer renderer) { - renderer.move(_renderPoint); + renderer.move(_renderPoint!); } - ZVector point({index = 0}) { + ZVector? point({index = 0}) { return _point; } - ZVector renderPoint({index = 0}) { + ZVector? renderPoint({index = 0}) { return _renderPoint; } ZPathCommand clone() { - return ZMove.vector(this.point()); + return ZMove.vector(this.point()!); } } class ZLine extends ZPathCommand { - ZVector _point; + ZVector? _point; - ZVector _renderPoint; + ZVector? _renderPoint; - ZVector get endRenderPoint => _renderPoint; + ZVector? get endRenderPoint => _renderPoint; - ZLine.vector(this._point) { - _renderPoint = _point.copy(); + ZLine.vector(ZVector this._point) { + _renderPoint = _point!.copy(); } ZLine(double x, double y, double z) { @@ -90,30 +88,30 @@ class ZLine extends ZPathCommand { } ZPathCommand transform(ZVector translation, ZVector rotate, ZVector scale) { - return ZLine.vector(_renderPoint.transform(translation, rotate, scale)); + return ZLine.vector(_renderPoint!.transform(translation, rotate, scale)); } void render(ZRenderer renderer) { - renderer.line(_renderPoint); + renderer.line(_renderPoint!); } - ZVector point({index = 0}) { + ZVector? point({index = 0}) { return _point; } - ZVector renderPoint({index = 0}) { + ZVector? renderPoint({index = 0}) { return _renderPoint; } ZPathCommand clone() { - return ZLine.vector(_point); + return ZLine.vector(_point!); } } class ZBezier extends ZPathCommand { List points; - List renderPoints; + late List renderPoints; ZVector get endRenderPoint => renderPoints.last; @@ -153,10 +151,10 @@ class ZBezier extends ZPathCommand { const double _arcHandleLength = 9 / 16; class ZArc extends ZPathCommand { - List points; - ZVector _previous = ZVector.zero; + late List points; + ZVector? _previous = ZVector.zero; - List renderPoints; + late List renderPoints; ZVector get endRenderPoint => renderPoints.last; @@ -164,9 +162,7 @@ class ZArc extends ZPathCommand { renderPoints = points.map((e) => e.copy()).toList(); } - ZArc({@required ZVector corner, @required ZVector end, ZVector previous}) - : assert(corner != null && end != null, - 'Corner and end points can\'t be null') { + ZArc({required ZVector corner, required ZVector end, ZVector? previous}) { _previous = previous; points = [corner, end]; @@ -188,7 +184,7 @@ class ZArc extends ZPathCommand { void render(ZRenderer renderer) { assert(_previous != null); - var prev = _previous; + var prev = _previous!; var corner = renderPoints[0]; var end = renderPoints[1]; var a = ZVector.lerp(prev, corner, _arcHandleLength); @@ -205,7 +201,7 @@ class ZArc extends ZPathCommand { } @override - set previous(ZVector previousPoint) { + set previous(ZVector? previousPoint) { assert(previousPoint != null); _previous = previousPoint; } diff --git a/zflutter/lib/src/core/render/render_box.dart b/zflutter/lib/src/core/render/render_box.dart index 5c96ade..d719d81 100644 --- a/zflutter/lib/src/core/render/render_box.dart +++ b/zflutter/lib/src/core/render/render_box.dart @@ -3,7 +3,7 @@ import 'package:flutter/rendering.dart'; import '../core.dart'; class RenderZBox extends RenderBox { - double sortValue = 0; + double? sortValue = 0; ZVector origin = ZVector.zero; @@ -22,10 +22,9 @@ class RenderZMultiChildBox extends RenderZBox ContainerRenderObjectMixin, RenderBoxContainerDefaultsMixin { RenderZMultiChildBox({ - List children, + List? children, SortMode sortMode = SortMode.inherit, - }) : assert(sortMode != null), - this.sortMode = sortMode { + }) : this.sortMode = sortMode { addAll(children); } @@ -46,10 +45,10 @@ class RenderZMultiChildBox extends RenderZBox final BoxConstraints constraints = this.constraints; - RenderZBox child = firstChild; + RenderZBox? child = firstChild; while (child != null) { - final ZParentData childParentData = child.parentData as ZParentData; + final ZParentData? childParentData = child.parentData as ZParentData?; if (child is RenderZMultiChildBox && child.sortMode == SortMode.inherit) { child.layout(constraints, parentUsesSize: true); @@ -77,7 +76,7 @@ class RenderZMultiChildBox extends RenderZBox if (sortMode == SortMode.stack || sortMode == SortMode.update) { final children = getFlatChildren(); sortValue = children.fold(0, - (previousValue, element) => previousValue + element.sortValue) / + (dynamic previousValue, element) => previousValue + element.sortValue) / children.length; } else { super.performSort(); @@ -92,10 +91,10 @@ class RenderZMultiChildBox extends RenderZBox List getFlatChildren() { List children = []; - RenderZBox child = firstChild; + RenderZBox? child = firstChild; while (child != null) { - final ZParentData childParentData = child.parentData as ZParentData; + final ZParentData? childParentData = child.parentData as ZParentData?; if (child is RenderZMultiChildBox && child.sortMode == SortMode.inherit) { children.addAll(child.getFlatChildren()); @@ -118,12 +117,11 @@ class RenderZMultiChildBox extends RenderZBox @override void paint(PaintingContext context, Offset offset) { - assert(sortMode != null); if (sortMode == SortMode.inherit) return; List children = getFlatChildren(); //List children = getChildrenAsList() if (sortMode != SortMode.stack) { - children..sort((a, b) => a.sortValue.compareTo(b.sortValue)); + children..sort((a, b) => a.sortValue!.compareTo(b.sortValue!)); } for (final child in children) { final ZParentData childParentData = child.parentData as ZParentData; @@ -144,7 +142,7 @@ class ZParentData extends ContainerBoxParentData { this.rotate = ZVector.zero, this.scale = ZVector.identity, this.translate = ZVector.zero, - List transforms, + List? transforms, }) : this.transforms = transforms ?? []; ZParentData clone() => ZParentData( diff --git a/zflutter/lib/src/core/render/render_box_adapter.dart b/zflutter/lib/src/core/render/render_box_adapter.dart index b210178..509f74a 100644 --- a/zflutter/lib/src/core/render/render_box_adapter.dart +++ b/zflutter/lib/src/core/render/render_box_adapter.dart @@ -4,29 +4,29 @@ import '../core.dart'; class RenderZToBoxAdapter extends RenderZBox with RenderObjectWithChildMixin { - double _width; + double? _width; - double get width => _width; + double? get width => _width; - set width(double value) { + set width(double? value) { if (_width == value) return; _width = value; markNeedsLayout(); } - double _height; + double? _height; - double get height => _height; + double? get height => _height; - set height(double value) { + set height(double? value) { if (_height == value) return; _height = value; markNeedsLayout(); } RenderZToBoxAdapter({ - double width, - double height, + double? width, + double? height, }) : _width = width, _height = height; @@ -35,17 +35,17 @@ class RenderZToBoxAdapter extends RenderZBox // bool get isRepaintBoundary => true; - List transformedPath; + late List transformedPath; @override void performLayout() { final ZParentData anchorParentData = parentData as ZParentData; - child.layout(BoxConstraints.expand(height: height, width: width), + child!.layout(BoxConstraints.expand(height: height, width: width), parentUsesSize: false); size = constraints.smallest; - final x = width / 2; - final y = height / 2; + final x = width! / 2; + final y = height! / 2; transformedPath = [ ZMove.vector(ZVector.only(x: -x, y: -y)), ZLine.vector(ZVector.only(x: x, y: -y)), @@ -82,7 +82,7 @@ class RenderZToBoxAdapter extends RenderZBox double sortValueTotal = 0; for (var i = 0; i < pointCount; i++) { - sortValueTotal += this.transformedPath[i].endRenderPoint.z; + sortValueTotal += this.transformedPath[i].endRenderPoint!.z!; } this.sortValue = sortValueTotal / pointCount; } @@ -95,11 +95,11 @@ class RenderZToBoxAdapter extends RenderZBox Matrix4 matrix = Matrix4.translationValues(0, 0, 0); anchorParentData.transforms.forEach((transform) { final matrix4 = Matrix4.translationValues( - transform.translate.x, transform.translate.y, transform.translate.z); + transform.translate.x!, transform.translate.y!, transform.translate.z!); - matrix4.rotateX(transform.rotate.x); - matrix4.rotateY(-transform.rotate.y); - matrix4.rotateZ(transform.rotate.z); + matrix4.rotateX(transform.rotate.x!); + matrix4.rotateY(-transform.rotate.y!); + matrix4.rotateZ(transform.rotate.z!); matrix4.scale(transform.scale.x, transform.scale.y, transform.scale.z); matrix..multiply(matrix4); @@ -127,7 +127,7 @@ class RenderZToBoxAdapter extends RenderZBox context.pushLayer( layer, (context, _) { - context.paintChild(child, offset - Offset(width / 2, height / 2)); + context.paintChild(child!, offset - Offset(width! / 2, height! / 2)); }, Offset.zero, childPaintBounds: context.estimatedBounds, diff --git a/zflutter/lib/src/core/render/render_shape.dart b/zflutter/lib/src/core/render/render_shape.dart index eed5d27..584b174 100644 --- a/zflutter/lib/src/core/render/render_shape.dart +++ b/zflutter/lib/src/core/render/render_shape.dart @@ -4,21 +4,21 @@ import 'package:zflutter/zflutter.dart'; import '../core.dart'; class RenderZShape extends RenderZBox { - Color _color; + Color? _color; - Color get color => _color; + Color? get color => _color; - set color(Color value) { + set color(Color? value) { if (_color == value) return; _color = value; markNeedsPaint(); } - Color _backfaceColor; + Color? _backfaceColor; - Color get backfaceColor => _backfaceColor; + Color? get backfaceColor => _backfaceColor; - set backfaceColor(Color value) { + set backfaceColor(Color? value) { if (_backfaceColor == value) return; _backfaceColor = value; markNeedsPaint(); @@ -56,21 +56,21 @@ class RenderZShape extends RenderZBox { markNeedsLayout(); } - List _path; + List? _path; - List get path => _path; + List? get path => _path; - set path(List value) { + set path(List? value) { if (_path == value) return; _path = value; markNeedsLayout(); } - double _sortValue; - double get sortValue => _sortValue; + double? _sortValue; + double? get sortValue => _sortValue; - set sortValue(double value) { + set sortValue(double? value) { if (_sortValue == value) return; _sortValue = value; } @@ -84,30 +84,26 @@ class RenderZShape extends RenderZBox { _visible = value; } - double _stroke; + double? _stroke; - double get stroke => _stroke; + double? get stroke => _stroke; - set stroke(double value) { + set stroke(double? value) { assert(value != null && value >= 0); if (_stroke == value) return; _stroke = value; } RenderZShape({ - Color color, - Color backfaceColor, + Color? color, + Color? backfaceColor, ZVector front = const ZVector.only(z: 1), bool close = false, bool visible = true, bool fill = false, - double stroke = 1, + double? stroke = 1, List path = const [], - }) : assert(path != null), - assert(front != null), - assert(close != null), - assert(fill != null), - assert(stroke != null && stroke >= 0), + }) : assert(stroke != null && stroke >= 0), _stroke = stroke, _visible = visible, _backfaceColor = backfaceColor, @@ -123,8 +119,8 @@ class RenderZShape extends RenderZBox { /// With this markNeedsPaint will only repaint this core object and not their ancestors bool get isRepaintBoundary => true; - ZVector _transformedFront; - ZVector normalVector; + late ZVector _transformedFront; + late ZVector normalVector; final Matrix4 matrix4 = Matrix4.identity(); @override @@ -148,7 +144,7 @@ class RenderZShape extends RenderZBox { normalVector = origin - _transformedFront; transformedPath = path; anchorParentData.transforms.reversed.forEach((matrix4) { - transformedPath = transformedPath + transformedPath = transformedPath! .map((e) => e.transform(matrix4.translate, matrix4.rotate, matrix4.scale)) .toList(); @@ -158,19 +154,19 @@ class RenderZShape extends RenderZBox { performSort(); } - List transformedPath = []; + List? transformedPath = []; void performPathCommands() { - ZVector previousPoint = origin; - if (transformedPath.isEmpty) { - transformedPath.add(ZMove.vector(origin)); + ZVector? previousPoint = origin; + if (transformedPath!.isEmpty) { + transformedPath!.add(ZMove.vector(origin)); } else { - final first = transformedPath.first; + final first = transformedPath!.first; //Todo: Check this, I think not needed and can cause error if (!(first is ZMove)) { - transformedPath[0] = ZMove.vector(first.point()); + transformedPath![0] = ZMove.vector(first.point()!); } - transformedPath.forEach((it) { + transformedPath!.forEach((it) { it.previous = previousPoint; previousPoint = it.endRenderPoint; }); @@ -179,10 +175,10 @@ class RenderZShape extends RenderZBox { @override void performSort() { - assert(transformedPath.isNotEmpty); - var pointCount = this.transformedPath.length; - var firstPoint = this.transformedPath[0].endRenderPoint; - var lastPoint = this.transformedPath[pointCount - 1].endRenderPoint; + assert(transformedPath!.isNotEmpty); + var pointCount = this.transformedPath!.length; + var firstPoint = this.transformedPath![0].endRenderPoint; + var lastPoint = this.transformedPath![pointCount - 1].endRenderPoint; // ignore the final point if self closing shape var isSelfClosing = pointCount > 2 && firstPoint == lastPoint; if (isSelfClosing) { @@ -191,7 +187,7 @@ class RenderZShape extends RenderZBox { double sortValueTotal = 0; for (var i = 0; i < pointCount; i++) { - sortValueTotal += this.transformedPath[i].endRenderPoint.z; + sortValueTotal += this.transformedPath![i].endRenderPoint!.z!; } this.sortValue = sortValueTotal / pointCount; } @@ -199,7 +195,7 @@ class RenderZShape extends RenderZBox { bool isFacingBack = false; bool showBackFace = true; - Color get renderColor { + Color? get renderColor { final isBackFaceColor = backfaceColor != null && isFacingBack; return isBackFaceColor ? backfaceColor : color; } @@ -211,22 +207,22 @@ class RenderZShape extends RenderZBox { final renderer = ZRenderer(context.canvas); render(renderer); - final length = path.length; + final length = path!.length; if (length <= 1) { paintDot(renderer); } else { - isFacingBack = normalVector.z > 0; + isFacingBack = normalVector.z! > 0; if (!showBackFace && isFacingBack) { return super.paint(context, offset); } - var isTwoPoints = transformedPath.length == 2 && (path[1] is ZLine); + var isTwoPoints = transformedPath!.length == 2 && (path![1] is ZLine); var isClosed = !isTwoPoints && _close == true; final color = renderColor; - renderer.renderPath(transformedPath, isClosed: isClosed); - if (stroke != null && stroke > 0) renderer.stroke(color, stroke); - if (fill == true) renderer.fill(color); + renderer.renderPath(transformedPath!, isClosed: isClosed); + if (stroke != null && stroke! > 0) renderer.stroke(color!, stroke!); + if (fill == true) renderer.fill(color!); } // context.canvas.restore(); @@ -237,12 +233,12 @@ class RenderZShape extends RenderZBox { if (stroke == 0.0) { return; } - final color = renderColor; + final color = renderColor!; - final point = transformedPath.first?.endRenderPoint ?? origin; + final point = transformedPath!.first.endRenderPoint ?? origin; renderer.begin(); - final radius = stroke / 2; - renderer.circle(point.x, point.y, radius); + final radius = stroke! / 2; + renderer.circle(point.x!, point.y!, radius); renderer.closePath(); renderer.fill(color); } diff --git a/zflutter/lib/src/core/renderer.dart b/zflutter/lib/src/core/renderer.dart index 10ea5a8..ed3454f 100644 --- a/zflutter/lib/src/core/renderer.dart +++ b/zflutter/lib/src/core/renderer.dart @@ -22,21 +22,21 @@ class ZRenderer { } void move(ZVector point) { - path.moveTo(point.x, point.y); + path.moveTo(point.x!, point.y!); } void line(ZVector point) { - path.lineTo(point.x, point.y); + path.lineTo(point.x!, point.y!); } void bezier(ZVector cp0, ZVector cp1, ZVector end) { path.cubicTo( - cp0.x, - cp0.y, - cp1.x, - cp1.y, - end.x, - end.y, + cp0.x!, + cp0.y!, + cp1.x!, + cp1.y!, + end.x!, + end.y!, ); } diff --git a/zflutter/lib/src/core/widgets/box_adapter.dart b/zflutter/lib/src/core/widgets/box_adapter.dart index 3f213de..9de73d5 100644 --- a/zflutter/lib/src/core/widgets/box_adapter.dart +++ b/zflutter/lib/src/core/widgets/box_adapter.dart @@ -11,17 +11,17 @@ import 'package:zflutter/zflutter.dart'; /// class ZToBoxAdapter extends SingleChildRenderObjectWidget with ZWidget { // Height of the box widget - final double height; + final double? height; // Width of the box widget - final double width; + final double? width; /// Creates a ZWidget that contains a single box widget. const ZToBoxAdapter({ - Key key, + Key? key, this.height, this.width, - Widget child, + Widget? child, }) : super(key: key, child: child); @override diff --git a/zflutter/lib/src/core/widgets/positioned.dart b/zflutter/lib/src/core/widgets/positioned.dart index 157628f..b7ea8ad 100644 --- a/zflutter/lib/src/core/widgets/positioned.dart +++ b/zflutter/lib/src/core/widgets/positioned.dart @@ -41,41 +41,41 @@ class ZTransform { class ZPositioned extends ZUpdateParentDataWidget with ZWidget { /// Creates a widget that controls where a child of a [ZStack] is positioned. ZPositioned({ - Key key, + Key? key, this.scale = ZVector.identity, this.translate = ZVector.zero, this.rotate = ZVector.zero, - @required Widget child, + required Widget child, }) : super(key: key, child: child); ZPositioned.scale({ - Key key, + Key? key, double x = 1, double y = 1, double z = 1, - @required Widget child, + required Widget child, }) : this.scale = ZVector(x, y, z), this.rotate = ZVector.zero, this.translate = ZVector.zero, super(key: key, child: child); ZPositioned.translate({ - Key key, + Key? key, double x = 0, double y = 0, double z = 0, - @required Widget child, + required Widget child, }) : this.scale = ZVector.identity, this.rotate = ZVector.zero, this.translate = ZVector(x, y, z), super(key: key, child: child); ZPositioned.rotate({ - Key key, + Key? key, double x = 0, double y = 0, double z = 0, - @required Widget child, + required Widget child, }) : this.scale = ZVector.identity, this.rotate = ZVector(x, y, z), this.translate = ZVector.zero, @@ -97,7 +97,7 @@ class ZPositioned extends ZUpdateParentDataWidget with ZWidget { RenderObject renderObject, ZPositioned oldWidget, ZTransform transform) { assert(renderObject.parentData is ZParentData); - final ZParentData parentData = renderObject.parentData as ZParentData; + final ZParentData? parentData = renderObject.parentData as ZParentData?; bool needsLayout = false; transform.scale = scale; @@ -106,30 +106,30 @@ class ZPositioned extends ZUpdateParentDataWidget with ZWidget { if (scale != oldWidget.scale) { final dif = scale / oldWidget.scale; - parentData.scale *= dif; + parentData!.scale *= dif; needsLayout = true; } if (rotate != oldWidget.rotate) { final dif = rotate - oldWidget.rotate; - parentData.rotate += dif; + parentData!.rotate += dif; needsLayout = true; } if (translate != oldWidget.translate) { final dif = translate - oldWidget.translate; - parentData.translate = dif; + parentData!.translate = dif; needsLayout = true; } if (renderObject is RenderZMultiChildBox) { - RenderZBox child = renderObject.firstChild; + RenderZBox? child = renderObject.firstChild; while (child != null) { - final ZParentData childParentData = child.parentData as ZParentData; + final ZParentData? childParentData = child.parentData as ZParentData?; updateParentData(child, oldWidget, transform); child = childParentData?.nextSibling; needsLayout = true; @@ -138,7 +138,7 @@ class ZPositioned extends ZUpdateParentDataWidget with ZWidget { if (needsLayout) { renderObject.markNeedsLayout(); - final AbstractNode targetParent = renderObject.parent; + final AbstractNode? targetParent = renderObject.parent; if (targetParent is RenderObject) targetParent.markNeedsLayout(); } } @@ -164,16 +164,16 @@ class ZPositioned extends ZUpdateParentDataWidget with ZWidget { parentData.scale *= scale; if (renderObject is RenderZMultiChildBox) { - RenderZBox child = renderObject.firstChild; + RenderZBox? child = renderObject.firstChild; while (child != null) { - final ZParentData childParentData = child.parentData as ZParentData; + final ZParentData? childParentData = child.parentData as ZParentData?; startParentData(child, transform); child = childParentData?.nextSibling; } } - final AbstractNode targetParent = renderObject.parent; + final AbstractNode? targetParent = renderObject.parent; if (targetParent is RenderObject) targetParent.markNeedsLayout(); } diff --git a/zflutter/lib/src/core/widgets/shape.dart b/zflutter/lib/src/core/widgets/shape.dart index affd9be..805d291 100644 --- a/zflutter/lib/src/core/widgets/shape.dart +++ b/zflutter/lib/src/core/widgets/shape.dart @@ -29,12 +29,12 @@ class ZShape extends SingleChildRenderObjectWidget with ZWidget { /// The path that will define the shape of the Widget /// It is an ordered list of path commands : [ZMove], [ZLine], [ZArc] & [ZBezier] /// See some prebuilt shapes as examples: [ZRect], [ZRounderRect], [ZEllipse] - final List path; + final List? path; /// The color of the shape. If [stroke] is more than 0, the path will be painted /// with a stroke of this color. If [fill] is true, it will paint the inside of /// the path with this color - final Color color; + final Color? color; /// The width that will be used to paint the path final double stroke; @@ -52,13 +52,13 @@ class ZShape extends SingleChildRenderObjectWidget with ZWidget { /// An optional parameter to define a different color for the /// back face of the shape - final Color backfaceColor; + final Color? backfaceColor; /// If false the shape won't be painted final bool visible; ZShape({ - Key key, + Key? key, this.path, this.color, this.front = const ZVector.only(z: 1), @@ -67,11 +67,7 @@ class ZShape extends SingleChildRenderObjectWidget with ZWidget { this.closed = true, this.fill = false, this.visible = true, - }) : assert(closed != null), - assert(front != null), - assert(visible != null), - assert(fill != null), - assert(stroke != null && stroke >= 0), + }) : assert(stroke >= 0), super(key: key); @override diff --git a/zflutter/lib/src/core/widgets/update_parent_data.dart b/zflutter/lib/src/core/widgets/update_parent_data.dart index 9763023..cc7335c 100644 --- a/zflutter/lib/src/core/widgets/update_parent_data.dart +++ b/zflutter/lib/src/core/widgets/update_parent_data.dart @@ -6,7 +6,7 @@ abstract class ZUpdateParentDataWidget extends ProxyWidget { /// Abstract const constructor. This constructor enables subclasses to provide /// const constructors so that they can be used in const expressions. - const ZUpdateParentDataWidget({Key key, Widget child}) + const ZUpdateParentDataWidget({Key? key, required Widget child}) : super(key: key, child: child); @override @@ -171,7 +171,6 @@ class UpdateParentDataElement extends ProxyElement { /// It is more efficient than requesting an additional frame just for the /// purpose of updating the [KeepAlive] widget. void applyWidgetOutOfTurn(ZUpdateParentDataWidget newWidget) { - assert(newWidget != null); assert(newWidget.debugCanApplyOutOfTurn()); assert(newWidget.child == widget.child); _updateParentData(newWidget, widget); diff --git a/zflutter/lib/src/core/widgets/widget.dart b/zflutter/lib/src/core/widgets/widget.dart index ec46784..c4843c4 100644 --- a/zflutter/lib/src/core/widgets/widget.dart +++ b/zflutter/lib/src/core/widgets/widget.dart @@ -25,7 +25,7 @@ class ZSingleChildRenderObjectElement extends SingleChildRenderObjectElement { abstract class ZMultiChildWidget extends MultiChildRenderObjectWidget with ZWidget { - ZMultiChildWidget({List children}) : super(children: children); + ZMultiChildWidget({required List children}) : super(children: children); @override RenderZMultiChildBox createRenderObject(BuildContext context) { diff --git a/zflutter/lib/src/widgets/drag_detector.dart b/zflutter/lib/src/widgets/drag_detector.dart index 92ab683..c0b23eb 100644 --- a/zflutter/lib/src/widgets/drag_detector.dart +++ b/zflutter/lib/src/widgets/drag_detector.dart @@ -6,26 +6,26 @@ import '../../zflutter.dart'; import '../core/core.dart'; typedef DragWidgetBuilder = Widget Function( - BuildContext context, ZDragController controller); + BuildContext context, ZDragController? controller); class ZDragDetector extends StatefulWidget { - final DragWidgetBuilder builder; + final DragWidgetBuilder? builder; - const ZDragDetector({Key key, this.builder}) : super(key: key); + const ZDragDetector({Key? key, this.builder}) : super(key: key); @override State createState() => _ZDragDetectorState(); } class _ZDragDetectorState extends State { - ZDragController controller; + ZDragController? controller; Offset dragStart = Offset.zero; Offset dragStartR = Offset.zero; @override void initState() { controller = ZDragController(ZVector.zero); - controller.addListener(update); + controller!.addListener(update); super.initState(); } @@ -36,8 +36,8 @@ class _ZDragDetectorState extends State { return GestureDetector( onPanStart: (event) { dragStartR = Offset( - controller.rotate.x, - controller.rotate.y, + controller!.rotate.x!, + controller!.rotate.y!, ); dragStart = Offset(event.localPosition.dx, event.localPosition.dy); }, @@ -49,12 +49,12 @@ class _ZDragDetectorState extends State { var minSize = min(displaySize.width, displaySize.height); var moveRY = moveX / minSize * tau; var moveRX = moveY / minSize * tau; - controller._rotate = ZVector.only( + controller!._rotate = ZVector.only( x: this.dragStartR.dx - moveRX, y: this.dragStartR.dy - moveRY, ); }, - child: widget.builder( + child: widget.builder!( context, controller, )); @@ -62,8 +62,8 @@ class _ZDragDetectorState extends State { @override void dispose() { - controller.removeListener(update); - controller.dispose(); + controller!.removeListener(update); + controller!.dispose(); super.dispose(); } } diff --git a/zflutter/lib/src/widgets/figures/box.dart b/zflutter/lib/src/widgets/figures/box.dart index d08472e..3a70e03 100644 --- a/zflutter/lib/src/widgets/figures/box.dart +++ b/zflutter/lib/src/widgets/figures/box.dart @@ -4,22 +4,22 @@ import 'package:flutter/material.dart'; import 'package:zflutter/zflutter.dart'; class ZBox extends StatelessWidget { - final double width; - final double height; - final double depth; + final double? width; + final double? height; + final double? depth; final double stroke; final bool fill; - final Color color; - final bool visible; + final Color? color; + final bool? visible; - final Color frontColor; - final Color rearColor; - final Color leftColor; - final Color rightColor; - final Color topColor; - final Color bottomColor; + final Color? frontColor; + final Color? rearColor; + final Color? leftColor; + final Color? rightColor; + final Color? topColor; + final Color? bottomColor; ZBox({ this.width, @@ -38,22 +38,22 @@ class ZBox extends StatelessWidget { }); Widget get frontFace => ZPositioned( - translate: ZVector.only(z: depth / 2), + translate: ZVector.only(z: depth! / 2), child: ZRect( color: frontColor ?? color, fill: fill, stroke: 1, - width: width, - height: height, + width: width!, + height: height!, ), ); Widget get rearFace => ZPositioned( - translate: ZVector.only(z: -depth / 2), + translate: ZVector.only(z: -depth! / 2), rotate: ZVector.only(y: tau / 2), child: ZRect( - width: width, - height: height, + width: width!, + height: height!, color: rearColor ?? color, fill: fill, stroke: 1, @@ -61,11 +61,11 @@ class ZBox extends StatelessWidget { ); Widget get leftFace => ZPositioned( - translate: ZVector.only(x: -width / 2), + translate: ZVector.only(x: -width! / 2), rotate: ZVector.only(y: -tau / 4), child: ZRect( - width: depth, - height: height, + width: depth!, + height: height!, stroke: 1, color: leftColor ?? color, fill: fill, @@ -73,38 +73,38 @@ class ZBox extends StatelessWidget { ); Widget get rightFace => ZPositioned( - translate: ZVector.only(x: width / 2), + translate: ZVector.only(x: width! / 2), rotate: ZVector.only(y: tau / 4), child: ZRect( - width: depth, + width: depth!, color: rightColor ?? color, - height: height, + height: height!, stroke: 1, fill: fill, ), ); Widget get topFace => ZPositioned( - translate: ZVector.only(y: -height / 2), + translate: ZVector.only(y: -height! / 2), rotate: ZVector.only(x: -tau / 4), child: ZRect( - width: width, + width: width!, color: topColor ?? color, - height: depth, + height: depth!, stroke: 1, fill: fill, ), ); Widget get bottomFace => ZPositioned( - translate: ZVector.only(y: height / 2), + translate: ZVector.only(y: height! / 2), rotate: ZVector.only(x: tau / 4), child: ZRect( - width: width, + width: width!, color: bottomColor ?? color, stroke: 1, fill: fill, - height: depth, + height: depth!, ), ); diff --git a/zflutter/lib/src/widgets/figures/cone.dart b/zflutter/lib/src/widgets/figures/cone.dart index c4c5714..531ae33 100644 --- a/zflutter/lib/src/widgets/figures/cone.dart +++ b/zflutter/lib/src/widgets/figures/cone.dart @@ -4,20 +4,19 @@ import 'dart:math' as math; class ZCone extends ZCircle { final double diameter; - final double length; + final double? length; ZCone({ this.length, - Key key, - @required this.diameter, - Color color, + Key? key, + required this.diameter, + Color? color, bool closed = false, - Color backfaceColor, + Color? backfaceColor, double stroke = 1, bool fill = true, ZVector front = const ZVector.only(z: 1), - }) : assert(diameter != null), - super( + }) : super( key: key, color: color, backfaceColor: backfaceColor, @@ -31,7 +30,7 @@ class ZCone extends ZCircle { RenderZCone createRenderObject(BuildContext context) { return RenderZCone( color: color, - path: path, + path: path!, stroke: stroke, close: closed, fill: fill, @@ -39,7 +38,7 @@ class ZCone extends ZCircle { backfaceColor: backfaceColor, front: front, diameter: diameter, - length: length); + length: length!); } @override @@ -58,11 +57,11 @@ class ZCone extends ZCircle { } class RenderZCone extends RenderZShape { - double _length; + double? _length; - double get length => _length; + double? get length => _length; - set length(double value) { + set length(double? value) { assert(value != null && value >= 0); if (_length == value) return; _length = value; @@ -74,26 +73,24 @@ class RenderZCone extends RenderZShape { double get diameter => _diameter; set diameter(double value) { - assert(value != null && value >= 0); + assert(value >= 0); if (_diameter == value) return; _diameter = value; markNeedsLayout(); } RenderZCone({ - double length, - double diameter, - Color color, - Color backfaceColor, + required double length, + required double diameter, + Color? color, + Color? backfaceColor, ZVector front = const ZVector.only(z: 1), bool close = false, bool visible = true, bool fill = false, double stroke = 1, List path = const [], - }) : assert(length != null), - assert(diameter != null), - _length = length, + }) : _length = length, _diameter = diameter, super( color: color, @@ -108,7 +105,7 @@ class RenderZCone extends RenderZShape { ZVector tangentA = ZVector.zero; ZVector tangentB = ZVector.zero; - ZVector apex; + ZVector? apex; @override void performLayout() { @@ -117,7 +114,7 @@ class RenderZCone extends RenderZShape { apex = ZVector.only(z: length); anchorParentData.transforms.reversed.forEach((matrix4) { - apex = apex.transform(matrix4.translate, matrix4.rotate, matrix4.scale); + apex = apex!.transform(matrix4.translate, matrix4.rotate, matrix4.scale); }); super.performLayout(); } @@ -140,7 +137,7 @@ class RenderZCone extends RenderZShape { if (!visible) { return; } - renderApex = apex - origin; + renderApex = apex! - origin; final scale = normalVector.magnitude(); final apexDistance = renderApex.magnitude2d(); final normalDistance = normalVector.magnitude2d(); @@ -154,7 +151,7 @@ class RenderZCone extends RenderZShape { return; } - final apexAngle = (math.atan2(normalVector.y, normalVector.x) + tau / 2); + final apexAngle = (math.atan2(normalVector.y!, normalVector.x!) + tau / 2); final projectLength = apexDistance / eccen; final projectAngle = math.acos(radius / projectLength); @@ -168,12 +165,12 @@ class RenderZCone extends RenderZShape { final path = [ ZMove.vector(tangentA), - ZLine.vector(apex), + ZLine.vector(apex!), ZLine.vector(tangentB), ]; renderer.renderPath(path); - if (stroke > 0) renderer.stroke(color, stroke); - if (fill) renderer.fill(color); + if (stroke! > 0) renderer.stroke(color!, stroke!); + if (fill) renderer.fill(color!); } } diff --git a/zflutter/lib/src/widgets/figures/cylinder.dart b/zflutter/lib/src/widgets/figures/cylinder.dart index 1de90a3..3f3a422 100644 --- a/zflutter/lib/src/widgets/figures/cylinder.dart +++ b/zflutter/lib/src/widgets/figures/cylinder.dart @@ -10,11 +10,11 @@ class ZCylinder extends StatelessWidget { final double stroke; final bool fill; - final Color color; - final bool visible; + final Color? color; + final bool? visible; - final Color backface; - final Color frontface; + final Color? backface; + final Color? frontface; ZCylinder({ this.diameter = 1, @@ -76,16 +76,16 @@ class ZCylinder extends StatelessWidget { } class _ZCylinderMiddle extends ZShape { - final double diameter; + final double? diameter; _ZCylinderMiddle( - {this.diameter, List path, double stroke = 1, Color color}) + {this.diameter, List? path, double stroke = 1, Color? color}) : super(path: path, stroke: stroke, color: color); @override RenderZCylinder createRenderObject(BuildContext context) { return RenderZCylinder( - path: path, stroke: stroke, diameter: diameter, color: color); + path: path!, stroke: stroke, diameter: diameter, color: color); } @override @@ -98,11 +98,11 @@ class _ZCylinderMiddle extends ZShape { } class RenderZCylinder extends RenderZShape { - double _diameter; + double? _diameter; - double get diameter => _diameter; + double? get diameter => _diameter; - set diameter(double value) { + set diameter(double? value) { if (_diameter == value) return; _diameter = value; @@ -110,18 +110,18 @@ class RenderZCylinder extends RenderZShape { } RenderZCylinder( - {List path, double diameter, double stroke, Color color}) + {required List path, double? diameter, double? stroke, Color? color}) : _diameter = diameter, super(path: path, stroke: stroke, color: color); @override void render(ZRenderer renderer) { var scale = normalVector.magnitude(); - var strokeWidth = diameter * scale + stroke; + var strokeWidth = diameter! * scale + stroke!; renderer.setLineCap(StrokeCap.butt); - renderer.renderPath(transformedPath); - renderer.stroke(color, strokeWidth); + renderer.renderPath(transformedPath!); + renderer.stroke(color!, strokeWidth); renderer.setLineCap(StrokeCap.round); super.render(renderer); } diff --git a/zflutter/lib/src/widgets/figures/hemisphere.dart b/zflutter/lib/src/widgets/figures/hemisphere.dart index 82b10fe..952ff83 100644 --- a/zflutter/lib/src/widgets/figures/hemisphere.dart +++ b/zflutter/lib/src/widgets/figures/hemisphere.dart @@ -9,11 +9,11 @@ class ZHemisphere extends StatelessWidget { final double stroke; - final Color color; - final bool visible; + final Color? color; + final bool? visible; // final ZVector front; - final Color backfaceColor; + final Color? backfaceColor; //var front = ZVector.only(z: 1); ZHemisphere({ @@ -47,16 +47,16 @@ class ZHemisphere extends StatelessWidget { } class _ZCylinderMiddle extends ZShape { - final double diameter; + final double? diameter; _ZCylinderMiddle( - {this.diameter, List path, double stroke = 1, Color color}) + {this.diameter, List? path, double stroke = 1, Color? color}) : super(path: [], stroke: stroke, color: color); @override _RenderZHemisphere createRenderObject(BuildContext context) { return _RenderZHemisphere( - path: path, + path: path!, stroke: stroke, diameter: diameter, color: color, @@ -74,27 +74,27 @@ class _ZCylinderMiddle extends ZShape { } class _RenderZHemisphere extends RenderZShape { - double _diameter; + double? _diameter; - double get diameter => _diameter; + double? get diameter => _diameter; - set diameter(double value) { + set diameter(double? value) { if (_diameter == value) return; _diameter = value; markNeedsPaint(); } - ZVector apex; + ZVector? apex; @override void performLayout() { final ZParentData anchorParentData = parentData as ZParentData; matrix4.setIdentity(); // print('relayout ${anchorParentData.transforms.length}'); - apex = ZVector.only(z: diameter / 2); + apex = ZVector.only(z: diameter! / 2); anchorParentData.transforms.reversed.forEach((matrix4) { // print(matrix4); - apex = apex.transform(matrix4.translate, matrix4.rotate, matrix4.scale); + apex = apex!.transform(matrix4.translate, matrix4.rotate, matrix4.scale); }); super.performLayout(); } @@ -106,16 +106,16 @@ class _RenderZHemisphere extends RenderZShape { } _RenderZHemisphere( - {List path, double diameter, double stroke, Color color}) + {required List path, double? diameter, double? stroke, Color? color}) : _diameter = diameter, super(path: path, stroke: stroke, color: color, fill: true); @override void render(ZRenderer renderer) { - final contourAngle = math.atan2(normalVector.y, normalVector.x); - final demoRadius = diameter / 2 * normalVector.magnitude(); - final x = origin.x; - final y = origin.y; + final contourAngle = math.atan2(normalVector.y!, normalVector.x!); + final demoRadius = diameter! / 2 * normalVector.magnitude(); + final x = origin.x!; + final y = origin.y!; final startAngle = contourAngle + tau / 4; final endAnchor = contourAngle - tau / 4; @@ -124,7 +124,7 @@ class _RenderZHemisphere extends RenderZShape { renderer.move(origin); renderer.arc(x, y, demoRadius, startAngle, endAnchor); renderer.closePath(); - if (stroke > 0) renderer.stroke(color, stroke); - if (fill) renderer.fill(color); + if (stroke! > 0) renderer.stroke(color!, stroke!); + if (fill) renderer.fill(color!); } } diff --git a/zflutter/lib/src/widgets/figures/rect.dart b/zflutter/lib/src/widgets/figures/rect.dart index 30cfc7f..d8c6a83 100644 --- a/zflutter/lib/src/widgets/figures/rect.dart +++ b/zflutter/lib/src/widgets/figures/rect.dart @@ -7,16 +7,15 @@ class ZRect extends ZShape { final double height; ZRect({ - Key key, - @required this.width, - @required this.height, - Color color, - Color backfaceColor, + Key? key, + required this.width, + required this.height, + Color? color, + Color? backfaceColor, double stroke = 1, bool fill = false, ZVector front = const ZVector.only(z: 1), - }) : assert(width != null && height != null), - super( + }) : super( key: key, color: color, backfaceColor: backfaceColor, @@ -44,18 +43,16 @@ class ZRoundedRect extends ZShape { final double borderRadius; ZRoundedRect({ - Key key, - @required this.width, - @required this.height, - @required this.borderRadius, - Color color, - Color backfaceColor, + Key? key, + required this.width, + required this.height, + required this.borderRadius, + Color? color, + Color? backfaceColor, double stroke = 1, bool fill = false, ZVector front = const ZVector.only(z: 1), - }) : assert(width != null && height != null), - assert(borderRadius != null), - super( + }) : super( key: key, color: color, backfaceColor: backfaceColor, @@ -132,17 +129,16 @@ class ZCircle extends ZShape { final int quarters; ZCircle({ - Key key, - @required this.diameter, + Key? key, + required this.diameter, this.quarters = 4, - Color color, + Color? color, bool closed = false, - Color backfaceColor, + Color? backfaceColor, double stroke = 1, bool fill = false, ZVector front = const ZVector.only(z: 1), - }) : assert(diameter != null), - assert(quarters != null && quarters >= 0 && quarters <= 4), + }) : assert(quarters >= 0 && quarters <= 4), super( key: key, color: color, @@ -161,17 +157,16 @@ class ZEllipse extends ZShape { final int quarters; ZEllipse({ - Key key, - @required this.width, - @required this.height, + Key? key, + required this.width, + required this.height, this.quarters = 4, - Color color, - Color backfaceColor, + Color? color, + Color? backfaceColor, double stroke = 1, bool fill = false, ZVector front = const ZVector.only(z: 1), - }) : assert(width != null && height != null), - assert(quarters != null && quarters >= 0 && quarters <= 4), + }) : assert(quarters >= 0 && quarters <= 4), super( key: key, color: color, @@ -235,16 +230,16 @@ class ZPolygon extends ZShape { final double radius; ZPolygon({ - Key key, - @required this.sides, - @required this.radius, - Color color, - Color backfaceColor, + Key? key, + required this.sides, + required this.radius, + Color? color, + Color? backfaceColor, double stroke = 1, bool fill = false, ZVector front = const ZVector.only(z: 1), - }) : assert(sides != null && sides > 2), - assert(radius != null && radius > 0), + }) : assert(sides > 2), + assert(radius > 0), super( key: key, color: color, diff --git a/zflutter/lib/src/widgets/group.dart b/zflutter/lib/src/widgets/group.dart index bec0278..5f31354 100644 --- a/zflutter/lib/src/widgets/group.dart +++ b/zflutter/lib/src/widgets/group.dart @@ -3,7 +3,7 @@ import 'package:zflutter/zflutter.dart'; class ZGroup extends ZMultiChildWidget { final SortMode sortMode; - ZGroup({List children, this.sortMode = SortMode.inherit}) + ZGroup({required List children, this.sortMode = SortMode.inherit}) : super(children: children); @override diff --git a/zflutter/lib/src/widgets/illustration.dart b/zflutter/lib/src/widgets/illustration.dart index e9d9e36..f5d0d75 100644 --- a/zflutter/lib/src/widgets/illustration.dart +++ b/zflutter/lib/src/widgets/illustration.dart @@ -7,9 +7,9 @@ class ZIllustration extends ZMultiChildWidget { final double zoom; ZIllustration({ - List children, + required List children, this.zoom = 1, - }) : assert(zoom != null && zoom >= 0), + }) : assert(zoom >= 0), super(children: children); @override @@ -25,20 +25,20 @@ class ZIllustration extends ZMultiChildWidget { } class RenderZIllustration extends RenderZMultiChildBox { - double _zoom = 1; + double? _zoom = 1; - double get zoom => _zoom; + double? get zoom => _zoom; - set zoom(double value) { - assert(_zoom != null && _zoom >= 0); + set zoom(double? value) { + assert(_zoom != null && _zoom! >= 0); if (_zoom == value) return; _zoom = value; markNeedsPaint(); } RenderZIllustration({ - double zoom, - List children, + double? zoom, + List? children, }) : assert(zoom != null && zoom >= 0), _zoom = zoom, super(children: children, sortMode: SortMode.update); @@ -58,7 +58,7 @@ class RenderZIllustration extends RenderZMultiChildBox { // TODO: Work on hitTest @override - bool hitTest(BoxHitTestResult result, {Offset position}) { + bool hitTest(BoxHitTestResult result, {required Offset position}) { assert(() { if (!hasSize) { if (debugNeedsLayout) { diff --git a/zflutter/pubspec.lock b/zflutter/pubspec.lock index a8e1e23..6fe54b1 100644 --- a/zflutter/pubspec.lock +++ b/zflutter/pubspec.lock @@ -94,7 +94,7 @@ packages: name: quiver url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.5" + version: "3.1.0" sky_engine: dependency: transitive description: flutter diff --git a/zflutter/pubspec.yaml b/zflutter/pubspec.yaml index 9e123fc..f9d5b52 100644 --- a/zflutter/pubspec.yaml +++ b/zflutter/pubspec.yaml @@ -5,12 +5,12 @@ homepage: https://z.flutter.gallery/ repository: https://github.com/jamesblasco/zflutter environment: - sdk: ">=2.7.0 <3.0.0" + sdk: '>=2.12.0 <3.0.0' dependencies: flutter: sdk: flutter - quiver: ^2.1.3 + quiver: 3.1.0 dev_dependencies: flutter_test: From edc0a2e2e651cc1bc599128eb40bd152edefb73d Mon Sep 17 00:00:00 2001 From: guoshuyu <359369982@qq.com> Date: Wed, 3 Aug 2022 10:55:08 +0800 Subject: [PATCH 10/13] init run android --- zflutter/example/android/app/src/main/AndroidManifest.xml | 1 - zflutter/example/android/build.gradle | 4 ++-- .../example/android/gradle/wrapper/gradle-wrapper.properties | 2 +- zflutter/lib/src/core/render/render_box_adapter.dart | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/zflutter/example/android/app/src/main/AndroidManifest.xml b/zflutter/example/android/app/src/main/AndroidManifest.xml index 55ca830..bfb7b47 100644 --- a/zflutter/example/android/app/src/main/AndroidManifest.xml +++ b/zflutter/example/android/app/src/main/AndroidManifest.xml @@ -6,7 +6,6 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> Date: Wed, 3 Aug 2022 10:55:58 +0800 Subject: [PATCH 11/13] remove test --- zflutter/lib/src/core/render/render_box_adapter.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zflutter/lib/src/core/render/render_box_adapter.dart b/zflutter/lib/src/core/render/render_box_adapter.dart index f198c01..509f74a 100644 --- a/zflutter/lib/src/core/render/render_box_adapter.dart +++ b/zflutter/lib/src/core/render/render_box_adapter.dart @@ -96,7 +96,7 @@ class RenderZToBoxAdapter extends RenderZBox anchorParentData.transforms.forEach((transform) { final matrix4 = Matrix4.translationValues( transform.translate.x!, transform.translate.y!, transform.translate.z!); - matrix.setEntry(3, 2, 0.01); + matrix4.rotateX(transform.rotate.x!); matrix4.rotateY(-transform.rotate.y!); matrix4.rotateZ(transform.rotate.z!); From b33c108cf0647e54cde17f4785b672fcd5c228b0 Mon Sep 17 00:00:00 2001 From: guoshuyu <359369982@qq.com> Date: Mon, 8 Aug 2022 11:02:15 +0800 Subject: [PATCH 12/13] reset pub url --- zflutter/example/pubspec.lock | 42 +++++++++++++++++------------------ zflutter/pubspec.lock | 40 ++++++++++++++++----------------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/zflutter/example/pubspec.lock b/zflutter/example/pubspec.lock index 278206b..c6c2b9b 100644 --- a/zflutter/example/pubspec.lock +++ b/zflutter/example/pubspec.lock @@ -5,56 +5,56 @@ packages: dependency: transitive description: name: async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.8.2" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" characters: dependency: transitive description: name: characters - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" charcode: dependency: transitive description: name: charcode - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.3.1" clock: dependency: transitive description: name: clock - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" collection: dependency: transitive description: name: collection - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.16.0" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.0.5" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.3.0" flutter: @@ -71,35 +71,35 @@ packages: dependency: transitive description: name: matcher - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.12.11" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.1.4" meta: dependency: transitive description: name: meta - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.7.0" modal_bottom_sheet: dependency: "direct main" description: name: modal_bottom_sheet - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" path: dependency: transitive description: name: path - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.1" sky_engine: @@ -111,56 +111,56 @@ packages: dependency: "direct main" description: name: slivers - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.0.1+2" source_span: dependency: transitive description: name: source_span - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.2" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" test_api: dependency: transitive description: name: test_api - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.4.9" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.1.2" zflutter: diff --git a/zflutter/pubspec.lock b/zflutter/pubspec.lock index 437fada..c516655 100644 --- a/zflutter/pubspec.lock +++ b/zflutter/pubspec.lock @@ -5,63 +5,63 @@ packages: dependency: "direct dev" description: name: alchemist - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.2.1" async: dependency: transitive description: name: async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.8.2" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" characters: dependency: transitive description: name: characters - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" charcode: dependency: transitive description: name: charcode - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.3.1" clock: dependency: transitive description: name: clock - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" collection: dependency: transitive description: name: collection - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.16.0" equatable: dependency: transitive description: name: equatable - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.0.3" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.3.0" flutter: @@ -78,28 +78,28 @@ packages: dependency: transitive description: name: matcher - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.12.11" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.1.4" meta: dependency: transitive description: name: meta - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.7.0" path: dependency: transitive description: name: path - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.1" sky_engine: @@ -111,49 +111,49 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.8.2" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" test_api: dependency: transitive description: name: test_api - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "0.4.9" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.flutter-io.cn" + url: "https://pub.dartlang.org" source: hosted version: "2.1.2" sdks: From 3f5e569ba96f4c94a5847aad96617f273d88629d Mon Sep 17 00:00:00 2001 From: guoshuyu <359369982@qq.com> Date: Mon, 21 Aug 2023 14:34:49 +0800 Subject: [PATCH 13/13] update support 3.13 --- .../android/app/src/main/AndroidManifest.xml | 1 - examples/ui_3d/android/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- examples/ui_3d/lib/ui_3d.dart | 20 +-- examples/ui_3d/pubspec.lock | 124 ++++++++++-------- examples/ui_3d/pubspec.yaml | 4 +- zflutter/lib/src/core/widgets/positioned.dart | 4 +- 7 files changed, 84 insertions(+), 73 deletions(-) diff --git a/examples/ui_3d/android/app/src/main/AndroidManifest.xml b/examples/ui_3d/android/app/src/main/AndroidManifest.xml index da3263e..b763e59 100644 --- a/examples/ui_3d/android/app/src/main/AndroidManifest.xml +++ b/examples/ui_3d/android/app/src/main/AndroidManifest.xml @@ -6,7 +6,6 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> with TickerProviderStateMixin { - AnimationController animationController; + AnimationController? animationController; @override void initState() { @@ -29,14 +29,14 @@ class _ZUiState extends State with TickerProviderStateMixin { vsync: this, ); Future.delayed(Duration(seconds: 3), - () => {animationController.repeat(reverse: true)}); + () => {animationController?.repeat(reverse: true)}); super.initState(); } @override void dispose() { - animationController.dispose(); + animationController?.dispose(); super.dispose(); } @@ -44,7 +44,7 @@ class _ZUiState extends State with TickerProviderStateMixin { @override Widget build(BuildContext context) { final curve = CurvedAnimation( - parent: animationController, curve: Curves.easeInOutSine); + parent: animationController!, curve: Curves.easeInOutSine); final mediaQuery = MediaQuery.of(context); final height = mediaQuery.size.height; @@ -53,7 +53,7 @@ class _ZUiState extends State with TickerProviderStateMixin { return Material( color: Colors.black, child: AnimatedBuilder( - animation: animationController, + animation: animationController!, builder: (context, _) { final progress = 1 - curve.value; final appBarProgress = @@ -138,7 +138,7 @@ class ZAppBar extends StatelessWidget { height: appBar, width: width, depth: depth, - color: Colors.blueAccent[400], + color: Colors.blueAccent[400]!, ), ), ZToBoxAdapter( @@ -162,7 +162,7 @@ class ZFloatingButton extends StatelessWidget { child: ZCylinder( diameter: floatingButtonSize, length: depth, - color: Colors.blueAccent[400], + color: Colors.blueAccent[400]!, )), ZToBoxAdapter( height: floatingButtonSize, @@ -179,9 +179,9 @@ class ZFloatingButton extends StatelessWidget { } class ZListTile extends StatelessWidget { - final int index; + final int? index; - const ZListTile({Key key, this.index}) : super(key: key); + const ZListTile({Key? key, this.index}) : super(key: key); @override Widget build(BuildContext context) { @@ -194,7 +194,7 @@ class ZListTile extends StatelessWidget { depth: titleDepth / 2, height: tileHeight, width: width, - color: Colors.grey[100], + color: Colors.grey[100]!, )), ZToBoxAdapter( height: tileHeight, diff --git a/examples/ui_3d/pubspec.lock b/examples/ui_3d/pubspec.lock index c1dca3c..4c5ca7c 100644 --- a/examples/ui_3d/pubspec.lock +++ b/examples/ui_3d/pubspec.lock @@ -5,58 +5,58 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.8.2" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" + version: "1.3.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + url: "https://pub.flutter-io.cn" source: hosted - version: "1.15.0" + version: "1.17.2" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + url: "https://pub.flutter-io.cn" source: hosted - version: "0.1.3" + version: "1.0.5" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.2.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -71,30 +71,34 @@ packages: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.12.16" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.12.11" + version: "0.5.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.7.0" + version: "1.9.1" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0" - quiver: - dependency: transitive - description: - name: quiver - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.5" + version: "1.8.3" sky_engine: dependency: transitive description: flutter @@ -104,64 +108,72 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.8.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.flutter-io.cn" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.flutter-io.cn" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.4.3" - typed_data: + version: "0.6.0" + vector_math: dependency: transitive description: - name: typed_data - url: "https://pub.dartlang.org" + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.3.0" - vector_math: + version: "2.1.4" + web: dependency: transitive description: - name: vector_math - url: "https://pub.dartlang.org" + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.1" + version: "0.1.4-beta" zflutter: dependency: "direct main" description: path: "../../zflutter" relative: true source: path - version: "0.0.1+2" + version: "0.0.1+3" sdks: - dart: ">=2.14.0 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" diff --git a/examples/ui_3d/pubspec.yaml b/examples/ui_3d/pubspec.yaml index 5e0d1a6..b9e9496 100644 --- a/examples/ui_3d/pubspec.yaml +++ b/examples/ui_3d/pubspec.yaml @@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ">=2.7.0 <3.0.0" + sdk: ">=2.12.0 <3.0.0" dependencies: flutter: @@ -29,7 +29,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^0.1.3 + cupertino_icons: ^1.0.4 dev_dependencies: flutter_test: diff --git a/zflutter/lib/src/core/widgets/positioned.dart b/zflutter/lib/src/core/widgets/positioned.dart index d54e188..9f8da7c 100644 --- a/zflutter/lib/src/core/widgets/positioned.dart +++ b/zflutter/lib/src/core/widgets/positioned.dart @@ -123,7 +123,7 @@ class ZPositioned extends ZUpdateParentDataWidget with ZWidget { if (needsLayout) { renderObject.markNeedsLayout(); - AbstractNode? targetParent = renderObject.parent; + RenderObject? targetParent = renderObject.parent; while (targetParent is RenderZBox) { targetParent.markNeedsLayout(); @@ -156,7 +156,7 @@ class ZPositioned extends ZUpdateParentDataWidget with ZWidget { } } - final AbstractNode? targetParent = renderObject.parent; + final RenderObject? targetParent = renderObject.parent; if (targetParent is RenderObject) targetParent.markNeedsLayout(); }