From b55f6182b3b87bcdf62146de75ce17fc14508dbd Mon Sep 17 00:00:00 2001 From: toly <1981462002@qq.com> Date: Sun, 7 Jun 2020 07:39:18 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=B7=BB=E5=8A=A0CustomMultiChild?= =?UTF-8?q?Layout=E3=80=81LayoutId=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/flutter.db | Bin 675840 -> 684032 bytes .../CustomMultiChildLayout/node1_base.dart | 94 ++++++++++++++++++ .../ProxyWidget/LayoutId/node1_base.dart | 94 ++++++++++++++++++ .../CustomPaint/node2_bezier.dart | 28 +++--- .../Padding/node1_base.dart | 38 ------- lib/views/widgets/exp/proxy_unit.dart | 3 +- lib/views/widgets/exp/render_object_unit.dart | 2 +- lib/views/widgets/widgets_map.dart | 8 ++ 8 files changed, 214 insertions(+), 53 deletions(-) create mode 100644 lib/views/widgets/MultiChildRenderObjectWidget/CustomMultiChildLayout/node1_base.dart create mode 100644 lib/views/widgets/ProxyWidget/LayoutId/node1_base.dart delete mode 100644 lib/views/widgets/SingleChildRenderObjectWidget/Padding/node1_base.dart diff --git a/assets/flutter.db b/assets/flutter.db index 882f39ff86b709ced514f12cd8f86b1a3a13ab3e..f8f96fa72db53c1102aa9d8ff88b89f6ba2bb873 100644 GIT binary patch delta 8461 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 delta 4071 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 diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/CustomMultiChildLayout/node1_base.dart b/lib/views/widgets/MultiChildRenderObjectWidget/CustomMultiChildLayout/node1_base.dart new file mode 100644 index 0000000..10961cb --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/CustomMultiChildLayout/node1_base.dart @@ -0,0 +1,94 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/6/6 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 341, +// "name": 'CustomMultiChildLayout基本使用', +// "priority": 1, +// "subtitle": +// "【children】 : 子组件集 【List】\n" +// "【delegate】 : 布局代理 【MultiChildLayoutDelegate】", +// } + + +class CustomMultiChildLayoutDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + width: 300, + height: 150, + color: Colors.grey.withAlpha(33), + child: CustomMultiChildLayout( + delegate: CornerCustomMultiChildLayout( + padding:EdgeInsets.only(left: 10,top: 5,right: 10,bottom: 5), + ), + children: [ + LayoutId(id: CornerType.topLeft, child: Box50(Colors.red)), + LayoutId(id: CornerType.topRight, child: Box50(Colors.yellow)), + LayoutId(id: CornerType.bottomLeft, child: Box50(Colors.blue)), + LayoutId(id: CornerType.bottomRight, child: Box50(Colors.green)), + ], + ), + ); + } +} + +// 50 颜射盒 +class Box50 extends StatelessWidget { + final Color color; + Box50(this.color); + + @override + Widget build(BuildContext context) { + return Container( + width: 50, + height: 50, + color: color, + ); + } +} + + +enum CornerType{ + topLeft, + topRight, + bottomLeft, + bottomRight +} + + +class CornerCustomMultiChildLayout extends MultiChildLayoutDelegate{ + final EdgeInsets padding; + + CornerCustomMultiChildLayout({this.padding = EdgeInsets.zero}); + + @override + void performLayout(Size size) { + if (hasChild(CornerType.topLeft)) { + layoutChild(CornerType.topLeft, BoxConstraints.loose(size)); + positionChild(CornerType.topLeft, Offset.zero.translate(padding.left, padding.top)); + } + if (hasChild(CornerType.topRight)) { + var childSize = layoutChild(CornerType.topRight, BoxConstraints.loose(size)); + positionChild(CornerType.topRight, Offset(size.width-childSize.width,0).translate(-padding.right, padding.top)); + } + if (hasChild(CornerType.bottomLeft)) { + var childSize = layoutChild(CornerType.bottomLeft, BoxConstraints.loose(size)); + positionChild(CornerType.bottomLeft, Offset(0,size.height-childSize.height).translate(padding.left, -padding.bottom)); + } + if (hasChild(CornerType.bottomRight)) { + var childSize = layoutChild(CornerType.bottomRight, BoxConstraints.loose(size)); + positionChild(CornerType.bottomRight, Offset(size.width-childSize.width,size.height-childSize.height).translate(-padding.right, -padding.bottom)); + } + } + + @override + bool shouldRelayout(CornerCustomMultiChildLayout oldDelegate) => oldDelegate.padding!=padding; + +} + diff --git a/lib/views/widgets/ProxyWidget/LayoutId/node1_base.dart b/lib/views/widgets/ProxyWidget/LayoutId/node1_base.dart new file mode 100644 index 0000000..b4215aa --- /dev/null +++ b/lib/views/widgets/ProxyWidget/LayoutId/node1_base.dart @@ -0,0 +1,94 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/6/6 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 315, +// "name": 'LayoutId使用场景', +// "priority": 1, +// "subtitle": +// "【id】 : 标识id 【Object】\n" +// "【child】 : 子组件 【Widget】", +// } + + +class LayoutIdDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + width: 300, + height: 150, + color: Colors.grey.withAlpha(33), + child: CustomMultiChildLayout( + delegate: CornerCustomMultiChildLayout( + padding:EdgeInsets.only(left: 10,top: 5,right: 10,bottom: 5), + ), + children: [ + LayoutId(id: CornerType.topLeft, child: Box50(Colors.red)), + LayoutId(id: CornerType.topRight, child: Box50(Colors.yellow)), + LayoutId(id: CornerType.bottomLeft, child: Box50(Colors.blue)), + LayoutId(id: CornerType.bottomRight, child: Box50(Colors.green)), + ], + ), + ); + } +} + +// 50 颜射盒 +class Box50 extends StatelessWidget { + final Color color; + Box50(this.color); + + @override + Widget build(BuildContext context) { + return Container( + width: 50, + height: 50, + color: color, + ); + } +} + + +enum CornerType{ + topLeft, + topRight, + bottomLeft, + bottomRight +} + + +class CornerCustomMultiChildLayout extends MultiChildLayoutDelegate{ + final EdgeInsets padding; + + CornerCustomMultiChildLayout({this.padding = EdgeInsets.zero}); + + @override + void performLayout(Size size) { + if (hasChild(CornerType.topLeft)) { + layoutChild(CornerType.topLeft, BoxConstraints.loose(size)); + positionChild(CornerType.topLeft, Offset.zero.translate(padding.left, padding.top)); + } + if (hasChild(CornerType.topRight)) { + var childSize = layoutChild(CornerType.topRight, BoxConstraints.loose(size)); + positionChild(CornerType.topRight, Offset(size.width-childSize.width,0).translate(-padding.right, padding.top)); + } + if (hasChild(CornerType.bottomLeft)) { + var childSize = layoutChild(CornerType.bottomLeft, BoxConstraints.loose(size)); + positionChild(CornerType.bottomLeft, Offset(0,size.height-childSize.height).translate(padding.left, -padding.bottom)); + } + if (hasChild(CornerType.bottomRight)) { + var childSize = layoutChild(CornerType.bottomRight, BoxConstraints.loose(size)); + positionChild(CornerType.bottomRight, Offset(size.width-childSize.width,size.height-childSize.height).translate(-padding.right, -padding.bottom)); + } + } + + @override + bool shouldRelayout(CornerCustomMultiChildLayout oldDelegate) => oldDelegate.padding!=padding; + +} + diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/node2_bezier.dart b/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/node2_bezier.dart index 240b1b2..279e636 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/node2_bezier.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/node2_bezier.dart @@ -36,14 +36,16 @@ class _PlayBezier3PageState extends State { _pos.add(Offset(-120, -40)); } + @override Widget build(BuildContext context) { - return Container( - height: 200, - width: MediaQuery.of(context).size.width, - child: CustomPaint( - painter: BezierPainter(pos: _pos, selectPos: selectPos), - ), + return Container( + height: 200, + width: MediaQuery.of(context).size.width, + child: CustomPaint( + painter: BezierPainter(pos: _pos, selectPos: selectPos), + ), + ); } } @@ -83,12 +85,12 @@ class BezierPainter extends CustomPainter { _drawGrid(canvas, size); //绘制格线 _drawAxis(canvas, size); //绘制轴线 - _mainPath.moveTo(pos[0].dx, pos[0].dy); - _mainPath.cubicTo( - pos[1].dx, pos[1].dy, pos[2].dx, pos[2].dy, pos[3].dx, pos[3].dy); - canvas.drawPath(_mainPath, _mainPaint); - _drawHelp(canvas); - _drawSelectPos(canvas); + _mainPath.moveTo(pos[0].dx, pos[0].dy); + _mainPath.cubicTo(pos[1].dx, pos[1].dy, pos[2].dx, pos[2].dy, pos[3].dx, pos[3].dy); + canvas.drawPath(_mainPath, _mainPaint); + _drawHelp(canvas); + _drawSelectPos(canvas); + } @override @@ -168,4 +170,4 @@ class BezierPainter extends CustomPainter { ..color = Colors.green ..strokeWidth = 2); } -} +} \ No newline at end of file diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Padding/node1_base.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Padding/node1_base.dart deleted file mode 100644 index f7603b4..0000000 --- a/lib/views/widgets/SingleChildRenderObjectWidget/Padding/node1_base.dart +++ /dev/null @@ -1,38 +0,0 @@ -import 'package:flutter/material.dart'; -/// create by 张风捷特烈 on 2020-04-19 -/// contact me by email 1981462002@qq.com -/// 说明: - -// { -// "widgetId": 74, -// "name": 'Padding基本使用', -// "priority": 1, -// "subtitle": -// "【child】 : 孩子组件 【Widget】\n" -// "【padding】 : 内四边距 【EdgeInsetsGeometry】", -// } -class CustomPadding extends StatelessWidget { - - @override - Widget build(BuildContext context) { - return Container( - color: Colors.grey.withAlpha(22), - width: 200, - height: 150, - child: Padding( - padding: EdgeInsets.all(20), - child: _buildChild(), - ), - ); - } - - Widget _buildChild() { - return Container( - alignment: Alignment.center, - color: Colors.cyanAccent, - width: 100, - height: 100, - child: Text("孩子"), - ); - } -} diff --git a/lib/views/widgets/exp/proxy_unit.dart b/lib/views/widgets/exp/proxy_unit.dart index ee22856..4eb0ab3 100644 --- a/lib/views/widgets/exp/proxy_unit.dart +++ b/lib/views/widgets/exp/proxy_unit.dart @@ -16,4 +16,5 @@ export '../ProxyWidget/DividerTheme/node1_base.dart'; export '../ProxyWidget/IconTheme/node1_base.dart'; export '../ProxyWidget/ScrollConfiguration/node1_base.dart'; export '../ProxyWidget/Expanded/node1_base.dart'; -export '../ProxyWidget/Positioned/node1_base.dart'; \ No newline at end of file +export '../ProxyWidget/Positioned/node1_base.dart'; +export '../ProxyWidget/LayoutId/node1_base.dart'; \ No newline at end of file diff --git a/lib/views/widgets/exp/render_object_unit.dart b/lib/views/widgets/exp/render_object_unit.dart index d3a640c..696e797 100644 --- a/lib/views/widgets/exp/render_object_unit.dart +++ b/lib/views/widgets/exp/render_object_unit.dart @@ -21,7 +21,7 @@ export '../MultiChildRenderObjectWidget/Wrap/node5_verticalDirection.dart'; export '../MultiChildRenderObjectWidget/Column/node1_base.dart'; export '../MultiChildRenderObjectWidget/IndexedStack/node1_base.dart'; export '../MultiChildRenderObjectWidget/Row/node1_base.dart'; - +export '../MultiChildRenderObjectWidget/CustomMultiChildLayout/node1_base.dart'; export '../SingleChildRenderObjectWidget/Align/node1_base.dart'; export '../SingleChildRenderObjectWidget/Align/node2_other.dart'; diff --git a/lib/views/widgets/widgets_map.dart b/lib/views/widgets/widgets_map.dart index e97dd11..a10026a 100644 --- a/lib/views/widgets/widgets_map.dart +++ b/lib/views/widgets/widgets_map.dart @@ -229,6 +229,14 @@ class WidgetsMap { return [ CustomRadio(), ]; + case "CustomMultiChildLayout": + return [ + CustomMultiChildLayoutDemo(), + ]; + case "LayoutId": + return [ + LayoutIdDemo(), + ]; case "CircularProgressIndicator": return [ CustomCircularProgressIndicator(),