diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Column.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Column/node1_base.dart similarity index 95% rename from lib/views/widgets/MultiChildRenderObjectWidget/Column.dart rename to lib/views/widgets/MultiChildRenderObjectWidget/Column/node1_base.dart index bd3b370..66828d1 100644 --- a/lib/views/widgets/MultiChildRenderObjectWidget/Column.dart +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Column/node1_base.dart @@ -1,6 +1,8 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; - +/// create by 张风捷特烈 on 2020-03-30 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 95, // "name": 'Column基本使用', diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Flex.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Flex.dart deleted file mode 100644 index e42962e..0000000 --- a/lib/views/widgets/MultiChildRenderObjectWidget/Flex.dart +++ /dev/null @@ -1,463 +0,0 @@ -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; - - - -// { -// "widgetId": 94, -// "name": 'Flex的排布方向基本使用', -// "priority": 1, -// "subtitle": -// "【children】 : 组件列表 【List】\n" -// "【direction】 : 方向 【Axis】", -// } -class DirectionFlex extends StatelessWidget { - - final redBox= Container( - color: Colors.red, - height: 30, - width: 40, - ); - - final blueBox= Container( - color: Colors.blue, - height: 20, - width: 30, - ); - - final greenBox= Container( - color: Colors.green, - height: 20, - width: 20, - ); - - @override - Widget build(BuildContext context) { - return Wrap( - children: Axis.values - .map((mode) => Column(children: [ - Container( - margin: EdgeInsets.all(5), - width: 160, - height: 80, - color: Colors.grey.withAlpha(33), - child: _buildItem(mode)), - Text(mode.toString().split('.')[1]) - ])) - .toList()); - } - - _buildItem(mode) => Flex( - direction: mode, - children: [ - blueBox, redBox, greenBox - ], - ); -} - -// { -// "widgetId": 94, -// "name": 'Flex主轴对齐方式', -// "priority": 2, -// "subtitle": -// "【mainAxisAlignment】 : 主轴对齐 【MainAxisAlignment】", -// } -class MainAxisAlignmentFlex extends StatelessWidget { - - final redBox= Container( - color: Colors.red, - height: 30, - width: 40, - ); - - final blueBox= Container( - color: Colors.blue, - height: 20, - width: 30, - ); - - final greenBox= Container( - color: Colors.green, - height: 20, - width: 20, - ); - - @override - Widget build(BuildContext context) { - return Wrap( - runSpacing: 5, - children: MainAxisAlignment.values - .map((mode) => Column(children: [ - Container( - margin: EdgeInsets.all(5), - width: 160, - height: 80, - color: Colors.grey.withAlpha(33), - child: _buildItem(mode)), - Text(mode.toString().split('.')[1]) - ])) - .toList()); - } - - _buildItem(mode) => Flex( - direction: Axis.horizontal, - mainAxisAlignment: mode, - children: [ - blueBox, redBox, greenBox - ], - ); -} - - -// { -// "widgetId": 94, -// "name": 'Flex交叉轴对齐方式', -// "priority": 3, -// "subtitle": -// "【crossAxisAlignment】 : 交叉轴对齐 【CrossAxisAlignment】", -// } -class CrossAxisAlignmentFlex extends StatelessWidget { - - final redBox= Container( - color: Colors.red, - height: 30, - width: 40, - ); - - final blueBox= Container( - color: Colors.blue, - height: 20, - width: 30, - ); - - final greenBox= Container( - color: Colors.green, - height: 20, - width: 20, - ); - - @override - Widget build(BuildContext context) { - return Wrap( - runSpacing: 5, - children: CrossAxisAlignment.values - .map((mode) => Column(children: [ - Container( - margin: EdgeInsets.all(5), - width: 160, - height: 80, - color: Colors.grey.withAlpha(33), - child: _buildItem(mode)), - Text(mode.toString().split('.')[1]) - ])) - .toList()); - } - - _buildItem(mode) => Flex( - direction: Axis.horizontal, - crossAxisAlignment: mode, - textBaseline: TextBaseline.alphabetic, - children: [ - blueBox, redBox, greenBox - ], - ); -} -// { -// "widgetId": 94, -// "name": 'Flex垂直方向顺序', -// "priority": 4, -// "subtitle": -// "【verticalDirection】 : 垂直方向顺序 【VerticalDirection】", -// } -class VerticalDirectionFlex extends StatelessWidget { - - final redBox= Container( - color: Colors.red, - height: 30, - width: 40, - ); - - final blueBox= Container( - color: Colors.blue, - height: 20, - width: 30, - ); - - final greenBox= Container( - color: Colors.green, - height: 20, - width: 20, - ); - - @override - Widget build(BuildContext context) { - return Wrap( - runSpacing: 5, - children: VerticalDirection.values - .map((mode) => Column(children: [ - Container( - margin: EdgeInsets.all(5), - width: 160, - height: 80, - color: Colors.grey.withAlpha(33), - child: _buildItem(mode)), - Text(mode.toString().split('.')[1]) - ])) - .toList()); - } - - _buildItem(mode) => Flex( - direction: Axis.vertical, - verticalDirection: mode, - children: [ - blueBox, redBox, greenBox - ], - ); -} -// { -// "widgetId": 94, -// "name": 'Flex水平方向顺序', -// "priority": 5, -// "subtitle": -// "【textDirection】 : 水平方向顺序 【TextDirection】", -// } -class TextDirectionFlex extends StatelessWidget { - - final redBox= Container( - color: Colors.red, - height: 30, - width: 40, - ); - - final blueBox= Container( - color: Colors.blue, - height: 20, - width: 30, - ); - - final greenBox= Container( - color: Colors.green, - height: 20, - width: 20, - ); - - @override - Widget build(BuildContext context) { - return Wrap( - runSpacing: 5, - children: TextDirection.values - .map((mode) => Column(children: [ - Container( - margin: EdgeInsets.all(5), - width: 160, - height: 80, - color: Colors.grey.withAlpha(33), - child: _buildItem(mode)), - Text(mode.toString().split('.')[1]) - ])) - .toList()); - } - - _buildItem(mode) => Flex( - direction: Axis.horizontal, - textDirection: mode, - children: [ - blueBox, redBox, greenBox - ], - ); -} - - -// { -// "widgetId": 94, -// "name": 'Flex主轴对齐方式', -// "priority": 1, -// "subtitle": -// "【children】 : 组件列表 【List】\n" -// "【direction】 : 方向 【Axis】\n" -// "【mainAxisAlignment】 : 主轴对齐 【MainAxisAlignment】\n" -// "【crossAxisAlignment】 : 交叉轴对齐 【CrossAxisAlignment】\n" -// "【textBaseline】 : 文字基线 【TextBaseline】\n" -// "【verticalDirection】 : 竖直方向 【VerticalDirection】\n" -// "【mainAxisSize】 : 主轴尺寸 【MainAxisSize】", -// } -class PlayFlex extends StatefulWidget { - @override - _PlayFlexState createState() => _PlayFlexState(); -} - -class _PlayFlexState extends State { - final redBox = Container( - color: Colors.red, - height: 50, - width: 50, - ); - final blueBox = Container( - color: Colors.blue, - width: 60, - height: 60, - ); - final yellowBox = Container( - color: Colors.yellow, - height: 10, - width: 10, - ); - final greenBox = Container( - color: Colors.green, - height: 30, - width: 20, - ); - var _direction = Axis.horizontal; - var _mainAxisAlignment = MainAxisAlignment.start; - var _crossAxisAlignment = CrossAxisAlignment.center; - var _verticalDirection = VerticalDirection.up; - - @override - Widget build(BuildContext context) { - return Column( - children: [ - _buildDirectionSelector(), - _buildMainAxisAlignmentSelector(), - _buildCrossAxisAlignmentSelector(), - _buildVerticalDirectionSelector(), - Container( - width: 300, - height: 300 * 0.618, - color: Colors.grey.withAlpha(33), - child: Flex( - textBaseline: TextBaseline.alphabetic, - direction: _direction, - mainAxisAlignment: _mainAxisAlignment, - crossAxisAlignment: _crossAxisAlignment, - verticalDirection: _verticalDirection, - children: [redBox, blueBox, yellowBox, greenBox], - ), - ), - ], - ); - } - - Widget _buildDirectionSelector() { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 10), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "direction", - style: TextStyle( - fontSize: 16, color: Colors.blue, fontWeight: FontWeight.bold), - ), - DropdownButton( - elevation: 1, - underline: Container(), - value: _direction, - items: Axis.values - .map((e) => DropdownMenuItem( - value: e, - child: Text(e.toString()), - )) - .toList(), - onChanged: (e) { - setState(() { - _direction = e; - }); - }), - ], - ), - ); - } - - Widget _buildMainAxisAlignmentSelector() { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 10), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "mainAxisAlignment", - style: TextStyle( - fontSize: 16, color: Colors.blue, fontWeight: FontWeight.bold), - ), - DropdownButton( - elevation: 1, - underline: Container(), - value: _mainAxisAlignment, - items: MainAxisAlignment.values - .map((e) => DropdownMenuItem( - value: e, - child: Text(e.toString().split('.')[1]), - )) - .toList(), - onChanged: (e) { - setState(() { - _mainAxisAlignment = e; - }); - }), - ], - ), - ); - } - - Widget _buildCrossAxisAlignmentSelector() { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 10), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "crossAxisAlignment", - style: TextStyle( - fontSize: 16, color: Colors.blue, fontWeight: FontWeight.bold), - ), - DropdownButton( - elevation: 1, - underline: Container(), - value: _crossAxisAlignment, - items: CrossAxisAlignment.values - .map((e) => DropdownMenuItem( - value: e, - child: Text(e.toString().split('.')[1]), - )) - .toList(), - onChanged: (e) { - setState(() { - _crossAxisAlignment = e; - }); - }), - ], - ), - ); - } - - Widget _buildVerticalDirectionSelector() { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 10), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "MainAxisSize", - style: TextStyle( - fontSize: 16, color: Colors.blue, fontWeight: FontWeight.bold), - ), - DropdownButton( - elevation: 1, - underline: Container(), - value: _verticalDirection, - items: VerticalDirection.values - .map((e) => DropdownMenuItem( - value: e, - child: Text(e.toString().split('.')[1]), - )) - .toList(), - onChanged: (e) { - setState(() { - _verticalDirection = e; - }); - }), - ], - ), - ); - } -} \ No newline at end of file diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node1_direction.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node1_direction.dart new file mode 100644 index 0000000..c3beea8 --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node1_direction.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 94, +// "name": 'Flex的排布方向基本使用', +// "priority": 1, +// "subtitle": +// "【children】 : 组件列表 【List】\n" +// "【direction】 : 方向 【Axis】", +// } +class DirectionFlex extends StatelessWidget { + + final redBox= Container( + color: Colors.red, + height: 30, + width: 40, + ); + + final blueBox= Container( + color: Colors.blue, + height: 20, + width: 30, + ); + + final greenBox= Container( + color: Colors.green, + height: 20, + width: 20, + ); + + @override + Widget build(BuildContext context) { + return Wrap( + children: Axis.values + .map((mode) => Column(children: [ + Container( + margin: EdgeInsets.all(5), + width: 160, + height: 80, + color: Colors.grey.withAlpha(33), + child: _buildItem(mode)), + Text(mode.toString().split('.')[1]) + ])) + .toList()); + } + + _buildItem(mode) => Flex( + direction: mode, + children: [ + blueBox, redBox, greenBox + ], + ); +} \ No newline at end of file diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node2_mainAxisAlignment.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node2_mainAxisAlignment.dart new file mode 100644 index 0000000..94e1f13 --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node2_mainAxisAlignment.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 94, +// "name": 'Flex主轴对齐方式', +// "priority": 2, +// "subtitle": +// "【mainAxisAlignment】 : 主轴对齐 【MainAxisAlignment】", +// } +class MainAxisAlignmentFlex extends StatelessWidget { + + final redBox= Container( + color: Colors.red, + height: 30, + width: 40, + ); + + final blueBox= Container( + color: Colors.blue, + height: 20, + width: 30, + ); + + final greenBox= Container( + color: Colors.green, + height: 20, + width: 20, + ); + + @override + Widget build(BuildContext context) { + return Wrap( + runSpacing: 5, + children: MainAxisAlignment.values + .map((mode) => Column(children: [ + Container( + margin: EdgeInsets.all(5), + width: 160, + height: 80, + color: Colors.grey.withAlpha(33), + child: _buildItem(mode)), + Text(mode.toString().split('.')[1]) + ])) + .toList()); + } + + _buildItem(mode) => Flex( + direction: Axis.horizontal, + mainAxisAlignment: mode, + children: [ + blueBox, redBox, greenBox + ], + ); +} \ No newline at end of file diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node3_crossAxisAlignment.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node3_crossAxisAlignment.dart new file mode 100644 index 0000000..e5570db --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node3_crossAxisAlignment.dart @@ -0,0 +1,59 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 94, +// "name": 'Flex交叉轴对齐方式', +// "priority": 3, +// "subtitle": +// "【crossAxisAlignment】 : 交叉轴对齐 【CrossAxisAlignment】", +// } +class CrossAxisAlignmentFlex extends StatelessWidget { + + final redBox= Container( + color: Colors.red, + height: 30, + width: 40, + ); + + final blueBox= Container( + color: Colors.blue, + height: 20, + width: 30, + ); + + final greenBox= Container( + color: Colors.green, + height: 20, + width: 20, + ); + + @override + Widget build(BuildContext context) { + return Wrap( + runSpacing: 5, + children: CrossAxisAlignment.values + .map((mode) => Column(children: [ + Container( + margin: EdgeInsets.all(5), + width: 160, + height: 80, + color: Colors.grey.withAlpha(33), + child: _buildItem(mode)), + Text(mode.toString().split('.')[1]) + ])) + .toList()); + } + + _buildItem(mode) => Flex( + direction: Axis.horizontal, + crossAxisAlignment: mode, + textBaseline: TextBaseline.alphabetic, + children: [ + blueBox, redBox, greenBox + ], + ); +} \ No newline at end of file diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node4_verticalDirection.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node4_verticalDirection.dart new file mode 100644 index 0000000..2a6f4f6 --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node4_verticalDirection.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 94, +// "name": 'Flex垂直方向顺序', +// "priority": 4, +// "subtitle": +// "【verticalDirection】 : 垂直方向顺序 【VerticalDirection】", +// } +class VerticalDirectionFlex extends StatelessWidget { + + final redBox= Container( + color: Colors.red, + height: 30, + width: 40, + ); + + final blueBox= Container( + color: Colors.blue, + height: 20, + width: 30, + ); + + final greenBox= Container( + color: Colors.green, + height: 20, + width: 20, + ); + + @override + Widget build(BuildContext context) { + return Wrap( + runSpacing: 5, + children: VerticalDirection.values + .map((mode) => Column(children: [ + Container( + margin: EdgeInsets.all(5), + width: 160, + height: 80, + color: Colors.grey.withAlpha(33), + child: _buildItem(mode)), + Text(mode.toString().split('.')[1]) + ])) + .toList()); + } + + _buildItem(mode) => Flex( + direction: Axis.vertical, + verticalDirection: mode, + children: [ + blueBox, redBox, greenBox + ], + ); +} diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node5_textDirection.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node5_textDirection.dart new file mode 100644 index 0000000..d5c1a77 --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Flex/node5_textDirection.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 94, +// "name": 'Flex水平方向顺序', +// "priority": 5, +// "subtitle": +// "【textDirection】 : 水平方向顺序 【TextDirection】", +// } +class TextDirectionFlex extends StatelessWidget { + + final redBox= Container( + color: Colors.red, + height: 30, + width: 40, + ); + + final blueBox= Container( + color: Colors.blue, + height: 20, + width: 30, + ); + + final greenBox= Container( + color: Colors.green, + height: 20, + width: 20, + ); + + @override + Widget build(BuildContext context) { + return Wrap( + runSpacing: 5, + children: TextDirection.values + .map((mode) => Column(children: [ + Container( + margin: EdgeInsets.all(5), + width: 160, + height: 80, + color: Colors.grey.withAlpha(33), + child: _buildItem(mode)), + Text(mode.toString().split('.')[1]) + ])) + .toList()); + } + + _buildItem(mode) => Flex( + direction: Axis.horizontal, + textDirection: mode, + children: [ + blueBox, redBox, greenBox + ], + ); +} \ No newline at end of file diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Flex/zz_node_play.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Flex/zz_node_play.dart new file mode 100644 index 0000000..3f6e49a --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Flex/zz_node_play.dart @@ -0,0 +1,186 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +class PlayFlex extends StatefulWidget { + @override + _PlayFlexState createState() => _PlayFlexState(); +} + +class _PlayFlexState extends State { + final redBox = Container( + color: Colors.red, + height: 50, + width: 50, + ); + final blueBox = Container( + color: Colors.blue, + width: 60, + height: 60, + ); + final yellowBox = Container( + color: Colors.yellow, + height: 10, + width: 10, + ); + final greenBox = Container( + color: Colors.green, + height: 30, + width: 20, + ); + var _direction = Axis.horizontal; + var _mainAxisAlignment = MainAxisAlignment.start; + var _crossAxisAlignment = CrossAxisAlignment.center; + var _verticalDirection = VerticalDirection.up; + + @override + Widget build(BuildContext context) { + return Column( + children: [ + _buildDirectionSelector(), + _buildMainAxisAlignmentSelector(), + _buildCrossAxisAlignmentSelector(), + _buildVerticalDirectionSelector(), + Container( + width: 300, + height: 300 * 0.618, + color: Colors.grey.withAlpha(33), + child: Flex( + textBaseline: TextBaseline.alphabetic, + direction: _direction, + mainAxisAlignment: _mainAxisAlignment, + crossAxisAlignment: _crossAxisAlignment, + verticalDirection: _verticalDirection, + children: [redBox, blueBox, yellowBox, greenBox], + ), + ), + ], + ); + } + + Widget _buildDirectionSelector() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + "direction", + style: TextStyle( + fontSize: 16, color: Colors.blue, fontWeight: FontWeight.bold), + ), + DropdownButton( + elevation: 1, + underline: Container(), + value: _direction, + items: Axis.values + .map((e) => DropdownMenuItem( + value: e, + child: Text(e.toString()), + )) + .toList(), + onChanged: (e) { + setState(() { + _direction = e; + }); + }), + ], + ), + ); + } + + Widget _buildMainAxisAlignmentSelector() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + "mainAxisAlignment", + style: TextStyle( + fontSize: 16, color: Colors.blue, fontWeight: FontWeight.bold), + ), + DropdownButton( + elevation: 1, + underline: Container(), + value: _mainAxisAlignment, + items: MainAxisAlignment.values + .map((e) => DropdownMenuItem( + value: e, + child: Text(e.toString().split('.')[1]), + )) + .toList(), + onChanged: (e) { + setState(() { + _mainAxisAlignment = e; + }); + }), + ], + ), + ); + } + + Widget _buildCrossAxisAlignmentSelector() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + "crossAxisAlignment", + style: TextStyle( + fontSize: 16, color: Colors.blue, fontWeight: FontWeight.bold), + ), + DropdownButton( + elevation: 1, + underline: Container(), + value: _crossAxisAlignment, + items: CrossAxisAlignment.values + .map((e) => DropdownMenuItem( + value: e, + child: Text(e.toString().split('.')[1]), + )) + .toList(), + onChanged: (e) { + setState(() { + _crossAxisAlignment = e; + }); + }), + ], + ), + ); + } + + Widget _buildVerticalDirectionSelector() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + "MainAxisSize", + style: TextStyle( + fontSize: 16, color: Colors.blue, fontWeight: FontWeight.bold), + ), + DropdownButton( + elevation: 1, + underline: Container(), + value: _verticalDirection, + items: VerticalDirection.values + .map((e) => DropdownMenuItem( + value: e, + child: Text(e.toString().split('.')[1]), + )) + .toList(), + onChanged: (e) { + setState(() { + _verticalDirection = e; + }); + }), + ], + ), + ); + } +} \ No newline at end of file diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Flow/node1_base.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Flow/node1_base.dart new file mode 100644 index 0000000..d134b50 --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Flow/node1_base.dart @@ -0,0 +1,61 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-03-30 +/// contact me by email 1981462002@qq.com +/// 说明: +// { +// "widgetId": 99, +// "name": 'Flow圆形排布', +// "priority": 1, +// "subtitle": +// "【children】 : 组件列表 【List】\n" +// "【delegate】 : 代理 【FlowDelegate】", +// } +class CircleFlow extends StatelessWidget { + final data = List.generate( + 16, + (index) => index.isEven + ? "assets/images/icon_head.png" + : "assets/images/wy_300x200.jpg"); + + @override + Widget build(BuildContext context) { + return Container( + width: 300, + height: 300, + alignment: Alignment.center, + child: Flow( + delegate: _CircleFlowDelegate(), + children: data + .map((e) => CircleAvatar(backgroundImage: AssetImage(e))) + .toList(), + ), + ); + } +} + +class _CircleFlowDelegate extends FlowDelegate { + @override //绘制孩子的方法 + void paintChildren(FlowPaintingContext context) { + double radius = context.size.shortestSide / 2; + print(context.getChildSize(0)); + var count = context.childCount; + var perRad = 2 * pi / count; + for (int i = 0; i < count; i++) { + var cSizeX = context.getChildSize(i).width / 2; + var cSizeY = context.getChildSize(i).height / 2; + + var offsetX = (radius - cSizeX) * cos(i * perRad) + radius; + var offsetY = (radius - cSizeY) * sin(i * perRad) + radius; + context.paintChild(i, + transform: Matrix4.translationValues( + offsetX - cSizeX, offsetY - cSizeY, 0.0)); + } + } + + @override + bool shouldRepaint(FlowDelegate oldDelegate) { + return true; + } +} diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Flow.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Flow/node2_anim.dart similarity index 66% rename from lib/views/widgets/MultiChildRenderObjectWidget/Flow.dart rename to lib/views/widgets/MultiChildRenderObjectWidget/Flow/node2_anim.dart index bdc9848..9a37c0c 100644 --- a/lib/views/widgets/MultiChildRenderObjectWidget/Flow.dart +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Flow/node2_anim.dart @@ -1,63 +1,9 @@ import 'dart:math'; import 'package:flutter/material.dart'; - -// { -// "widgetId": 99, -// "name": 'Flow圆形排布', -// "priority": 1, -// "subtitle": -// "【children】 : 组件列表 【List】\n" -// "【delegate】 : 代理 【FlowDelegate】", -// } -class CircleFlow extends StatelessWidget { - final data = List.generate( - 16, - (index) => index.isEven - ? "assets/images/icon_head.png" - : "assets/images/wy_300x200.jpg"); - - @override - Widget build(BuildContext context) { - return Container( - width: 300, - height: 300, - alignment: Alignment.center, - child: Flow( - delegate: _CircleFlowDelegate(), - children: data - .map((e) => CircleAvatar(backgroundImage: AssetImage(e))) - .toList(), - ), - ); - } -} - -class _CircleFlowDelegate extends FlowDelegate { - @override //绘制孩子的方法 - void paintChildren(FlowPaintingContext context) { - double radius = context.size.shortestSide / 2; - print(context.getChildSize(0)); - var count = context.childCount; - var perRad = 2 * pi / count; - for (int i = 0; i < count; i++) { - var cSizeX = context.getChildSize(i).width / 2; - var cSizeY = context.getChildSize(i).height / 2; - - var offsetX = (radius - cSizeX) * cos(i * perRad) + radius; - var offsetY = (radius - cSizeY) * sin(i * perRad) + radius; - context.paintChild(i, - transform: Matrix4.translationValues( - offsetX - cSizeX, offsetY - cSizeY, 0.0)); - } - } - - @override - bool shouldRepaint(FlowDelegate oldDelegate) { - return true; - } -} - +/// create by 张风捷特烈 on 2020-03-30 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 99, // "name": 'Flow圆形与动画结合', @@ -110,7 +56,6 @@ class _BurstFlowState extends State _closed = !_closed; } }); - super.initState(); } diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/IndexedStack.dart b/lib/views/widgets/MultiChildRenderObjectWidget/IndexedStack/node1_base.dart similarity index 100% rename from lib/views/widgets/MultiChildRenderObjectWidget/IndexedStack.dart rename to lib/views/widgets/MultiChildRenderObjectWidget/IndexedStack/node1_base.dart diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/RichText.dart b/lib/views/widgets/MultiChildRenderObjectWidget/RichText/node1_base.dart similarity index 52% rename from lib/views/widgets/MultiChildRenderObjectWidget/RichText.dart rename to lib/views/widgets/MultiChildRenderObjectWidget/RichText/node1_base.dart index 5887037..842a695 100644 --- a/lib/views/widgets/MultiChildRenderObjectWidget/RichText.dart +++ b/lib/views/widgets/MultiChildRenderObjectWidget/RichText/node1_base.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_unit/app/utils/color_utils.dart'; - +/// create by 张风捷特烈 on 2020-03-30 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 101, // "name": 'RichText基本使用', @@ -38,56 +40,3 @@ class CustomRichText extends StatelessWidget { ); } } - -// { -// "widgetId": 101, -// "name": 'RichText包含其他组件', -// "priority": 2, -// "subtitle": -// "使用WidgetSpan来承载普通组件,作为RichText的内容", -// } -class RichTextWithWidget extends StatelessWidget { - @override - Widget build(BuildContext context) { - return RichText( - text: TextSpan( - text: 'hello ', - style: TextStyle(color: Colors.black, fontSize: 18), - children: [ - WidgetSpan( - child: Image.asset( - 'assets/images/icon_head.png', - width: 30, - ), - alignment: PlaceholderAlignment.baseline, - baseline: TextBaseline.ideographic), - TextSpan( - text: ' , welcome to ', - style: TextStyle(color: Colors.blue, fontSize: 18), - ), - WidgetSpan( - child: FlutterLogo(), - alignment: PlaceholderAlignment.baseline, - baseline: TextBaseline.ideographic), - TextSpan( - text: ' .\n', - ), - TextSpan( - text: 'focus me on ', - style: TextStyle(color: Colors.orange, fontSize: 16), - ), - TextSpan( - text: 'https://github.com/toly1994328', - style: TextStyle( - color: Colors.blue, - fontSize: 18, - decoration: TextDecoration.underline), - ), - TextSpan( - text: ' .\n', - ), - ], - ), - ); - } -} diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/RichText/node2_widget.dart b/lib/views/widgets/MultiChildRenderObjectWidget/RichText/node2_widget.dart new file mode 100644 index 0000000..de79363 --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/RichText/node2_widget.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_unit/app/utils/color_utils.dart'; +/// create by 张风捷特烈 on 2020-03-30 +/// contact me by email 1981462002@qq.com +/// 说明: +// { +// "widgetId": 101, +// "name": 'RichText包含其他组件', +// "priority": 2, +// "subtitle": +// "使用WidgetSpan来承载普通组件,作为RichText的内容", +// } +class RichTextWithWidget extends StatelessWidget { + @override + Widget build(BuildContext context) { + return RichText( + text: TextSpan( + text: 'hello ', + style: TextStyle(color: Colors.black, fontSize: 18), + children: [ + WidgetSpan( + child: Image.asset( + 'assets/images/icon_head.png', + width: 30, + ), + alignment: PlaceholderAlignment.baseline, + baseline: TextBaseline.ideographic), + TextSpan( + text: ' , welcome to ', + style: TextStyle(color: Colors.blue, fontSize: 18), + ), + WidgetSpan( + child: FlutterLogo(), + alignment: PlaceholderAlignment.baseline, + baseline: TextBaseline.ideographic), + TextSpan( + text: ' .\n', + ), + TextSpan( + text: 'focus me on ', + style: TextStyle(color: Colors.orange, fontSize: 16), + ), + TextSpan( + text: 'https://github.com/toly1994328', + style: TextStyle( + color: Colors.blue, + fontSize: 18, + decoration: TextDecoration.underline), + ), + TextSpan( + text: ' .\n', + ), + ], + ), + ); + } +} diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Row.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Row/node1_base.dart similarity index 93% rename from lib/views/widgets/MultiChildRenderObjectWidget/Row.dart rename to lib/views/widgets/MultiChildRenderObjectWidget/Row/node1_base.dart index ddcac5d..04bea20 100644 --- a/lib/views/widgets/MultiChildRenderObjectWidget/Row.dart +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Row/node1_base.dart @@ -1,5 +1,8 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-03-30 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 95, // "name": 'Row基本使用', diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Stack.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Stack/node1_base.dart similarity index 54% rename from lib/views/widgets/MultiChildRenderObjectWidget/Stack.dart rename to lib/views/widgets/MultiChildRenderObjectWidget/Stack/node1_base.dart index ad1d45f..6fca46e 100644 --- a/lib/views/widgets/MultiChildRenderObjectWidget/Stack.dart +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Stack/node1_base.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; - +/// create by 张风捷特烈 on 2020-03-30 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 97, // "name": 'Stack基本使用', @@ -51,54 +53,4 @@ class CustomStack extends StatelessWidget { ), ); } -} - -// { -// "widgetId": 97, -// "name": 'Stack和Positioned结合使用', -// "priority": 2, -// "subtitle": -// "Positioned组件只能用与Stack中,可以指定左上右下的距离对某个组件进行位置精确安放。", -// } -class PositionedStack extends StatelessWidget { - @override - Widget build(BuildContext context) { - var yellowBox = Container( - color: Colors.yellow, - height: 100, - width: 100, - ); - - var redBox = Container( - color: Colors.red, - height: 90, - width: 90, - ); - - var greenBox = Container( - color: Colors.green, - height: 80, - width: 80, - ); - - var cyanBox = Container( - color: Colors.cyanAccent, - height: 70, - width: 70, - ); - - return Container( - width: 200, - height: 120, - color: Colors.grey.withAlpha(33), - child: Stack( - children: [yellowBox, redBox, greenBox, - Positioned( - child: cyanBox, - bottom: 10, - right: 10, - ) - ], - )); - } -} +} \ No newline at end of file diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Stack/node2_positioned.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Stack/node2_positioned.dart new file mode 100644 index 0000000..b1d6feb --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Stack/node2_positioned.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-03-30 +/// contact me by email 1981462002@qq.com +/// 说明: +// { +// "widgetId": 97, +// "name": 'Stack和Positioned结合使用', +// "priority": 2, +// "subtitle": +// "Positioned组件只能用与Stack中,可以指定左上右下的距离对某个组件进行位置精确安放。", +// } +class PositionedStack extends StatelessWidget { + @override + Widget build(BuildContext context) { + var yellowBox = Container( + color: Colors.yellow, + height: 100, + width: 100, + ); + + var redBox = Container( + color: Colors.red, + height: 90, + width: 90, + ); + + var greenBox = Container( + color: Colors.green, + height: 80, + width: 80, + ); + + var cyanBox = Container( + color: Colors.cyanAccent, + height: 70, + width: 70, + ); + + return Container( + width: 200, + height: 120, + color: Colors.grey.withAlpha(33), + child: Stack( + children: [yellowBox, redBox, greenBox, + Positioned( + child: cyanBox, + bottom: 10, + right: 10, + ) + ], + )); + } +} diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Wrap.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Wrap.dart deleted file mode 100644 index 92293f8..0000000 --- a/lib/views/widgets/MultiChildRenderObjectWidget/Wrap.dart +++ /dev/null @@ -1,365 +0,0 @@ -import 'package:flutter/material.dart'; -// { -// "widgetId": 98, -// "name": 'Wrap的基础用法', -// "priority": 1, -// "subtitle": -// "【children】 : 组件列表 【List】\n" -// "【spacing】 : 主轴条目间距 【double】\n" -// "【runSpacing】 : 交叉轴条目间距 【double】\n" -// "【direction】 : 主轴对齐 【Axis】", -// } -class DirectionWrap extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Wrap( - children: Axis.values - .map((mode) => Column(children: [ - Container( - margin: EdgeInsets.all(5), - width: 160, - height: 100, - color: Colors.grey.withAlpha(33), - child: _buildItem(mode)), - Text(mode.toString().split('.')[1]) - ])) - .toList()); - } - final yellowBox = Container( - color: Colors.yellow, - height: 30, - width: 50, - ); - - final redBox = Container( - color: Colors.red, - height: 40, - width: 40, - ); - final greenBox = Container( - color: Colors.green, - height: 40, - width: 20, - ); - final blackBox = Container( - color: Colors.black, - height: 10, - width: 10, - ); - final purpleBox = Container( - color: Colors.purple, - height: 20, - width: 20, - ); - final orangeBox = Container( - color: Colors.orange, - height: 80, - width: 20, - ); - final cyanBox = Container( - color: Colors.cyanAccent, - height: 10, - width: 20, - ); - - _buildItem(mode) => Wrap( - direction: mode, - runSpacing: 10, - spacing: 10, - children: [ - yellowBox, redBox, greenBox, cyanBox, - blackBox, purpleBox, orangeBox, - ], - ); -} -// { -// "widgetId": 98, -// "name": 'Wrap的alignment属性', -// "priority": 2, -// "subtitle": -// "【alignment】 : 主轴对齐 【WrapAlignment】", -// } -class WrapAlignmentWrap extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Wrap( - children: WrapAlignment.values - .map((mode) => Column(children: [ - Container( - margin: EdgeInsets.all(5), - width: 160, - height: 100, - color: Colors.grey.withAlpha(88), - child: _buildItem(mode)), - Text(mode.toString().split('.')[1]) - ])) - .toList()); - } - - final yellowBox = Container( - color: Colors.yellow, - height: 30, - width: 50, - ); - - final redBox = Container( - color: Colors.red, - height: 40, - width: 40, - ); - final greenBox = Container( - color: Colors.green, - height: 40, - width: 20, - ); - final blackBox = Container( - color: Colors.black, - height: 10, - width: 10, - ); - final purpleBox = Container( - color: Colors.purple, - height: 20, - width: 20, - ); - final orangeBox = Container( - color: Colors.orange, - height: 80, - width: 20, - ); - final cyanBox = Container( - color: Colors.cyanAccent, - height: 10, - width: 20, - ); - - _buildItem(mode) => Wrap( - alignment: mode, - runSpacing: 10, - spacing: 10, - children: [ - yellowBox, redBox, - greenBox, cyanBox, - blackBox, purpleBox, - orangeBox, - ], - ); -} -// { -// "widgetId": 98, -// "name": 'Wrap的crossAxisAlignment属性', -// "priority": 3, -// "subtitle": -// "【crossAxisAlignment】 : 交叉轴对齐 【CrossAxisAlignment】", -// } -class CrossAxisAlignmentWrap extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Wrap( - children: WrapCrossAlignment.values - .map((mode) => Column(children: [ - Container( - margin: EdgeInsets.all(5), - width: 160, - height: 100, - color: Colors.grey.withAlpha(88), - child: _buildItem(mode)), - Text(mode.toString().split('.')[1]) - ])) - .toList()); - } - - final yellowBox = Container( - color: Colors.yellow, - height: 30, - width: 50, - ); - - final redBox = Container( - color: Colors.red, - height: 40, - width: 40, - ); - final greenBox = Container( - color: Colors.green, - height: 40, - width: 20, - ); - final blackBox = Container( - color: Colors.black, - height: 10, - width: 10, - ); - final purpleBox = Container( - color: Colors.purple, - height: 20, - width: 20, - ); - final orangeBox = Container( - color: Colors.orange, - height: 80, - width: 20, - ); - final cyanBox = Container( - color: Colors.cyanAccent, - height: 10, - width: 20, - ); - - _buildItem(mode) => Wrap( - crossAxisAlignment: mode, - runSpacing: 10, - spacing: 10, - children: [ - yellowBox, redBox, - greenBox, cyanBox, - blackBox, purpleBox, - orangeBox, - ], - ); -} - -// { -// "widgetId": 98, -// "name": 'Wrap的textDirection属性', -// "priority": 4, -// "subtitle": -// "【textDirection】 : 文字方向 【TextDirection】", -// } -class TextDirectionWrap extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Wrap( - children: TextDirection.values - .map((mode) => Column(children: [ - Container( - margin: EdgeInsets.all(5), - width: 160, - height: 100, - color: Colors.grey.withAlpha(88), - child: _buildItem(mode)), - Text(mode.toString().split('.')[1]) - ])) - .toList()); - } - - final yellowBox = Container( - color: Colors.yellow, - height: 30, - width: 50, - ); - - final redBox = Container( - color: Colors.red, - height: 40, - width: 40, - ); - final greenBox = Container( - color: Colors.green, - height: 40, - width: 20, - ); - final blackBox = Container( - color: Colors.black, - height: 10, - width: 10, - ); - final purpleBox = Container( - color: Colors.purple, - height: 20, - width: 20, - ); - final orangeBox = Container( - color: Colors.orange, - height: 80, - width: 20, - ); - final cyanBox = Container( - color: Colors.cyanAccent, - height: 10, - width: 20, - ); - - _buildItem(mode) => Wrap( - textDirection: mode, - runSpacing: 10, - spacing: 10, - children: [ - yellowBox, redBox, greenBox, cyanBox, - blackBox, purpleBox, orangeBox, - ], - ); -} - -// { -// "widgetId": 98, -// "name": 'Wrap的textDirection属性', -// "priority": 5, -// "subtitle": -// "【verticalDirection】 : 竖直方向 【VerticalDirection】", -// } -class VerticalDirectionWrap extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Wrap( - children: VerticalDirection.values - .map((mode) => Column(children: [ - Container( - margin: EdgeInsets.all(5), - width: 160, - height: 100, - color: Colors.grey.withAlpha(88), - child: _buildItem(mode)), - Text(mode.toString().split('.')[1]) - ])) - .toList()); - } - - final yellowBox = Container( - color: Colors.yellow, - height: 30, - width: 50, - ); - - final redBox = Container( - color: Colors.red, - height: 40, - width: 40, - ); - final greenBox = Container( - color: Colors.green, - height: 40, - width: 20, - ); - final blackBox = Container( - color: Colors.black, - height: 10, - width: 10, - ); - final purpleBox = Container( - color: Colors.purple, - height: 20, - width: 20, - ); - final orangeBox = Container( - color: Colors.orange, - height: 80, - width: 20, - ); - final cyanBox = Container( - color: Colors.cyanAccent, - height: 10, - width: 20, - ); - - _buildItem(mode) => Wrap( - verticalDirection: mode, - direction: Axis.vertical, - runSpacing: 10, - spacing: 10, - children: [ - yellowBox, redBox, greenBox, cyanBox, - blackBox, purpleBox, orangeBox, - ], - ); -} \ No newline at end of file diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node1_base.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node1_base.dart new file mode 100644 index 0000000..0640e84 --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node1_base.dart @@ -0,0 +1,77 @@ +import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-03-30 +/// contact me by email 1981462002@qq.com +/// 说明: +// { +// "widgetId": 98, +// "name": 'Wrap的基础用法', +// "priority": 1, +// "subtitle": +// "【children】 : 组件列表 【List】\n" +// "【spacing】 : 主轴条目间距 【double】\n" +// "【runSpacing】 : 交叉轴条目间距 【double】\n" +// "【direction】 : 主轴对齐 【Axis】", +// } +class DirectionWrap extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Wrap( + children: Axis.values + .map((mode) => Column(children: [ + Container( + margin: EdgeInsets.all(5), + width: 160, + height: 100, + color: Colors.grey.withAlpha(33), + child: _buildItem(mode)), + Text(mode.toString().split('.')[1]) + ])) + .toList()); + } + final yellowBox = Container( + color: Colors.yellow, + height: 30, + width: 50, + ); + + final redBox = Container( + color: Colors.red, + height: 40, + width: 40, + ); + final greenBox = Container( + color: Colors.green, + height: 40, + width: 20, + ); + final blackBox = Container( + color: Colors.black, + height: 10, + width: 10, + ); + final purpleBox = Container( + color: Colors.purple, + height: 20, + width: 20, + ); + final orangeBox = Container( + color: Colors.orange, + height: 80, + width: 20, + ); + final cyanBox = Container( + color: Colors.cyanAccent, + height: 10, + width: 20, + ); + + _buildItem(mode) => Wrap( + direction: mode, + runSpacing: 10, + spacing: 10, + children: [ + yellowBox, redBox, greenBox, cyanBox, + blackBox, purpleBox, orangeBox, + ], + ); +} \ No newline at end of file diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node2_alignment.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node2_alignment.dart new file mode 100644 index 0000000..e30a11e --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node2_alignment.dart @@ -0,0 +1,78 @@ +import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-03-30 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 98, +// "name": 'Wrap的alignment属性', +// "priority": 2, +// "subtitle": +// "【alignment】 : 主轴对齐 【WrapAlignment】", +// } +class WrapAlignmentWrap extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Wrap( + children: WrapAlignment.values + .map((mode) => Column(children: [ + Container( + margin: EdgeInsets.all(5), + width: 160, + height: 100, + color: Colors.grey.withAlpha(88), + child: _buildItem(mode)), + Text(mode.toString().split('.')[1]) + ])) + .toList()); + } + + final yellowBox = Container( + color: Colors.yellow, + height: 30, + width: 50, + ); + + final redBox = Container( + color: Colors.red, + height: 40, + width: 40, + ); + final greenBox = Container( + color: Colors.green, + height: 40, + width: 20, + ); + final blackBox = Container( + color: Colors.black, + height: 10, + width: 10, + ); + final purpleBox = Container( + color: Colors.purple, + height: 20, + width: 20, + ); + final orangeBox = Container( + color: Colors.orange, + height: 80, + width: 20, + ); + final cyanBox = Container( + color: Colors.cyanAccent, + height: 10, + width: 20, + ); + + _buildItem(mode) => Wrap( + alignment: mode, + runSpacing: 10, + spacing: 10, + children: [ + yellowBox, redBox, + greenBox, cyanBox, + blackBox, purpleBox, + orangeBox, + ], + ); +} \ No newline at end of file diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node3_crossAxisAlignment.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node3_crossAxisAlignment.dart new file mode 100644 index 0000000..00ddee9 --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node3_crossAxisAlignment.dart @@ -0,0 +1,79 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 98, +// "name": 'Wrap的crossAxisAlignment属性', +// "priority": 3, +// "subtitle": +// "【crossAxisAlignment】 : 交叉轴对齐 【CrossAxisAlignment】", +// } +class CrossAxisAlignmentWrap extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Wrap( + children: WrapCrossAlignment.values + .map((mode) => Column(children: [ + Container( + margin: EdgeInsets.all(5), + width: 160, + height: 100, + color: Colors.grey.withAlpha(88), + child: _buildItem(mode)), + Text(mode.toString().split('.')[1]) + ])) + .toList()); + } + + final yellowBox = Container( + color: Colors.yellow, + height: 30, + width: 50, + ); + + final redBox = Container( + color: Colors.red, + height: 40, + width: 40, + ); + final greenBox = Container( + color: Colors.green, + height: 40, + width: 20, + ); + final blackBox = Container( + color: Colors.black, + height: 10, + width: 10, + ); + final purpleBox = Container( + color: Colors.purple, + height: 20, + width: 20, + ); + final orangeBox = Container( + color: Colors.orange, + height: 80, + width: 20, + ); + final cyanBox = Container( + color: Colors.cyanAccent, + height: 10, + width: 20, + ); + + _buildItem(mode) => Wrap( + crossAxisAlignment: mode, + runSpacing: 10, + spacing: 10, + children: [ + yellowBox, redBox, + greenBox, cyanBox, + blackBox, purpleBox, + orangeBox, + ], + ); +} \ No newline at end of file diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node4_textDirection.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node4_textDirection.dart new file mode 100644 index 0000000..a3bfd3c --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node4_textDirection.dart @@ -0,0 +1,77 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 98, +// "name": 'Wrap的textDirection属性', +// "priority": 4, +// "subtitle": +// "【textDirection】 : 文字方向 【TextDirection】", +// } +class TextDirectionWrap extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Wrap( + children: TextDirection.values + .map((mode) => Column(children: [ + Container( + margin: EdgeInsets.all(5), + width: 160, + height: 100, + color: Colors.grey.withAlpha(88), + child: _buildItem(mode)), + Text(mode.toString().split('.')[1]) + ])) + .toList()); + } + + final yellowBox = Container( + color: Colors.yellow, + height: 30, + width: 50, + ); + + final redBox = Container( + color: Colors.red, + height: 40, + width: 40, + ); + final greenBox = Container( + color: Colors.green, + height: 40, + width: 20, + ); + final blackBox = Container( + color: Colors.black, + height: 10, + width: 10, + ); + final purpleBox = Container( + color: Colors.purple, + height: 20, + width: 20, + ); + final orangeBox = Container( + color: Colors.orange, + height: 80, + width: 20, + ); + final cyanBox = Container( + color: Colors.cyanAccent, + height: 10, + width: 20, + ); + + _buildItem(mode) => Wrap( + textDirection: mode, + runSpacing: 10, + spacing: 10, + children: [ + yellowBox, redBox, greenBox, cyanBox, + blackBox, purpleBox, orangeBox, + ], + ); +} diff --git a/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node5_verticalDirection.dart b/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node5_verticalDirection.dart new file mode 100644 index 0000000..9aa9556 --- /dev/null +++ b/lib/views/widgets/MultiChildRenderObjectWidget/Wrap/node5_verticalDirection.dart @@ -0,0 +1,78 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 98, +// "name": 'Wrap的verticalDirection属性', +// "priority": 5, +// "subtitle": +// "【verticalDirection】 : 竖直方向 【VerticalDirection】", +// } +class VerticalDirectionWrap extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Wrap( + children: VerticalDirection.values + .map((mode) => Column(children: [ + Container( + margin: EdgeInsets.all(5), + width: 160, + height: 100, + color: Colors.grey.withAlpha(88), + child: _buildItem(mode)), + Text(mode.toString().split('.')[1]) + ])) + .toList()); + } + + final yellowBox = Container( + color: Colors.yellow, + height: 30, + width: 50, + ); + + final redBox = Container( + color: Colors.red, + height: 40, + width: 40, + ); + final greenBox = Container( + color: Colors.green, + height: 40, + width: 20, + ); + final blackBox = Container( + color: Colors.black, + height: 10, + width: 10, + ); + final purpleBox = Container( + color: Colors.purple, + height: 20, + width: 20, + ); + final orangeBox = Container( + color: Colors.orange, + height: 80, + width: 20, + ); + final cyanBox = Container( + color: Colors.cyanAccent, + height: 10, + width: 20, + ); + + _buildItem(mode) => Wrap( + verticalDirection: mode, + direction: Axis.vertical, + runSpacing: 10, + spacing: 10, + children: [ + yellowBox, redBox, greenBox, cyanBox, + blackBox, purpleBox, orangeBox, + ], + ); +} \ No newline at end of file diff --git a/lib/views/widgets/Other/ErrorWidget.dart b/lib/views/widgets/Other/ErrorWidget/node1_base.dart similarity index 100% rename from lib/views/widgets/Other/ErrorWidget.dart rename to lib/views/widgets/Other/ErrorWidget/node1_base.dart diff --git a/lib/views/widgets/Other/Table.dart b/lib/views/widgets/Other/Table/node1_base.dart similarity index 100% rename from lib/views/widgets/Other/Table.dart rename to lib/views/widgets/Other/Table/node1_base.dart diff --git a/lib/views/widgets/ProxyWidget/ButtonTheme.dart b/lib/views/widgets/ProxyWidget/ButtonTheme/node1_base.dart similarity index 100% rename from lib/views/widgets/ProxyWidget/ButtonTheme.dart rename to lib/views/widgets/ProxyWidget/ButtonTheme/node1_base.dart diff --git a/lib/views/widgets/ProxyWidget/DefaultTextStyle.dart b/lib/views/widgets/ProxyWidget/DefaultTextStyle/node1_base.dart similarity index 100% rename from lib/views/widgets/ProxyWidget/DefaultTextStyle.dart rename to lib/views/widgets/ProxyWidget/DefaultTextStyle/node1_base.dart diff --git a/lib/views/widgets/ProxyWidget/DividerTheme.dart b/lib/views/widgets/ProxyWidget/DividerTheme/node1_base.dart similarity index 100% rename from lib/views/widgets/ProxyWidget/DividerTheme.dart rename to lib/views/widgets/ProxyWidget/DividerTheme/node1_base.dart diff --git a/lib/views/widgets/ProxyWidget/DropdownButtonHideUnderline.dart b/lib/views/widgets/ProxyWidget/DropdownButtonHideUnderline/node1_base.dart similarity index 100% rename from lib/views/widgets/ProxyWidget/DropdownButtonHideUnderline.dart rename to lib/views/widgets/ProxyWidget/DropdownButtonHideUnderline/node1_base.dart diff --git a/lib/views/widgets/ProxyWidget/Expanded.dart b/lib/views/widgets/ProxyWidget/Expanded/node1_base.dart similarity index 100% rename from lib/views/widgets/ProxyWidget/Expanded.dart rename to lib/views/widgets/ProxyWidget/Expanded/node1_base.dart diff --git a/lib/views/widgets/ProxyWidget/Flexible.dart b/lib/views/widgets/ProxyWidget/Flexible/node1_base.dart similarity index 100% rename from lib/views/widgets/ProxyWidget/Flexible.dart rename to lib/views/widgets/ProxyWidget/Flexible/node1_base.dart diff --git a/lib/views/widgets/ProxyWidget/IconTheme.dart b/lib/views/widgets/ProxyWidget/IconTheme/node1_base.dart similarity index 100% rename from lib/views/widgets/ProxyWidget/IconTheme.dart rename to lib/views/widgets/ProxyWidget/IconTheme/node1_base.dart diff --git a/lib/views/widgets/ProxyWidget/MediaQuery.dart b/lib/views/widgets/ProxyWidget/MediaQuery/node1_base.dart similarity index 100% rename from lib/views/widgets/ProxyWidget/MediaQuery.dart rename to lib/views/widgets/ProxyWidget/MediaQuery/node1_base.dart diff --git a/lib/views/widgets/ProxyWidget/Positioned.dart b/lib/views/widgets/ProxyWidget/Positioned/node1_base.dart similarity index 100% rename from lib/views/widgets/ProxyWidget/Positioned.dart rename to lib/views/widgets/ProxyWidget/Positioned/node1_base.dart diff --git a/lib/views/widgets/ProxyWidget/ScrollConfiguration.dart b/lib/views/widgets/ProxyWidget/ScrollConfiguration/node1_base.dart similarity index 100% rename from lib/views/widgets/ProxyWidget/ScrollConfiguration.dart rename to lib/views/widgets/ProxyWidget/ScrollConfiguration/node1_base.dart diff --git a/lib/views/widgets/ProxyWidget/SliderTheme/node1_base.dart b/lib/views/widgets/ProxyWidget/SliderTheme/node1_base.dart new file mode 100644 index 0000000..217daa9 --- /dev/null +++ b/lib/views/widgets/ProxyWidget/SliderTheme/node1_base.dart @@ -0,0 +1,44 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020-04-12 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 331, +// "name": 'SliderTheme使用', +// "priority": 1, +// "subtitle": +// "可通过SliderTheme.of获取Slider主题数据对象,其中包含大量属性用于对Slider的设定。" +// "可以为ButtonTheme【后代】的按钮组件设置默认样式,包括颜色、形状、尺寸等。", +// } + +class SliderThemeDemo extends StatefulWidget { + @override + _SliderThemeDemoState createState() => _SliderThemeDemoState(); +} + +class _SliderThemeDemoState extends State { + var _bliss = 0.5; + + @override + Widget build(BuildContext context) { + return SliderTheme( + data: SliderTheme.of(context).copyWith(activeTrackColor: Colors.orange), + child: Slider( + min: 0.0, + max: 200.0, + divisions: 10, + label: "${_bliss.toStringAsFixed(1)}", + onChanged: (double value) { + setState(() { + _bliss = value; + }); + }, + value: _bliss, + ), + ); + } +} \ No newline at end of file diff --git a/lib/views/widgets/ProxyWidget/SliderTheme.dart b/lib/views/widgets/ProxyWidget/SliderTheme/node2_diy.dart similarity index 83% rename from lib/views/widgets/ProxyWidget/SliderTheme.dart rename to lib/views/widgets/ProxyWidget/SliderTheme/node2_diy.dart index c105776..885db01 100644 --- a/lib/views/widgets/ProxyWidget/SliderTheme.dart +++ b/lib/views/widgets/ProxyWidget/SliderTheme/node2_diy.dart @@ -6,50 +6,13 @@ import 'package:flutter/material.dart'; /// contact me by email 1981462002@qq.com /// 说明: -// { -// "widgetId": 331, -// "name": 'SliderTheme使用', -// "priority": 1, -// "subtitle": -// "可通过SliderTheme.of获取Slider主题数据对象,其中包含大量属性用于对Slider的设定。" -// "可以为ButtonTheme【后代】的按钮组件设置默认样式,包括颜色、形状、尺寸等。", -// } - -class SliderThemeDemo extends StatefulWidget { - @override - _SliderThemeDemoState createState() => _SliderThemeDemoState(); -} - -class _SliderThemeDemoState extends State { - var _bliss = 0.5; - - @override - Widget build(BuildContext context) { - return SliderTheme( - data: SliderTheme.of(context).copyWith(activeTrackColor: Colors.orange), - child: Slider( - min: 0.0, - max: 200.0, - divisions: 10, - label: "${_bliss.toStringAsFixed(1)}", - onChanged: (double value) { - setState(() { - _bliss = value; - }); - }, - value: _bliss, - ), - ); - ; - } -} - // { // "widgetId": 331, // "name": 'SliderTheme对Slider的样式定制', // "priority": 2, // "subtitle": -// "通过thumbShape和valueIndicatorShape可以对Slider进行样式定制。注: 本例参考flutter-gallery中的SlideDemo", +// "通过thumbShape和valueIndicatorShape可以对Slider进行样式定制。" +// "注: 本例参考flutter-gallery中的SlideDemo", // } class DIYSliderTheme extends StatefulWidget { diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/AbsorbPointer.dart b/lib/views/widgets/SingleChildRenderObjectWidget/AbsorbPointer/node1_base.dart similarity index 100% rename from lib/views/widgets/SingleChildRenderObjectWidget/AbsorbPointer.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/AbsorbPointer/node1_base.dart diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Align/node1_base.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Align/node1_base.dart new file mode 100644 index 0000000..fcdac1a --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/Align/node1_base.dart @@ -0,0 +1,62 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: +// { +// "widgetId": 85, +// "name": 'Align基本使用', +// "priority": 1, +// "subtitle": +// "【child】 : 孩子组件 【Widget】\n" +// "【alignment】 : 对齐方式 【AlignmentGeometry】", +// } +class CustomAlign extends StatelessWidget { + final alignments = [ + Alignment.topLeft, + Alignment.topCenter, + Alignment.topRight, + Alignment.centerLeft, + Alignment.center, + Alignment.centerRight, + Alignment.bottomLeft, + Alignment.bottomCenter, + Alignment.bottomRight, + ]; + + final alignmentsInfo = [ + "topLeft", + "topCenter", + "topRight", + "centerLeft", + "center", + "centerRight", + "bottomLeft", + "bottomCenter", + "bottomRight", + ]; + + @override + Widget build(BuildContext context) { + return Wrap( + children: alignments + .toList() + .map((mode) => Column(children: [ + Container( + margin: EdgeInsets.all(5), + width: 100, + height: 60, + color: Colors.grey.withAlpha(88), + child: Align( + child: Container( + width: 30, + height: 30, + color: Colors.cyanAccent, + ), + alignment: mode)), + Text(alignmentsInfo[alignments.indexOf(mode)]) + ])) + .toList()); + } +} \ No newline at end of file diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Align.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Align/node2_other.dart similarity index 54% rename from lib/views/widgets/SingleChildRenderObjectWidget/Align.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/Align/node2_other.dart index a415bad..d16e6e2 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/Align.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/Align/node2_other.dart @@ -1,63 +1,9 @@ import 'dart:math'; import 'package:flutter/material.dart'; - -// { -// "widgetId": 85, -// "name": 'Align基本使用', -// "priority": 1, -// "subtitle": -// "【child】 : 孩子组件 【Widget】\n" -// "【alignment】 : 对齐方式 【AlignmentGeometry】", -// } -class CustomAlign extends StatelessWidget { - final alignments = [ - Alignment.topLeft, - Alignment.topCenter, - Alignment.topRight, - Alignment.centerLeft, - Alignment.center, - Alignment.centerRight, - Alignment.bottomLeft, - Alignment.bottomCenter, - Alignment.bottomRight, - ]; - - final alignmentsInfo = [ - "topLeft", - "topCenter", - "topRight", - "centerLeft", - "center", - "centerRight", - "bottomLeft", - "bottomCenter", - "bottomRight", - ]; - - @override - Widget build(BuildContext context) { - return Wrap( - children: alignments - .toList() - .map((mode) => Column(children: [ - Container( - margin: EdgeInsets.all(5), - width: 100, - height: 60, - color: Colors.grey.withAlpha(88), - child: Align( - child: Container( - width: 30, - height: 30, - color: Colors.cyanAccent, - ), - alignment: mode)), - Text(alignmentsInfo[alignments.indexOf(mode)]) - ])) - .toList()); - } -} +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 85, // "name": 'Align其他用法', diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/AnimatedSize.dart b/lib/views/widgets/SingleChildRenderObjectWidget/AnimatedSize/node1_base.dart similarity index 100% rename from lib/views/widgets/SingleChildRenderObjectWidget/AnimatedSize.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/AnimatedSize/node1_base.dart diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/AspectRatio.dart b/lib/views/widgets/SingleChildRenderObjectWidget/AspectRatio/node1_base.dart similarity index 100% rename from lib/views/widgets/SingleChildRenderObjectWidget/AspectRatio.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/AspectRatio/node1_base.dart diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/BackdropFilter.dart b/lib/views/widgets/SingleChildRenderObjectWidget/BackdropFilter/node1_base.dart similarity index 100% rename from lib/views/widgets/SingleChildRenderObjectWidget/BackdropFilter.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/BackdropFilter/node1_base.dart diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Baseline.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Baseline/node1_base.dart similarity index 93% rename from lib/views/widgets/SingleChildRenderObjectWidget/Baseline.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/Baseline/node1_base.dart index eb70077..a720790 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/Baseline.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/Baseline/node1_base.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 75, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Center.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Center/node1_base.dart similarity index 86% rename from lib/views/widgets/SingleChildRenderObjectWidget/Center.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/Center/node1_base.dart index cf7540a..a81c643 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/Center.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/Center/node1_base.dart @@ -1,6 +1,8 @@ -import 'dart:math'; import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 86, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/ClipOval.dart b/lib/views/widgets/SingleChildRenderObjectWidget/ClipOval/node1_base.dart similarity index 90% rename from lib/views/widgets/SingleChildRenderObjectWidget/ClipOval.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/ClipOval/node1_base.dart index 729f544..6ad96c2 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/ClipOval.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/ClipOval/node1_base.dart @@ -1,5 +1,8 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 66, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/ClipPath.dart b/lib/views/widgets/SingleChildRenderObjectWidget/ClipPath/node1_base.dart similarity index 94% rename from lib/views/widgets/SingleChildRenderObjectWidget/ClipPath.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/ClipPath/node1_base.dart index 440d951..efd25b3 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/ClipPath.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/ClipPath/node1_base.dart @@ -1,6 +1,9 @@ import 'dart:math'; import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 69, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/ClipRRect.dart b/lib/views/widgets/SingleChildRenderObjectWidget/ClipRRect/node1_base.dart similarity index 88% rename from lib/views/widgets/SingleChildRenderObjectWidget/ClipRRect.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/ClipRRect/node1_base.dart index faabd59..b1d1fc0 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/ClipRRect.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/ClipRRect/node1_base.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 68, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/ClipRect.dart b/lib/views/widgets/SingleChildRenderObjectWidget/ClipRect/node1_base.dart similarity index 87% rename from lib/views/widgets/SingleChildRenderObjectWidget/ClipRect.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/ClipRect/node1_base.dart index ce3f7bc..d1e58b6 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/ClipRect.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/ClipRect/node1_base.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 67, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/ColorFiltered.dart b/lib/views/widgets/SingleChildRenderObjectWidget/ColorFiltered/node1_base.dart similarity index 95% rename from lib/views/widgets/SingleChildRenderObjectWidget/ColorFiltered.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/ColorFiltered/node1_base.dart index 03de545..00f111b 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/ColorFiltered.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/ColorFiltered/node1_base.dart @@ -1,5 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_unit/app/utils/color_utils.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 88, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/ConstrainedBox.dart b/lib/views/widgets/SingleChildRenderObjectWidget/ConstrainedBox/node1_base.dart similarity index 94% rename from lib/views/widgets/SingleChildRenderObjectWidget/ConstrainedBox.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/ConstrainedBox/node1_base.dart index b245598..65171c1 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/ConstrainedBox.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/ConstrainedBox/node1_base.dart @@ -1,4 +1,8 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: + // { // "widgetId": 80, // "name": 'BoxConstraints基本使用', diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/colck_page/colck_page.dart b/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/colck_page/colck_page.dart deleted file mode 100644 index bd0956e..0000000 --- a/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/colck_page/colck_page.dart +++ /dev/null @@ -1,64 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'const_res.dart'; - -// { -// "widgetId": 166, -// "name": 'CustomPaint绘线图形', -// "priority": 1, -// "subtitle": -// "【painter】 : 绘画器 【CustomPainter】", -// } -class ClockPage extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Container( - width: MediaQuery.of(context).size.width, - height: 100, - child:CustomPaint(//使用CustomPaint盛放画布 - painter: ClockPainter(), - ), - ) - ; - } -} - -class ClockPainter extends CustomPainter { - Paint _paint; - var _radius = 3.0; //小球半径 - Path _path = Path(); //画笔对象 - ClockPainter () { - _paint = Paint()..color= Color(0xff45d0fd)..isAntiAlias=true; - _path.addOval(Rect.fromCircle(radius: _radius, center: Offset(0, 0))); //小球路径 - } - - @override - void paint(Canvas canvas, Size size) { - print(size); - canvas.clipRect(Offset.zero & size); - canvas.translate(size.width/2-65*2, 0); - renderDigit(1, canvas);//渲染数字 - canvas.translate(65, 0);//平移画布 - renderDigit(9, canvas); - canvas.translate(65, 0); renderDigit(9, canvas); - canvas.translate(65, 0); renderDigit(4, canvas); - } - //渲染数字 num :要显示的数字 canvas :画布 - void renderDigit(int num, Canvas canvas) { - if (num > 10) { return; } - for (int i = 0; i < digit[num].length; i++) { - for (int j = 0; j < digit[num][j].length; j++) { - if (digit[num][i][j] == 1) { - canvas.save(); - double rX = j * 2 * (_radius + 1) + (_radius + 1); //第(i,j)个点圆心横坐标 - double rY = i * 2 * (_radius + 1) + (_radius + 1); //第(i,j)个点圆心纵坐标 - canvas.translate(rX, rY); - canvas.drawPath(_path, _paint); - canvas.restore(); - } - } - } - } - @override - bool shouldRepaint(CustomPainter oldDelegate)=> false; -} \ No newline at end of file diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/colck_page/const_res.dart b/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/node1_clock.dart old mode 100755 new mode 100644 similarity index 59% rename from lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/colck_page/const_res.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/node1_clock.dart index 6d3c13a..3b5c972 --- a/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/colck_page/const_res.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/node1_clock.dart @@ -1,3 +1,68 @@ +import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: +// { +// "widgetId": 166, +// "name": 'CustomPaint绘线图形', +// "priority": 1, +// "subtitle": +// "【painter】 : 绘画器 【CustomPainter】", +// } +class ClockPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + width: MediaQuery.of(context).size.width, + height: 100, + child:CustomPaint(//使用CustomPaint盛放画布 + painter: ClockPainter(), + ), + ) + ; + } +} + +class ClockPainter extends CustomPainter { + Paint _paint; + var _radius = 3.0; //小球半径 + Path _path = Path(); //画笔对象 + ClockPainter () { + _paint = Paint()..color= Color(0xff45d0fd)..isAntiAlias=true; + _path.addOval(Rect.fromCircle(radius: _radius, center: Offset(0, 0))); //小球路径 + } + + @override + void paint(Canvas canvas, Size size) { + print(size); + canvas.clipRect(Offset.zero & size); + canvas.translate(size.width/2-65*2, 0); + renderDigit(1, canvas);//渲染数字 + canvas.translate(65, 0);//平移画布 + renderDigit(9, canvas); + canvas.translate(65, 0); renderDigit(9, canvas); + canvas.translate(65, 0); renderDigit(4, canvas); + } + //渲染数字 num :要显示的数字 canvas :画布 + void renderDigit(int num, Canvas canvas) { + if (num > 10) { return; } + for (int i = 0; i < digit[num].length; i++) { + for (int j = 0; j < digit[num][j].length; j++) { + if (digit[num][i][j] == 1) { + canvas.save(); + double rX = j * 2 * (_radius + 1) + (_radius + 1); //第(i,j)个点圆心横坐标 + double rY = i * 2 * (_radius + 1) + (_radius + 1); //第(i,j)个点圆心纵坐标 + canvas.translate(rX, rY); + canvas.drawPath(_path, _paint); + canvas.restore(); + } + } + } + } + @override + bool shouldRepaint(CustomPainter oldDelegate)=> false; +} + const digit = [ [ [0, 0, 1, 1, 1, 0, 0], diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/CustomPaint.dart b/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/node2_bezier.dart similarity index 100% rename from lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/CustomPaint.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/node2_bezier.dart diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/paper.dart b/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/paper.dart deleted file mode 100644 index 6ab2185..0000000 --- a/lib/views/widgets/SingleChildRenderObjectWidget/CustomPaint/paper.dart +++ /dev/null @@ -1,118 +0,0 @@ -import 'package:flutter/material.dart'; - -class Circle { -final double radius; //大小 -final Color color; //颜色 -final Offset pos; //位置 - Circle({this.color, this.pos, this.radius = 1}); -} - -class PaperWidget extends StatefulWidget { - @override - State createState() => _PaperWidgetState(); -} - -class _PaperWidgetState extends State { - var _positions = []; //点集 - var _lines = >[]; //线集 - Offset _oldPos; //记录上一点 - @override - Widget build(BuildContext context) { - var body = Container( - //容器默认全屏 - width: MediaQuery.of(context).size.width, - height: 200, - child: CustomPaint( - painter: PaperPainter(lines: _lines), - ), - ); - return GestureDetector( - child: body, - //手势监听器 - onPanDown: _panDown, - //按下处理 - onPanUpdate: _panUpdate, - //移动处理 - onPanEnd: _panEnd, - //结束处理 - onDoubleTap: () { - //双击清空 - _lines.clear(); - _render(); - }, - ); - } - - void _panDown(DragDownDetails details) { - _lines.add(_positions); - var x = details.localPosition.dx; - var y = details.localPosition.dy; - _oldPos = Offset(x, y); - } - -// 抬起后,将旧线拷贝到线集中 - void _panEnd(DragEndDetails details) { - var oldBall = []; - for (int i = 0; i < _positions.length; i++) { - oldBall.add(_positions[i]); - } - _lines.add(oldBall); - _positions.clear(); - } - - void _panUpdate(DragUpdateDetails details) { - var x = details.localPosition.dx; - var y = details.localPosition.dy; - var curPos = Offset(x, y); - if ((curPos - _oldPos).distance > 3) { -//距离小于3不处理,避免渲染过多 - var circle = Circle( - color:Colors.blue, - pos: curPos, - radius: 6); - _positions.add(circle); - _oldPos = curPos; - _render(); - } - } - - //渲染方法,将重新渲染组件 - void _render() { - setState(() {}); - } -} - -class PaperPainter extends CustomPainter { - - Paint _paint; //画笔 - final List> lines; //记录线的所有点位 - - PaperPainter({ - @required this.lines, - }) { - _paint = Paint() - ..style = PaintingStyle.stroke - ..strokeCap = StrokeCap.round; - } - - @override - void paint(Canvas canvas, Size size) { - for (int i = 0; i < lines.length; i++) { - drawLine(canvas, lines[i]); //绘制线 - } - } - - @override - bool shouldRepaint(CustomPainter oldDelegate) { - return true; - } - - //根据点位绘制线 - void drawLine(Canvas canvas, List positions) { - for (int i = 0; i < positions.length - 1; i++) { - if (positions[i] != null && positions[i + 1] != null) - canvas.drawLine(positions[i].pos, positions[i + 1].pos, - _paint..strokeWidth = positions[i].radius); - } - } -} diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/DecoratedBox.dart b/lib/views/widgets/SingleChildRenderObjectWidget/DecoratedBox/node1_base.dart similarity index 95% rename from lib/views/widgets/SingleChildRenderObjectWidget/DecoratedBox.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/DecoratedBox/node1_base.dart index 17217c4..a30410e 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/DecoratedBox.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/DecoratedBox/node1_base.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 70, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/FadeTransition.dart b/lib/views/widgets/SingleChildRenderObjectWidget/FadeTransition/node1_base.dart similarity index 93% rename from lib/views/widgets/SingleChildRenderObjectWidget/FadeTransition.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/FadeTransition/node1_base.dart index 66240d5..4d02c7d 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/FadeTransition.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/FadeTransition/node1_base.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 89, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/FittedBox.dart b/lib/views/widgets/SingleChildRenderObjectWidget/FittedBox/node1_base.dart similarity index 96% rename from lib/views/widgets/SingleChildRenderObjectWidget/FittedBox.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/FittedBox/node1_base.dart index b13b91a..9dd113a 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/FittedBox.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/FittedBox/node1_base.dart @@ -1,5 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_unit/app/res/cons.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 87, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/FractionallySizedBox.dart b/lib/views/widgets/SingleChildRenderObjectWidget/FractionallySizedBox/node1_base.dart similarity index 94% rename from lib/views/widgets/SingleChildRenderObjectWidget/FractionallySizedBox.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/FractionallySizedBox/node1_base.dart index 4d114ee..3cd88e6 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/FractionallySizedBox.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/FractionallySizedBox/node1_base.dart @@ -1,4 +1,8 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: + // { // "widgetId": 81, // "name": 'FractionallySizedBox基本使用', diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/IgnorePointer.dart b/lib/views/widgets/SingleChildRenderObjectWidget/IgnorePointer/node1_base.dart similarity index 100% rename from lib/views/widgets/SingleChildRenderObjectWidget/IgnorePointer.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/IgnorePointer/node1_base.dart diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/LayoutBuilder.dart b/lib/views/widgets/SingleChildRenderObjectWidget/LayoutBuilder.dart deleted file mode 100644 index 410c205..0000000 --- a/lib/views/widgets/SingleChildRenderObjectWidget/LayoutBuilder.dart +++ /dev/null @@ -1,209 +0,0 @@ -import 'package:flutter/material.dart'; - -/// create by 张风捷特烈 on 2020-04-19 -/// contact me by email 1981462002@qq.com -/// 说明: - -// { -// "widgetId": 287, -// "name": 'LayoutBuilder基本认识', -// "priority": 1, -// "subtitle": -// "【builder】 : 布局构造器 【LayoutWidgetBuilder】", -// } -class CustomLayoutBuilder extends StatelessWidget { - @override - Widget build(BuildContext context) { - print('CustomLayoutBuild'); - return Container( - alignment: Alignment.center, - height: 80, - width: 150, - color: Colors.green, - child: LayoutBuilder( - builder: (_, zone) { - return Text( - '父容器宽:${zone.maxWidth}\n' - '父容器高:${zone.maxHeight}', - style: TextStyle(color: Colors.white, fontSize: 16), - ); - }, - ), - ); - } -} - -// { -// "widgetId": 287, -// "name": 'LayoutBuilder的适应布局', -// "priority": 2, -// "subtitle": -// "可以根据区域的大小进行组件展示设计。" -// "比如在不同的宽度区域显示不同的布局结构。" -// "毕竟很多地方不容易获取父组件区域,使用LayoutBuilder就会非常爽口。", -// } - -class FitByLayoutBuilder extends StatefulWidget { - @override - _FitByLayoutBuilderState createState() => _FitByLayoutBuilderState(); -} - -class _FitByLayoutBuilderState extends State { - double _width = 100; - - @override - Widget build(BuildContext context) { - return Column( - children: [ - Container( - width: _width, - child: LayoutBuilder( - builder: (_, zone) { - if (zone.maxWidth <= 150) { - return _buildType1(); - } else { - return _buildType2(zone); - } - }, - ), - ), - _buildSlider(), - ], - ); - } - - Widget _buildSlider() { - return Slider( - min: 50, - max: 300, - label: "父宽:${_width.toStringAsFixed(1)}", - value: _width, - onChanged: (v) => setState(() { - _width = v; - })); - } - - Widget _buildType1() => Container( - color: Colors.blue, - child: Column( - children: [ - _buildTitle(), - Padding( - padding: const EdgeInsets.all(8.0), - child: _buildContent(), - ), - ], - ), - ); - - Widget _buildType2(BoxConstraints zone) => Container( - height: 100, - width: zone.maxWidth, - color: Colors.orange, - child: Row( - children: [ - Container( - margin: EdgeInsets.all(10), - height: 80, - width: 30, - color: Colors.grey, - ), - Expanded(child: _buildContent()) - ], - ), - ); - - Widget _buildTitle() => Container( - margin: EdgeInsets.only(left: 10, right: 10, top: 10), - color: Colors.grey, - height: 30, - ); - - Widget _buildContent() => Wrap( - runSpacing: 3, - children: [ - Container( - color: Colors.red, - height: 30, - ), - Container( - color: Colors.yellow, - height: 30, - ), - Container( - color: Colors.green, - height: 30, - ), - ], - ); -} - -// { -// "widgetId": 287, -// "name": 'LayoutBuilder的展开使用', -// "priority": 3, -// "subtitle": -// "使用TextPainter来检测文字的行数,实现展开或收起功能。", -// } - -class SimpleExpandableText extends StatefulWidget { - - @override - createState() => _SimpleExpandableTextState(); -} - -class _SimpleExpandableTextState extends State { - - final text = '桃树、杏树、梨树,你不让我,我不让你,都开满了花赶趟儿。' - '红的像火,粉的像霞,白的像雪。' - '花里带着甜味儿;闭了眼,树上仿佛已经满是桃儿、杏儿、梨儿。' - '花下成千成百的蜜蜂嗡嗡地闹着,大小的蝴蝶飞来飞去。' - '野花遍地是:杂样儿,有名字的,没名字的,散在草丛里,像眼睛,像星星,还眨呀眨的。'; - - bool expand = false; - int maxLines =3; - - - final style = TextStyle(fontSize: 15, color: Colors.grey, shadows: [ - Shadow( - color: Colors.white, offset: Offset(1,1) - ) - ]); - - @override - build(context) => Container( - decoration: BoxDecoration( - color: Colors.cyanAccent.withAlpha(8), - borderRadius: BorderRadiusDirectional.all(Radius.circular(20))), - padding: EdgeInsets.all(15), - child: LayoutBuilder(builder: (context, size) { - - final painter = TextPainter( - text: TextSpan(text: text, style: style), - maxLines: maxLines, - textDirection: TextDirection.ltr, - ); - painter.layout(maxWidth: size.maxWidth); - if (!painter.didExceedMaxLines) - return Text(text, style: style); - - return Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(text, maxLines: expand ? null : 3, style: style), - GestureDetector( - onTap: () => setState(() { - expand = !expand; - }), - child: Text( - expand ? '<< 收起' : '展开 >>', - style: TextStyle(color: Colors.blue), - ), - ), - ], - ); - }), - ); -} - diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/LayoutBuilder/node1_base.dart b/lib/views/widgets/SingleChildRenderObjectWidget/LayoutBuilder/node1_base.dart new file mode 100644 index 0000000..32bdb1f --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/LayoutBuilder/node1_base.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 287, +// "name": 'LayoutBuilder基本认识', +// "priority": 1, +// "subtitle": +// "【builder】 : 布局构造器 【LayoutWidgetBuilder】", +// } +class CustomLayoutBuilder extends StatelessWidget { + @override + Widget build(BuildContext context) { + print('CustomLayoutBuild'); + return Container( + alignment: Alignment.center, + height: 80, + width: 150, + color: Colors.green, + child: LayoutBuilder( + builder: (_, zone) { + return Text( + '父容器宽:${zone.maxWidth}\n' + '父容器高:${zone.maxHeight}', + style: TextStyle(color: Colors.white, fontSize: 16), + ); + }, + ), + ); + } +} diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/LayoutBuilder/node2_fit.dart b/lib/views/widgets/SingleChildRenderObjectWidget/LayoutBuilder/node2_fit.dart new file mode 100644 index 0000000..e9d97a2 --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/LayoutBuilder/node2_fit.dart @@ -0,0 +1,109 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: +// { +// "widgetId": 287, +// "name": 'LayoutBuilder的适应布局', +// "priority": 2, +// "subtitle": +// "可以根据区域的大小进行组件展示设计。" +// "比如在不同的宽度区域显示不同的布局结构。" +// "毕竟很多地方不容易获取父组件区域,使用LayoutBuilder就会非常爽口。", +// } + +class FitByLayoutBuilder extends StatefulWidget { + @override + _FitByLayoutBuilderState createState() => _FitByLayoutBuilderState(); +} + +class _FitByLayoutBuilderState extends State { + double _width = 100; + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Container( + width: _width, + child: LayoutBuilder( + builder: (_, zone) { + if (zone.maxWidth <= 150) { + return _buildType1(); + } else { + return _buildType2(zone); + } + }, + ), + ), + _buildSlider(), + ], + ); + } + + Widget _buildSlider() { + return Slider( + min: 50, + max: 300, + label: "父宽:${_width.toStringAsFixed(1)}", + value: _width, + onChanged: (v) => setState(() { + _width = v; + })); + } + + Widget _buildType1() => Container( + color: Colors.blue, + child: Column( + children: [ + _buildTitle(), + Padding( + padding: const EdgeInsets.all(8.0), + child: _buildContent(), + ), + ], + ), + ); + + Widget _buildType2(BoxConstraints zone) => Container( + height: 100, + width: zone.maxWidth, + color: Colors.orange, + child: Row( + children: [ + Container( + margin: EdgeInsets.all(10), + height: 80, + width: 30, + color: Colors.grey, + ), + Expanded(child: _buildContent()) + ], + ), + ); + + Widget _buildTitle() => Container( + margin: EdgeInsets.only(left: 10, right: 10, top: 10), + color: Colors.grey, + height: 30, + ); + + Widget _buildContent() => Wrap( + runSpacing: 3, + children: [ + Container( + color: Colors.red, + height: 30, + ), + Container( + color: Colors.yellow, + height: 30, + ), + Container( + color: Colors.green, + height: 30, + ), + ], + ); +} diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/LayoutBuilder/node3_expend.dart b/lib/views/widgets/SingleChildRenderObjectWidget/LayoutBuilder/node3_expend.dart new file mode 100644 index 0000000..3b33aeb --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/LayoutBuilder/node3_expend.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: +// { +// "widgetId": 287, +// "name": 'LayoutBuilder的展开使用', +// "priority": 3, +// "subtitle": +// "使用TextPainter来检测文字的行数,实现展开或收起功能。", +// } + +class SimpleExpandableText extends StatefulWidget { + + @override + createState() => _SimpleExpandableTextState(); +} + +class _SimpleExpandableTextState extends State { + + final text = '桃树、杏树、梨树,你不让我,我不让你,都开满了花赶趟儿。' + '红的像火,粉的像霞,白的像雪。' + '花里带着甜味儿;闭了眼,树上仿佛已经满是桃儿、杏儿、梨儿。' + '花下成千成百的蜜蜂嗡嗡地闹着,大小的蝴蝶飞来飞去。' + '野花遍地是:杂样儿,有名字的,没名字的,散在草丛里,像眼睛,像星星,还眨呀眨的。'; + + bool expand = false; + int maxLines =3; + + + final style = TextStyle(fontSize: 15, color: Colors.grey, shadows: [ + Shadow( + color: Colors.white, offset: Offset(1,1) + ) + ]); + + @override + build(context) => Container( + decoration: BoxDecoration( + color: Colors.cyanAccent.withAlpha(8), + borderRadius: BorderRadiusDirectional.all(Radius.circular(20))), + padding: EdgeInsets.all(15), + child: LayoutBuilder(builder: (context, size) { + + final painter = TextPainter( + text: TextSpan(text: text, style: style), + maxLines: maxLines, + textDirection: TextDirection.ltr, + ); + painter.layout(maxWidth: size.maxWidth); + if (!painter.didExceedMaxLines) + return Text(text, style: style); + + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(text, maxLines: expand ? null : 3, style: style), + GestureDetector( + onTap: () => setState(() { + expand = !expand; + }), + child: Text( + expand ? '<< 收起' : '展开 >>', + style: TextStyle(color: Colors.blue), + ), + ), + ], + ); + }), + ); +} + diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/LimiteBox.dart b/lib/views/widgets/SingleChildRenderObjectWidget/LimiteBox/node1_base.dart similarity index 94% rename from lib/views/widgets/SingleChildRenderObjectWidget/LimiteBox.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/LimiteBox/node1_base.dart index 3bdf093..d1bec3c 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/LimiteBox.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/LimiteBox/node1_base.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 79, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/OffStage.dart b/lib/views/widgets/SingleChildRenderObjectWidget/OffStage/node1_base.dart similarity index 92% rename from lib/views/widgets/SingleChildRenderObjectWidget/OffStage.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/OffStage/node1_base.dart index 477f3b1..7719ad4 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/OffStage.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/OffStage/node1_base.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 71, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Opacity.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Opacity/node1_base.dart similarity index 90% rename from lib/views/widgets/SingleChildRenderObjectWidget/Opacity.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/Opacity/node1_base.dart index 38038d0..14e23df 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/Opacity.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/Opacity/node1_base.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 73, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/OverflowBox.dart b/lib/views/widgets/SingleChildRenderObjectWidget/OverflowBox/node1_base.dart similarity index 94% rename from lib/views/widgets/SingleChildRenderObjectWidget/OverflowBox.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/OverflowBox/node1_base.dart index c5a5141..569b043 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/OverflowBox.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/OverflowBox/node1_base.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 83, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Padding.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Padding/node1_base.dart similarity index 88% rename from lib/views/widgets/SingleChildRenderObjectWidget/Padding.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/Padding/node1_base.dart index 8ad91f5..f7603b4 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/Padding.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/Padding/node1_base.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 74, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/RotatedBox.dart b/lib/views/widgets/SingleChildRenderObjectWidget/RotatedBox/node1_base.dart similarity index 89% rename from lib/views/widgets/SingleChildRenderObjectWidget/RotatedBox.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/RotatedBox/node1_base.dart index 510cbe2..ec9e6e6 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/RotatedBox.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/RotatedBox/node1_base.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 72, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/ShaderMask.dart b/lib/views/widgets/SingleChildRenderObjectWidget/ShaderMask/node1_radial.dart similarity index 54% rename from lib/views/widgets/SingleChildRenderObjectWidget/ShaderMask.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/ShaderMask/node1_radial.dart index 5d8ed44..6980613 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/ShaderMask.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/ShaderMask/node1_radial.dart @@ -56,56 +56,4 @@ class RadialShaderMask extends StatelessWidget { tileMode: TileMode.mirror, colors: colors) .createShader(bounds); -} - -// { -// "widgetId": 277, -// "name": '线性渐变着色', -// "priority": 2, -// "subtitle": -// "通过LinearGradient#createShader创建线性渐变着色器\n" -// "着色器相关知识详见【绘制专辑】", -// } -class LinearShaderMask extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Wrap( - spacing: 20, - crossAxisAlignment: WrapCrossAlignment.center, - children: [ - ShaderMask( - shaderCallback: _buildShader, - child: Image.asset( - 'assets/images/icon_head.png', - height: 70, - width: 70, - ), - ), - ShaderMask( - shaderCallback: _buildShader, - child: Text( - '张风捷特烈', - style: TextStyle(fontSize: 40, color: Colors.white), - ), - ), - ShaderMask( - shaderCallback: _buildShader, - child: Container( - height: 100, - color: Colors.white, - width: 50, - ), - ), - ], - ); - } - - final colors = [Colors.red, Colors.yellow, Colors.blue]; - - Shader _buildShader(Rect bounds) => LinearGradient( - begin: Alignment.centerLeft, - end: Alignment.centerRight, - tileMode: TileMode.mirror, - colors: colors) - .createShader(bounds); -} +} \ No newline at end of file diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/ShaderMask/node2_linear.dart b/lib/views/widgets/SingleChildRenderObjectWidget/ShaderMask/node2_linear.dart new file mode 100644 index 0000000..d5dfd66 --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/ShaderMask/node2_linear.dart @@ -0,0 +1,56 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020-04-12 +/// contact me by email 1981462002@qq.com +/// 说明: +// { +// "widgetId": 277, +// "name": '线性渐变着色', +// "priority": 2, +// "subtitle": +// "通过LinearGradient#createShader创建线性渐变着色器\n" +// "着色器相关知识详见【绘制专辑】", +// } +class LinearShaderMask extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Wrap( + spacing: 20, + crossAxisAlignment: WrapCrossAlignment.center, + children: [ + ShaderMask( + shaderCallback: _buildShader, + child: Image.asset( + 'assets/images/icon_head.png', + height: 70, + width: 70, + ), + ), + ShaderMask( + shaderCallback: _buildShader, + child: Text( + '张风捷特烈', + style: TextStyle(fontSize: 40, color: Colors.white), + ), + ), + ShaderMask( + shaderCallback: _buildShader, + child: Container( + height: 100, + color: Colors.white, + width: 50, + ), + ), + ], + ); + } + + final colors = [Colors.red, Colors.yellow, Colors.blue]; + + Shader _buildShader(Rect bounds) => LinearGradient( + begin: Alignment.centerLeft, + end: Alignment.centerRight, + tileMode: TileMode.mirror, + colors: colors) + .createShader(bounds); +} diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/SizedBox.dart b/lib/views/widgets/SingleChildRenderObjectWidget/SizedBox/node1_base.dart similarity index 90% rename from lib/views/widgets/SingleChildRenderObjectWidget/SizedBox.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/SizedBox/node1_base.dart index 45be9dd..c070de0 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/SizedBox.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/SizedBox/node1_base.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 76, diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/SizedOverflowBox.dart b/lib/views/widgets/SingleChildRenderObjectWidget/SizedOverflowBox/node1_base.dart similarity index 94% rename from lib/views/widgets/SingleChildRenderObjectWidget/SizedOverflowBox.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/SizedOverflowBox/node1_base.dart index 1c6ad46..a604a53 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/SizedOverflowBox.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/SizedOverflowBox/node1_base.dart @@ -1,4 +1,8 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: + // { // "widgetId": 84, // "name": 'SizedOverflowBox基本使用', diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Transform.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Transform.dart deleted file mode 100644 index ff53887..0000000 --- a/lib/views/widgets/SingleChildRenderObjectWidget/Transform.dart +++ /dev/null @@ -1,560 +0,0 @@ -import 'dart:math'; -import 'dart:math' as prefix0; - -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; - -class CustomTransform extends StatefulWidget { - @override - _CustomTransformState createState() => _CustomTransformState(); -} - -class _CustomTransformState extends State { - var angle = 0.0; - var m = [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.1, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - ]; - - @override - Widget build(BuildContext context) { - var transform = Transform( - transform: Matrix4(m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], - m[9], m[10], m[11], m[12], m[13], m[14], m[15]), - child: Container( - alignment: Alignment.center, - color: Colors.cyanAccent, - width: 100, - height: 100, - child: Image.asset( - 'assets/images/wy_300x200.jpg', - fit: BoxFit.cover, - )), - ); - - return Column( - mainAxisSize: MainAxisSize.min, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Container( - alignment: Alignment.topLeft, - color: Colors.grey.withAlpha(22), - width: 200, - height: 150, - child: transform, - ), - Text( - '${m[0]},${m[1]},${m[2]},${m[3]},\n' - '${m[4]},${m[5]},${m[6]},${m[7]},\n' - '${m[8]},${m[9]},${m[10]},${m[11]},\n' - '${m[12]},${m[13]},${m[14]},${m[15]}\n', - style: TextStyle(fontSize: 20), - ) - ], - ), - Container( - width: MediaQuery.of(context).size.width, - height: 200, - child: _buildSliders()) - ], - ); - } - - Widget _buildSliders() => GridView.count( - crossAxisCount: 2, - childAspectRatio: 8, - children: m - .asMap() - .keys - .map((i) => Slider( - value: m[i], - max: 0.01, - min: 0.0, - divisions: 10, - onChanged: (v) { - setState(() { - m[i] = v; - }); - })) - .toList()); -} - -// { -// "widgetId": 78, -// "name": '斜切变换skew', -// "priority": 1, -// "subtitle": -// "斜切x由R0C1数控制,入参为弧度值,表示斜切角度\n" -// "斜切y由R1C0数控制,入参为弧度值,表示斜切角度", -// } -class SkewTransform extends StatefulWidget { - @override - _SkewTransformState createState() => _SkewTransformState(); -} - -class _SkewTransformState extends State { - Matrix4 _m4; - double _alpha = 0; - double _beta = 0; - - @override - void initState() { - _m4 = Matrix4.identity(); - super.initState(); - } - - @override - Widget build(BuildContext context) { - return Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [_buildTransform(), Matrix4Shower(_m4)], - ), - _buildSliders() - ], - ); - } - - Widget _buildTransform() { - _m4 = Matrix4.skew(_alpha, _beta); - return Transform( - transform: _m4, - child: Container( - color: Colors.cyanAccent, - width: 100, - height: 100, - child: Image.asset( - 'assets/images/wy_300x200.jpg', - fit: BoxFit.cover, - )), - ); - } - - Widget _buildSliders() => Column( - children: [ - Slider( - min: -pi, - max: pi, - value: _alpha, - divisions: 360, - label: 'alpha:' + (_alpha * 180 / pi).toStringAsFixed(1) + "°", - onChanged: (v) { - setState(() { - _alpha = v; - }); - }), - Slider( - min: -pi, - max: pi, - value: _beta, - divisions: 360, - label: 'beta:' + (_beta * 180 / pi).toStringAsFixed(1) + "°", - onChanged: (v) { - setState(() { - _beta = v; - }); - }) - ], - ); -} -// { -// "widgetId": 78, -// "name": '平移变换translationValues', -// "priority": 2, -// "subtitle": -// "平移x由R0C3数控制,入参为数值,表示平移长度\n" -// "平移y由R1C3数控制,入参为数值,表示平移长度\n" -// "平移z由R2C3数控制,入参为数值,表示平移长度", -// } -class TranslationTransform extends StatefulWidget { - @override - _TranslationTransformState createState() => _TranslationTransformState(); -} - -class _TranslationTransformState extends State { - Matrix4 _m4; - double _x = 0; - double _y = 0; - double _z = 0; - - @override - void initState() { - _m4 = Matrix4.identity(); - super.initState(); - } - - @override - Widget build(BuildContext context) { - return Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [_buildTransform(), Matrix4Shower(_m4)], - ), - _buildSliders() - ], - ); - } - - Widget _buildTransform() { - _m4 = Matrix4.translationValues(_x, _y, _z); - return Transform( - transform: _m4, - child: Container( - color: Colors.cyanAccent, - width: 100, - height: 100, - child: Image.asset( - 'assets/images/wy_300x200.jpg', - fit: BoxFit.cover, - )), - ); - } - - Widget _buildSliders() => Column( - children: [ - Slider( - min: -100, - max: 100, - value: _x, - divisions: 360, - label: 'x:${_x.toStringAsFixed(1)}', - onChanged: (v) { - setState(() { - _x = v; - }); - }), - Slider( - min: -100, - max: 100, - value: _y, - divisions: 360, - label: 'y:${_y.toStringAsFixed(1)}', - onChanged: (v) { - setState(() { - _y = v; - }); - }), - Slider( - min: -100, - max: 100, - value: _z, - divisions: 360, - label: 'z:${_z.toStringAsFixed(1)}', - onChanged: (v) { - setState(() { - _z = v; - }); - }) - ], - ); -} -// { -// "widgetId": 78, -// "name": '缩放变换diagonal3Values', -// "priority": 3, -// "subtitle": -// "缩放x由R0C0数控制,入参为数值,表示缩放分率\n" -// "缩放y由R1C2数控制,入参为数值,表示缩放分率\n" -// "缩放z由R2C2数控制,入参为数值,表示缩放分率", -// } -class ScaleTransform extends StatefulWidget { - @override - _ScaleTransformState createState() => _ScaleTransformState(); -} - -class _ScaleTransformState extends State { - Matrix4 _m4; - double _x = 1.0; - double _y = 1.0; - double _z = 1.0; - - @override - void initState() { - _m4 = Matrix4.identity(); - super.initState(); - } - - @override - Widget build(BuildContext context) { - return Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [_buildTransform(), Matrix4Shower(_m4)], - ), - _buildSliders() - ], - ); - } - - Widget _buildTransform() { - _m4 = Matrix4.diagonal3Values(_x, _y, _z); - return Transform( - transform: _m4, - child: Container( - color: Colors.cyanAccent, - width: 100, - height: 100, - child: Image.asset( - 'assets/images/wy_300x200.jpg', - fit: BoxFit.cover, - )), - ); - } - - Widget _buildSliders() => Column( - children: [ - Slider( - min: -2, - max: 2, - value: _x, - divisions: 360, - label: 'x:${_x.toStringAsFixed(1)}', - onChanged: (v) { - setState(() { - _x = v; - }); - }), - Slider( - min: -2, - max: 2, - value: _y, - divisions: 360, - label: 'y:${_y.toStringAsFixed(1)}', - onChanged: (v) { - setState(() { - _y = v; - }); - }), - Slider( - min: -2, - max: 2, - value: _z, - divisions: 360, - label: 'z:${_z.toStringAsFixed(1)}', - onChanged: (v) { - setState(() { - _z = v; - }); - }) - ], - ); -} -// { -// "widgetId": 78, -// "name": '旋转变换rotation', -// "priority": 4, -// "subtitle": -// "x旋转由R1C1、R1C2、R2C1、R2C2控制,入参表示弧度\n" -// "y旋转由R0C0、R0C2、R2C0、R2C2控制,入参表示弧度\n" -// "z旋转由R0C0、R0C1、R1C0、R1C1控制,入参表示弧度\n" -// } -class RotateTransform extends StatefulWidget { - @override - _RotateTransformState createState() => _RotateTransformState(); -} - -class _RotateTransformState extends State { - Matrix4 _m4; - double _x = 0; - int _rotateFlag = 1; - - @override - void initState() { - _m4 = Matrix4.identity(); - super.initState(); - } - - @override - Widget build(BuildContext context) { - return Column( - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [_buildTransform(), Matrix4Shower(_m4)], - ), - _buildSliders() - ], - ); - } - - Widget _buildTransform() { - if (_rotateFlag == 1) { - _m4 = Matrix4.rotationX(_x); - } else if (_rotateFlag == 2) { - _m4 = Matrix4.rotationY(_x); - } else { - _m4 = Matrix4.rotationZ(_x); - } - - return Transform( - transform: _m4, - child: Container( - color: Colors.cyanAccent, - width: 100, - height: 100, - child: Image.asset( - 'assets/images/wy_300x200.jpg', - fit: BoxFit.cover, - )), - ); - } - - final Map map = { - 1: 'rotationX', - 2: 'rotationY', - 3: 'rotationZ', - }; - - Widget _buildSliders() => Column( - children: [ - Wrap( - children: map.keys.map((key) => _buildChild(key)).toList(), - ), - Slider( - min: -pi, - max: pi, - value: _x, - divisions: 360, - label: 'x:${_x.toStringAsFixed(1)}', - onChanged: (v) { - setState(() { - _x = v; - }); - }), - ], - ); - - Padding _buildChild(int key) { - return Padding( - padding: const EdgeInsets.all(4.0), - child: FilterChip( - selectedColor: Colors.orange.withAlpha(55), - selectedShadowColor: Colors.blue, - shadowColor: Colors.orangeAccent, - pressElevation: 5, - elevation: 3, - avatar: CircleAvatar(child: Text(key.toString())), - label: Text(map[key]), - selected: _rotateFlag == key, - onSelected: (bool value) { - print(map[key]); - setState(() { - _x = 0; - if (value) { - _rotateFlag = key; - } - }); - }, - ), - ); - } -} -// { -// "widgetId": 78, -// "name": '透视变换rotation', -// "priority": 5, -// "subtitle": -// "由R3C1、R3C2、R3C3控制透视" -// } -class R3C2 extends StatefulWidget { - @override - _R3C2State createState() => _R3C2State(); -} - -class _R3C2State extends State { - Matrix4 _m4; - double _value = 0; - double _rad = 0; - - @override - Widget build(BuildContext context) { - _m4 = Matrix4.identity() -// ..setEntry(3, 0, _value) // x -// ..setEntry(3, 1, _value)// y - ..setEntry(3, 2, _value) // z - ..rotateY(_rad) -// ..rotateX(_rad) - ; - return Column( - children: [ - Transform( - transform: _m4, - child: Container( - color: Colors.cyanAccent, - width: 100, - height: 100, - child: Image.asset( - 'assets/images/wy_300x200.jpg', - fit: BoxFit.cover, - )), - ), - _buildSliders() - ], - ); - } - - Widget _buildSliders() => Column( - children: [ - Slider( - min: -0.01, - max: 0.01, - value: _value, - divisions: 360, - label: 'x:${_value.toStringAsFixed(5)}', - onChanged: (v) { - setState(() { - _value = v; - }); - }), - Slider( - min: -pi, - max: pi, - value: _rad, - divisions: 360, - label: '角度:' + (_rad * 180 / pi).toStringAsFixed(1) + "°", - onChanged: (v) { - setState(() { - _rad = v; - }); - }), - ], - ); -} - -class Matrix4Shower extends StatelessWidget { - final Matrix4 matrix4; - - Matrix4Shower(this.matrix4); - - @override - Widget build(BuildContext context) { - return Container( - child: Text( - '${matrix4.entry(0, 0).toStringAsFixed(1)},${matrix4.entry(0, 1).toStringAsFixed(1)},${matrix4.entry(0, 2).toStringAsFixed(1)},${matrix4.entry(0, 3).toStringAsFixed(1)},\n' - '${matrix4.entry(1, 0).toStringAsFixed(1)},${matrix4.entry(1, 1).toStringAsFixed(1)},${matrix4.entry(1, 2).toStringAsFixed(1)},${matrix4.entry(1, 3).toStringAsFixed(1)},\n' - '${matrix4.entry(2, 0).toStringAsFixed(1)},${matrix4.entry(2, 1).toStringAsFixed(1)},${matrix4.entry(2, 2).toStringAsFixed(1)},${matrix4.entry(2, 3).toStringAsFixed(1)},\n' - '${matrix4.entry(3, 0).toStringAsFixed(1)},${matrix4.entry(3, 1).toStringAsFixed(1)},${matrix4.entry(3, 2).toStringAsFixed(1)},${matrix4.entry(3, 3).toStringAsFixed(1)}', - style: TextStyle(fontSize: 20, color: Colors.blue), - ), - ); - } -} diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Transform/matrix4_shower.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/matrix4_shower.dart new file mode 100644 index 0000000..1c14c72 --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/matrix4_shower.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +class Matrix4Shower extends StatelessWidget { + final Matrix4 matrix4; + + Matrix4Shower(this.matrix4); + + @override + Widget build(BuildContext context) { + return Container( + child: Text( + '${matrix4.entry(0, 0).toStringAsFixed(1)},${matrix4.entry(0, 1).toStringAsFixed(1)},${matrix4.entry(0, 2).toStringAsFixed(1)},${matrix4.entry(0, 3).toStringAsFixed(1)},\n' + '${matrix4.entry(1, 0).toStringAsFixed(1)},${matrix4.entry(1, 1).toStringAsFixed(1)},${matrix4.entry(1, 2).toStringAsFixed(1)},${matrix4.entry(1, 3).toStringAsFixed(1)},\n' + '${matrix4.entry(2, 0).toStringAsFixed(1)},${matrix4.entry(2, 1).toStringAsFixed(1)},${matrix4.entry(2, 2).toStringAsFixed(1)},${matrix4.entry(2, 3).toStringAsFixed(1)},\n' + '${matrix4.entry(3, 0).toStringAsFixed(1)},${matrix4.entry(3, 1).toStringAsFixed(1)},${matrix4.entry(3, 2).toStringAsFixed(1)},${matrix4.entry(3, 3).toStringAsFixed(1)}', + style: TextStyle(fontSize: 20, color: Colors.blue), + ), + ); + } +} \ No newline at end of file diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node1_skew.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node1_skew.dart new file mode 100644 index 0000000..d06d6cc --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node1_skew.dart @@ -0,0 +1,91 @@ +import 'dart:math'; +import 'dart:math' as prefix0; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import 'matrix4_shower.dart'; + +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 78, +// "name": '斜切变换skew', +// "priority": 1, +// "subtitle": +// "斜切x由R0C1数控制,入参为弧度值,表示斜切角度\n" +// "斜切y由R1C0数控制,入参为弧度值,表示斜切角度", +// } +class SkewTransform extends StatefulWidget { + @override + _SkewTransformState createState() => _SkewTransformState(); +} + +class _SkewTransformState extends State { + Matrix4 _m4; + double _alpha = 0; + double _beta = 0; + + @override + void initState() { + _m4 = Matrix4.identity(); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [_buildTransform(), Matrix4Shower(_m4)], + ), + _buildSliders() + ], + ); + } + + Widget _buildTransform() { + _m4 = Matrix4.skew(_alpha, _beta); + return Transform( + transform: _m4, + child: Container( + color: Colors.cyanAccent, + width: 100, + height: 100, + child: Image.asset( + 'assets/images/wy_300x200.jpg', + fit: BoxFit.cover, + )), + ); + } + + Widget _buildSliders() => Column( + children: [ + Slider( + min: -pi, + max: pi, + value: _alpha, + divisions: 360, + label: 'alpha:' + (_alpha * 180 / pi).toStringAsFixed(1) + "°", + onChanged: (v) { + setState(() { + _alpha = v; + }); + }), + Slider( + min: -pi, + max: pi, + value: _beta, + divisions: 360, + label: 'beta:' + (_beta * 180 / pi).toStringAsFixed(1) + "°", + onChanged: (v) { + setState(() { + _beta = v; + }); + }) + ], + ); +} \ No newline at end of file diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node2_translation.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node2_translation.dart new file mode 100644 index 0000000..8584a0a --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node2_translation.dart @@ -0,0 +1,100 @@ +import 'package:flutter/material.dart'; + +import 'matrix4_shower.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 78, +// "name": '平移变换translationValues', +// "priority": 2, +// "subtitle": +// "平移x由R0C3数控制,入参为数值,表示平移长度\n" +// "平移y由R1C3数控制,入参为数值,表示平移长度\n" +// "平移z由R2C3数控制,入参为数值,表示平移长度", +// } +class TranslationTransform extends StatefulWidget { + @override + _TranslationTransformState createState() => _TranslationTransformState(); +} + +class _TranslationTransformState extends State { + Matrix4 _m4; + double _x = 0; + double _y = 0; + double _z = 0; + + @override + void initState() { + _m4 = Matrix4.identity(); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [_buildTransform(), Matrix4Shower(_m4)], + ), + _buildSliders() + ], + ); + } + + Widget _buildTransform() { + _m4 = Matrix4.translationValues(_x, _y, _z); + return Transform( + transform: _m4, + child: Container( + color: Colors.cyanAccent, + width: 100, + height: 100, + child: Image.asset( + 'assets/images/wy_300x200.jpg', + fit: BoxFit.cover, + )), + ); + } + + Widget _buildSliders() => Column( + children: [ + Slider( + min: -100, + max: 100, + value: _x, + divisions: 360, + label: 'x:${_x.toStringAsFixed(1)}', + onChanged: (v) { + setState(() { + _x = v; + }); + }), + Slider( + min: -100, + max: 100, + value: _y, + divisions: 360, + label: 'y:${_y.toStringAsFixed(1)}', + onChanged: (v) { + setState(() { + _y = v; + }); + }), + Slider( + min: -100, + max: 100, + value: _z, + divisions: 360, + label: 'z:${_z.toStringAsFixed(1)}', + onChanged: (v) { + setState(() { + _z = v; + }); + }) + ], + ); +} diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node3_scale.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node3_scale.dart new file mode 100644 index 0000000..a3b317c --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node3_scale.dart @@ -0,0 +1,99 @@ +import 'package:flutter/material.dart'; +import 'matrix4_shower.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 78, +// "name": '缩放变换diagonal3Values', +// "priority": 3, +// "subtitle": +// "缩放x由R0C0数控制,入参为数值,表示缩放分率\n" +// "缩放y由R1C2数控制,入参为数值,表示缩放分率\n" +// "缩放z由R2C2数控制,入参为数值,表示缩放分率", +// } +class ScaleTransform extends StatefulWidget { + @override + _ScaleTransformState createState() => _ScaleTransformState(); +} + +class _ScaleTransformState extends State { + Matrix4 _m4; + double _x = 1.0; + double _y = 1.0; + double _z = 1.0; + + @override + void initState() { + _m4 = Matrix4.identity(); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [_buildTransform(), Matrix4Shower(_m4)], + ), + _buildSliders() + ], + ); + } + + Widget _buildTransform() { + _m4 = Matrix4.diagonal3Values(_x, _y, _z); + return Transform( + transform: _m4, + child: Container( + color: Colors.cyanAccent, + width: 100, + height: 100, + child: Image.asset( + 'assets/images/wy_300x200.jpg', + fit: BoxFit.cover, + )), + ); + } + + Widget _buildSliders() => Column( + children: [ + Slider( + min: -2, + max: 2, + value: _x, + divisions: 360, + label: 'x:${_x.toStringAsFixed(1)}', + onChanged: (v) { + setState(() { + _x = v; + }); + }), + Slider( + min: -2, + max: 2, + value: _y, + divisions: 360, + label: 'y:${_y.toStringAsFixed(1)}', + onChanged: (v) { + setState(() { + _y = v; + }); + }), + Slider( + min: -2, + max: 2, + value: _z, + divisions: 360, + label: 'z:${_z.toStringAsFixed(1)}', + onChanged: (v) { + setState(() { + _z = v; + }); + }) + ], + ); +} \ No newline at end of file diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node4_rotate.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node4_rotate.dart new file mode 100644 index 0000000..c8f955a --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node4_rotate.dart @@ -0,0 +1,120 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; + +import 'matrix4_shower.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 78, +// "name": '旋转变换rotation', +// "priority": 4, +// "subtitle": +// "x旋转由R1C1、R1C2、R2C1、R2C2控制,入参表示弧度\n" +// "y旋转由R0C0、R0C2、R2C0、R2C2控制,入参表示弧度\n" +// "z旋转由R0C0、R0C1、R1C0、R1C1控制,入参表示弧度\n" +// } +class RotateTransform extends StatefulWidget { + @override + _RotateTransformState createState() => _RotateTransformState(); +} + +class _RotateTransformState extends State { + Matrix4 _m4; + double _x = 0; + int _rotateFlag = 1; + + @override + void initState() { + _m4 = Matrix4.identity(); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [_buildTransform(), Matrix4Shower(_m4)], + ), + _buildSliders() + ], + ); + } + + Widget _buildTransform() { + if (_rotateFlag == 1) { + _m4 = Matrix4.rotationX(_x); + } else if (_rotateFlag == 2) { + _m4 = Matrix4.rotationY(_x); + } else { + _m4 = Matrix4.rotationZ(_x); + } + + return Transform( + transform: _m4, + child: Container( + color: Colors.cyanAccent, + width: 100, + height: 100, + child: Image.asset( + 'assets/images/wy_300x200.jpg', + fit: BoxFit.cover, + )), + ); + } + + final Map map = { + 1: 'rotationX', + 2: 'rotationY', + 3: 'rotationZ', + }; + + Widget _buildSliders() => Column( + children: [ + Wrap( + children: map.keys.map((key) => _buildChild(key)).toList(), + ), + Slider( + min: -pi, + max: pi, + value: _x, + divisions: 360, + label: 'x:${_x.toStringAsFixed(1)}', + onChanged: (v) { + setState(() { + _x = v; + }); + }), + ], + ); + + Padding _buildChild(int key) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: FilterChip( + selectedColor: Colors.orange.withAlpha(55), + selectedShadowColor: Colors.blue, + shadowColor: Colors.orangeAccent, + pressElevation: 5, + elevation: 3, + avatar: CircleAvatar(child: Text(key.toString())), + label: Text(map[key]), + selected: _rotateFlag == key, + onSelected: (bool value) { + print(map[key]); + setState(() { + _x = 0; + if (value) { + _rotateFlag = key; + } + }); + }, + ), + ); + } +} diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node5_perspective.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node5_perspective.dart new file mode 100644 index 0000000..69b1546 --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/node5_perspective.dart @@ -0,0 +1,79 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 78, +// "name": '透视变换rotation', +// "priority": 5, +// "subtitle": +// "由R3C1、R3C2、R3C3控制透视" +// } +class R3C2 extends StatefulWidget { + @override + _R3C2State createState() => _R3C2State(); +} + +class _R3C2State extends State { + Matrix4 _m4; + double _value = 0; + double _rad = 0; + + @override + Widget build(BuildContext context) { + _m4 = Matrix4.identity() +// ..setEntry(3, 0, _value) // x +// ..setEntry(3, 1, _value)// y + ..setEntry(3, 2, _value) // z + ..rotateY(_rad) +// ..rotateX(_rad) + ; + return Column( + children: [ + Transform( + transform: _m4, + child: Container( + color: Colors.cyanAccent, + width: 100, + height: 100, + child: Image.asset( + 'assets/images/wy_300x200.jpg', + fit: BoxFit.cover, + )), + ), + _buildSliders() + ], + ); + } + + Widget _buildSliders() => Column( + children: [ + Slider( + min: -0.01, + max: 0.01, + value: _value, + divisions: 360, + label: 'x:${_value.toStringAsFixed(5)}', + onChanged: (v) { + setState(() { + _value = v; + }); + }), + Slider( + min: -pi, + max: pi, + value: _rad, + divisions: 360, + label: '角度:' + (_rad * 180 / pi).toStringAsFixed(1) + "°", + onChanged: (v) { + setState(() { + _rad = v; + }); + }), + ], + ); +} \ No newline at end of file diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/Transform/zz_node_op.dart b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/zz_node_op.dart new file mode 100644 index 0000000..b473275 --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/Transform/zz_node_op.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/4/30 +/// contact me by email 1981462002@qq.com +/// 说明: + +class CustomTransform extends StatefulWidget { + @override + _CustomTransformState createState() => _CustomTransformState(); +} + +class _CustomTransformState extends State { + var angle = 0.0; + var m = [ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.1, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + ]; + + @override + Widget build(BuildContext context) { + var transform = Transform( + transform: Matrix4(m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], + m[9], m[10], m[11], m[12], m[13], m[14], m[15]), + child: Container( + alignment: Alignment.center, + color: Colors.cyanAccent, + width: 100, + height: 100, + child: Image.asset( + 'assets/images/wy_300x200.jpg', + fit: BoxFit.cover, + )), + ); + + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Container( + alignment: Alignment.topLeft, + color: Colors.grey.withAlpha(22), + width: 200, + height: 150, + child: transform, + ), + Text( + '${m[0]},${m[1]},${m[2]},${m[3]},\n' + '${m[4]},${m[5]},${m[6]},${m[7]},\n' + '${m[8]},${m[9]},${m[10]},${m[11]},\n' + '${m[12]},${m[13]},${m[14]},${m[15]}\n', + style: TextStyle(fontSize: 20), + ) + ], + ), + Container( + width: MediaQuery.of(context).size.width, + height: 200, + child: _buildSliders()) + ], + ); + } + + Widget _buildSliders() => GridView.count( + crossAxisCount: 2, + childAspectRatio: 8, + children: m + .asMap() + .keys + .map((i) => Slider( + value: m[i], + max: 0.01, + min: 0.0, + divisions: 10, + onChanged: (v) { + setState(() { + m[i] = v; + }); + })) + .toList()); +} diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/UnConstrainedBox.dart b/lib/views/widgets/SingleChildRenderObjectWidget/UnConstrainedBox/node1_base.dart similarity index 95% rename from lib/views/widgets/SingleChildRenderObjectWidget/UnConstrainedBox.dart rename to lib/views/widgets/SingleChildRenderObjectWidget/UnConstrainedBox/node1_base.dart index bfe36f1..36b143f 100644 --- a/lib/views/widgets/SingleChildRenderObjectWidget/UnConstrainedBox.dart +++ b/lib/views/widgets/SingleChildRenderObjectWidget/UnConstrainedBox/node1_base.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +/// create by 张风捷特烈 on 2020-04-19 +/// contact me by email 1981462002@qq.com +/// 说明: // { // "widgetId": 81, diff --git a/lib/views/widgets/Sliver/CustomScrollView.dart b/lib/views/widgets/Sliver/CustomScrollView/node1_base.dart similarity index 100% rename from lib/views/widgets/Sliver/CustomScrollView.dart rename to lib/views/widgets/Sliver/CustomScrollView/node1_base.dart diff --git a/lib/views/widgets/Sliver/FlexibleSpaceBar.dart b/lib/views/widgets/Sliver/FlexibleSpaceBar/node1_base.dart similarity index 100% rename from lib/views/widgets/Sliver/FlexibleSpaceBar.dart rename to lib/views/widgets/Sliver/FlexibleSpaceBar/node1_base.dart diff --git a/lib/views/widgets/Sliver/SliverAppBar.dart b/lib/views/widgets/Sliver/SliverAppBar/node1_base.dart similarity index 100% rename from lib/views/widgets/Sliver/SliverAppBar.dart rename to lib/views/widgets/Sliver/SliverAppBar/node1_base.dart diff --git a/lib/views/widgets/Sliver/SliverFillViewport.dart b/lib/views/widgets/Sliver/SliverFillViewport/node1_base.dart similarity index 100% rename from lib/views/widgets/Sliver/SliverFillViewport.dart rename to lib/views/widgets/Sliver/SliverFillViewport/node1_base.dart diff --git a/lib/views/widgets/Sliver/SliverFixedExtentList.dart b/lib/views/widgets/Sliver/SliverFixedExtentList/node1_base.dart similarity index 100% rename from lib/views/widgets/Sliver/SliverFixedExtentList.dart rename to lib/views/widgets/Sliver/SliverFixedExtentList/node1_base.dart diff --git a/lib/views/widgets/Sliver/SliverGrid.dart b/lib/views/widgets/Sliver/SliverGrid/node1_base.dart similarity index 100% rename from lib/views/widgets/Sliver/SliverGrid.dart rename to lib/views/widgets/Sliver/SliverGrid/node1_base.dart diff --git a/lib/views/widgets/Sliver/SliverList.dart b/lib/views/widgets/Sliver/SliverList/node1_base.dart similarity index 100% rename from lib/views/widgets/Sliver/SliverList.dart rename to lib/views/widgets/Sliver/SliverList/node1_base.dart diff --git a/lib/views/widgets/Sliver/SliverOpacity.dart b/lib/views/widgets/Sliver/SliverOpacity/node1_base.dart similarity index 100% rename from lib/views/widgets/Sliver/SliverOpacity.dart rename to lib/views/widgets/Sliver/SliverOpacity/node1_base.dart diff --git a/lib/views/widgets/Sliver/SliverPadding.dart b/lib/views/widgets/Sliver/SliverPadding/node1_base.dart similarity index 100% rename from lib/views/widgets/Sliver/SliverPadding.dart rename to lib/views/widgets/Sliver/SliverPadding/node1_base.dart diff --git a/lib/views/widgets/Sliver/SliverPersistentHeader.dart b/lib/views/widgets/Sliver/SliverPersistentHeader/node1_base.dart similarity index 100% rename from lib/views/widgets/Sliver/SliverPersistentHeader.dart rename to lib/views/widgets/Sliver/SliverPersistentHeader/node1_base.dart diff --git a/lib/views/widgets/Sliver/SliverToBoxAdapter.dart b/lib/views/widgets/Sliver/SliverToBoxAdapter/node1_base.dart similarity index 100% rename from lib/views/widgets/Sliver/SliverToBoxAdapter.dart rename to lib/views/widgets/Sliver/SliverToBoxAdapter/node1_base.dart diff --git a/lib/views/widgets/StatefulWidget/ExpansionTile/node1_base.dart b/lib/views/widgets/StatefulWidget/ExpansionTile/node1_base.dart index 235b204..c9e6451 100644 --- a/lib/views/widgets/StatefulWidget/ExpansionTile/node1_base.dart +++ b/lib/views/widgets/StatefulWidget/ExpansionTile/node1_base.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter_unit/views/widgets/stateless_unit.dart'; +import 'package:flutter_unit/views/widgets/exp/stateless_unit.dart'; // { // "widgetId": 52, diff --git a/lib/views/widgets/exp/other_unit.dart b/lib/views/widgets/exp/other_unit.dart new file mode 100644 index 0000000..7f9bb09 --- /dev/null +++ b/lib/views/widgets/exp/other_unit.dart @@ -0,0 +1,9 @@ +/// create by 张风捷特烈 on 2020/4/28 +/// contact me by email 1981462002@qq.com +/// 说明: + +library other_unit.dart; + + +export '../Other/ErrorWidget/node1_base.dart'; +export '../Other/Table/node1_base.dart'; \ No newline at end of file diff --git a/lib/views/widgets/exp/proxy_unit.dart b/lib/views/widgets/exp/proxy_unit.dart new file mode 100644 index 0000000..ee22856 --- /dev/null +++ b/lib/views/widgets/exp/proxy_unit.dart @@ -0,0 +1,19 @@ +/// create by 张风捷特烈 on 2020/4/28 +/// contact me by email 1981462002@qq.com +/// 说明: + +library proxy_widget_unit.dart; + + +export '../ProxyWidget/DropdownButtonHideUnderline/node1_base.dart'; +export '../ProxyWidget/Flexible/node1_base.dart'; +export '../ProxyWidget/MediaQuery/node1_base.dart'; +export '../ProxyWidget/ButtonTheme/node1_base.dart'; +export '../ProxyWidget/DefaultTextStyle/node1_base.dart'; +export '../ProxyWidget/SliderTheme/node1_base.dart'; +export '../ProxyWidget/SliderTheme/node2_diy.dart'; +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 diff --git a/lib/views/widgets/exp/render_object_unit.dart b/lib/views/widgets/exp/render_object_unit.dart new file mode 100644 index 0000000..0190ea9 --- /dev/null +++ b/lib/views/widgets/exp/render_object_unit.dart @@ -0,0 +1,70 @@ +library render_object_widget; + + +export '../MultiChildRenderObjectWidget/Flex/node1_direction.dart'; +export '../MultiChildRenderObjectWidget/Flex/node2_mainAxisAlignment.dart'; +export '../MultiChildRenderObjectWidget/Flex/node3_crossAxisAlignment.dart'; +export '../MultiChildRenderObjectWidget/Flex/node4_verticalDirection.dart'; +export '../MultiChildRenderObjectWidget/Flex/node5_textDirection.dart'; + +export '../MultiChildRenderObjectWidget/Flow/node1_base.dart'; +export '../MultiChildRenderObjectWidget/Flow/node2_anim.dart'; +export '../MultiChildRenderObjectWidget/RichText/node1_base.dart'; +export '../MultiChildRenderObjectWidget/RichText/node2_widget.dart'; +export '../MultiChildRenderObjectWidget/Stack/node1_base.dart'; +export '../MultiChildRenderObjectWidget/Stack/node2_positioned.dart'; +export '../MultiChildRenderObjectWidget/Wrap/node1_base.dart'; +export '../MultiChildRenderObjectWidget/Wrap/node2_alignment.dart'; +export '../MultiChildRenderObjectWidget/Wrap/node3_crossAxisAlignment.dart'; +export '../MultiChildRenderObjectWidget/Wrap/node4_textDirection.dart'; +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 '../SingleChildRenderObjectWidget/Align/node1_base.dart'; +export '../SingleChildRenderObjectWidget/Align/node2_other.dart'; + +export '../SingleChildRenderObjectWidget/ConstrainedBox/node1_base.dart'; +export '../SingleChildRenderObjectWidget/ColorFiltered/node1_base.dart'; +export '../SingleChildRenderObjectWidget/Baseline/node1_base.dart'; +export '../SingleChildRenderObjectWidget/DecoratedBox/node1_base.dart'; +export '../SingleChildRenderObjectWidget/FadeTransition/node1_base.dart'; +export '../SingleChildRenderObjectWidget/FittedBox/node1_base.dart'; +export '../SingleChildRenderObjectWidget/FractionallySizedBox/node1_base.dart'; +export '../SingleChildRenderObjectWidget/LimiteBox/node1_base.dart'; +export '../SingleChildRenderObjectWidget/OffStage/node1_base.dart'; +export '../SingleChildRenderObjectWidget/Opacity/node1_base.dart'; +export '../SingleChildRenderObjectWidget/Padding/node1_base.dart'; +export '../SingleChildRenderObjectWidget/RotatedBox/node1_base.dart'; +export '../SingleChildRenderObjectWidget/SizedBox/node1_base.dart'; +export '../SingleChildRenderObjectWidget/SizedOverflowBox/node1_base.dart'; +export '../SingleChildRenderObjectWidget/Transform/node1_skew.dart'; +export '../SingleChildRenderObjectWidget/Transform/node2_translation.dart'; +export '../SingleChildRenderObjectWidget/Transform/node3_scale.dart'; +export '../SingleChildRenderObjectWidget/Transform/node4_rotate.dart'; +export '../SingleChildRenderObjectWidget/Transform/node5_perspective.dart'; +export '../SingleChildRenderObjectWidget/UnConstrainedBox/node1_base.dart'; +export '../StatefulWidget/PositionedTransition/node1_base.dart'; +export '../StatefulWidget/RotationTransition/node1_base.dart'; +export '../StatefulWidget/ScaleTransition/node1_base.dart'; +export '../StatefulWidget/SizeTransition/node1_base.dart'; +export '../SingleChildRenderObjectWidget/ClipOval/node1_base.dart'; +export '../SingleChildRenderObjectWidget/ClipPath/node1_base.dart'; +export '../SingleChildRenderObjectWidget/ClipRRect/node1_base.dart'; +export '../SingleChildRenderObjectWidget/ClipRect/node1_base.dart'; +export '../SingleChildRenderObjectWidget/OverflowBox/node1_base.dart'; +export '../SingleChildRenderObjectWidget/AspectRatio/node1_base.dart'; +export '../SingleChildRenderObjectWidget/AnimatedSize/node1_base.dart'; +export '../SingleChildRenderObjectWidget/Center/node1_base.dart'; +export '../SingleChildRenderObjectWidget/CustomPaint/node2_bezier.dart'; +export '../SingleChildRenderObjectWidget/CustomPaint/node1_clock.dart'; +export '../SingleChildRenderObjectWidget/AbsorbPointer/node1_base.dart'; +export '../SingleChildRenderObjectWidget/BackdropFilter/node1_base.dart'; +export '../SingleChildRenderObjectWidget/IgnorePointer/node1_base.dart'; +export '../SingleChildRenderObjectWidget/LayoutBuilder/node1_base.dart'; +export '../SingleChildRenderObjectWidget/LayoutBuilder/node2_fit.dart'; +export '../SingleChildRenderObjectWidget/LayoutBuilder/node3_expend.dart'; +export '../SingleChildRenderObjectWidget/ShaderMask/node1_radial.dart'; +export '../SingleChildRenderObjectWidget/ShaderMask/node2_linear.dart'; \ No newline at end of file diff --git a/lib/views/widgets/exp/sliver_unit.dart b/lib/views/widgets/exp/sliver_unit.dart new file mode 100644 index 0000000..e04c9d3 --- /dev/null +++ b/lib/views/widgets/exp/sliver_unit.dart @@ -0,0 +1,17 @@ +/// create by 张风捷特烈 on 2020/4/28 +/// contact me by email 1981462002@qq.com +/// 说明: + +library sliver_unit.dart; + +export '../Sliver/CustomScrollView/node1_base.dart'; +export '../Sliver/FlexibleSpaceBar/node1_base.dart'; +export '../Sliver/SliverAppBar/node1_base.dart'; +export '../Sliver/SliverFillViewport/node1_base.dart'; +export '../Sliver/SliverFixedExtentList/node1_base.dart'; +export '../Sliver/SliverGrid/node1_base.dart'; +export '../Sliver/SliverList/node1_base.dart'; +export '../Sliver/SliverOpacity/node1_base.dart'; +export '../Sliver/SliverPadding/node1_base.dart'; +export '../Sliver/SliverPersistentHeader/node1_base.dart'; +export '../Sliver/SliverToBoxAdapter/node1_base.dart'; diff --git a/lib/views/widgets/exp/stateful_unit.dart b/lib/views/widgets/exp/stateful_unit.dart new file mode 100644 index 0000000..cf2ac3d --- /dev/null +++ b/lib/views/widgets/exp/stateful_unit.dart @@ -0,0 +1,129 @@ +library stateful_unit; + +export '../StatefulWidget/CupertinoButton/node1_base.dart'; +export '../StatefulWidget/CupertinoContextMenu/node1_base.dart'; +export '../StatefulWidget/CupertinoContextMenuAction/node1_base.dart'; + +export '../StatefulWidget/CupertinoDatePicker/node1_base.dart'; +export '../StatefulWidget/CupertinoPicker/node1_base.dart'; +export '../StatefulWidget/CupertinoTimerPicker/node1_base.dart'; +export '../StatefulWidget/SlideTransition/node1_base.dart'; +export '../StatefulWidget/MonthPicker/node1_base.dart'; +export '../StatefulWidget/YearPicker/node1_base.dart'; +export '../StatefulWidget/WillPopScope/node1_base.dart'; + +export '../StatefulWidget/AppBar/node1_base.dart'; +export '../StatefulWidget/AppBar/node2_tab.dart'; +export '../StatefulWidget/BottomAppBar/node1_base.dart'; +export '../StatefulWidget/BottomNavigationBar/node1_base.dart'; +export '../StatefulWidget/BottomNavigationBar/node2_page.dart'; +export '../StatefulWidget/Checkbox/node1_base.dart'; +export '../StatefulWidget/Checkbox/node2_tristate.dart'; +export '../StatefulWidget/ExpandIcon/node1_base.dart'; +export '../StatefulWidget/ExpansionTile/node1_base.dart'; +export '../StatefulWidget/Radio/node1_base.dart'; +export '../StatefulWidget/Tooltip/node1_base.dart'; +export '../StatefulWidget/Tooltip/node2_decoration.dart'; +export '../StatefulWidget/CircularProgressIndicator/node1_base.dart'; +export '../StatefulWidget/CupertinoActivityIndicator/node1_base.dart'; +export '../StatefulWidget/CupertinoSlider/node1_base.dart'; +export '../StatefulWidget/CupertinoSwitch/node1_base.dart'; + +export '../StatefulWidget/Image/node1_base.dart'; +export '../StatefulWidget/Image/node2_fit.dart'; +export '../StatefulWidget/Image/node3_alignment.dart'; +export '../StatefulWidget/Image/node4_colorBlendMode.dart'; +export '../StatefulWidget/Image/node5_repeat.dart'; +export '../StatefulWidget/Image/node6_centerSlice.dart'; + +export '../StatefulWidget/RangeSlider/node1_base.dart'; +export '../StatefulWidget/Slider/node1_base.dart'; +export '../StatefulWidget/Slider/node2_lable.dart'; +export '../StatefulWidget/Switch/node1_base.dart'; +export '../StatefulWidget/Switch/node2_image.dart'; +export '../StatefulWidget/TextField/node3_decoration.dart'; +export '../StatefulWidget/RefreshIndicator/node1_base.dart'; +export '../StatefulWidget/SelectableText/node1_base.dart'; +export '../StatefulWidget/SelectableText/node2_align.dart'; +export '../StatefulWidget/CupertinoNavigationBar/node1_base.dart'; +export '../StatefulWidget/CupertinoTabBar/node1_base.dart'; + +export '../StatefulWidget/DropdownButton/node1_base.dart'; +export '../StatefulWidget/DropdownButton/node2_style.dart'; + +export '../StatefulWidget/AnimatedCrossFade/node1_base.dart'; +export '../StatefulWidget/AnimatedCrossFade/node2_curve.dart'; + +export '../StatefulWidget/AnimatedList/node1_base.dart'; +export '../StatefulWidget/AnimatedSwitcher/node1_base.dart'; +export '../StatefulWidget/AlignTransition/node1_base.dart'; +export '../StatefulWidget/DecoratedBoxTransition/node1_base.dart'; +export '../StatefulWidget/DefaultTextStyleTransition/node1_base.dart'; +export '../StatefulWidget/RelativePositionedTransition/node1_base.dart'; +export '../StatefulWidget/CupertinoScrollbar/node1_base.dart'; + +export '../StatefulWidget/Dismissible/node1_base.dart'; +export '../StatefulWidget/Dismissible/node2_direction.dart'; + +export '../StatefulWidget/DragTarget/node1_base.dart'; +export '../StatefulWidget/Draggable/node1_base.dart'; +export '../StatefulWidget/Draggable/node2_data.dart'; +export '../StatefulWidget/Draggable/node3_use.dart'; + +export '../StatefulWidget/Form/node1_base.dart'; +export '../StatefulWidget/FutureBuilder/node1_base.dart'; +export '../StatefulWidget/Hero/node1_base.dart'; +export '../StatefulWidget/AnimatedAlign/node1_base.dart'; +export '../StatefulWidget/AnimatedContainer/node1_base.dart'; +export '../StatefulWidget/AnimatedDefaultTextStyle/node1_base.dart'; +export '../StatefulWidget/AnimatedOpacity/node1_base.dart'; +export '../StatefulWidget/AnimatedPadding/node1_base.dart'; +export '../StatefulWidget/AnimatedPositioned/node1_base.dart'; +export '../StatefulWidget/AnimatedPositionedDirectional/node1_base.dart'; + +export '../StatefulWidget/ExpansionPanelList/node1_base.dart'; + +export '../StatefulWidget/Ink/node1_base.dart'; +export '../StatefulWidget/Ink/node2_image.dart'; + +export '../StatefulWidget/InkResponse/node1_base.dart'; +export '../StatefulWidget/InkResponse/node2_color.dart'; + +export '../StatefulWidget/InkWell/node1_base.dart'; +export '../StatefulWidget/InkWell/node2_color.dart'; + +export '../StatefulWidget/LicensePage/node1_base.dart'; +export '../StatefulWidget/ListWheelScrollView/node1_base.dart'; +export '../StatefulWidget/LongPressDraggable/node1_base.dart'; +export '../StatefulWidget/Material/node1_base.dart'; +export '../StatefulWidget/Material/node2_shape.dart'; +export '../StatefulWidget/Overlay/node1_base.dart'; +export '../StatefulWidget/PageView/node1_base.dart'; +export '../StatefulWidget/PageView/node2_direction.dart'; +export '../StatefulWidget/PageView/node3_controller.dart'; +export '../StatefulWidget/PopupMenuButton/node1_base.dart'; +export '../StatefulWidget/PopupMenuDivider/node1_base.dart'; +export '../StatefulWidget/RawChip/node1_press.dart'; +export '../StatefulWidget/RawChip/node2_select.dart'; + +export '../StatefulWidget/RawMaterialButton/node1_base.dart'; +export '../StatefulWidget/RawMaterialButton/node2_shape.dart'; +export '../StatefulWidget/ReorderableListView/node1_base.dart'; +export '../StatefulWidget/ReorderableListView/node2_direction.dart'; +export '../StatefulWidget/Scrollbar/node1_base.dart'; +export '../StatefulWidget/Stepper/node1_base.dart'; +export '../StatefulWidget/Stepper/node2_type.dart'; +export '../StatefulWidget/StreamBuilder/node1_base.dart'; +export '../StatefulWidget/TableRowInkWell/node1_base.dart'; +export '../StatefulWidget/TextField/node1_base.dart'; +export '../StatefulWidget/TextField/node2_cursor.dart'; +export '../StatefulWidget/TextField/node3_decoration.dart'; + +export '../StatefulWidget/TextFormField/node1_base.dart'; +export '../StatefulWidget/LinearProgressIndicator/node1_base.dart'; +export '../StatefulWidget/CupertinoApp/node1_base.dart'; +export '../StatefulWidget/CupertinoPageScaffold/node1_base.dart'; +export '../StatefulWidget/CupertinoTabScaffold/node1_base.dart'; +export '../StatefulWidget/MaterialApp/node1_base.dart'; +export '../StatefulWidget/Scaffold/node1_base.dart'; +export '../StatefulWidget/TabBarView/node1_base.dart'; diff --git a/lib/views/widgets/exp/stateless_unit.dart b/lib/views/widgets/exp/stateless_unit.dart new file mode 100644 index 0000000..9a9e6ce --- /dev/null +++ b/lib/views/widgets/exp/stateless_unit.dart @@ -0,0 +1,168 @@ +library stateless_unit; + +export '../StatelessWidget/AboutDialog/node1_base.dart'; +export '../StatelessWidget/AboutListTile/node1_base.dart'; +export '../StatelessWidget/ActionChip/node1_base.dart'; +export '../StatelessWidget/AlertDialog/node1_base.dart'; +export '../StatelessWidget/AnimatedIcon/node1_base.dart'; +export '../StatelessWidget/Card/node1_base.dart'; +export '../StatelessWidget/Card/node2_shape.dart'; + +export '../StatelessWidget/CheckboxListTile/node1_base.dart'; +export '../StatelessWidget/CheckboxListTile/node2_select.dart'; +export '../StatelessWidget/CheckboxListTile/node3_dense.dart'; + +export '../StatelessWidget/Chip/node1_base.dart'; +export '../StatelessWidget/Chip/node2_color.dart'; +export '../StatelessWidget/Chip/node3_delete.dart'; + +export '../StatelessWidget/Container/node1_base.dart'; +export '../StatelessWidget/Container/node2_child.dart'; +export '../StatelessWidget/Container/node3_alignment.dart'; +export '../StatelessWidget/Container/node4_decoration.dart'; +export '../StatelessWidget/Container/node5_transform.dart'; +export '../StatelessWidget/Container/node6_constraints.dart'; + +export '../StatelessWidget/DataTable/node1_base.dart'; +export '../StatelessWidget/DataTable/node2_operation.dart'; + +export '../StatelessWidget/CupertinoTheme/node1_base.dart'; +export '../StatelessWidget/CupertinoTheme/node2_use.dart'; + +export '../StatelessWidget/Divider/node1_base.dart'; +export '../StatelessWidget/Divider/node2_height.dart'; + +export '../StatelessWidget/FloatingActionButton/node1_base.dart'; +export '../StatelessWidget/FloatingActionButton/node2_mini.dart'; +export '../StatelessWidget/FloatingActionButton/node3_shape.dart'; +export '../StatelessWidget/GestureDetector/node1_base.dart'; +export '../StatelessWidget/GestureDetector/node2_tap.dart'; +export '../StatelessWidget/GestureDetector/node3_pan.dart'; + +export '../StatelessWidget/Banner/node1_base.dart'; +export '../StatelessWidget/ImageIcon/node1_base.dart'; +export '../StatelessWidget/FadeInImage/node1_base.dart'; +export '../StatelessWidget/CircleAvatar/node1_base.dart'; + + +export '../StatelessWidget/InputChip/node1_base.dart'; +export '../StatelessWidget/InputChip/node2_select.dart'; + + +export '../StatelessWidget/Visibility/node1_base.dart'; +export '../StatelessWidget/Visibility/node2_replacement.dart'; + +export '../StatelessWidget/ChoiceChip/node1_base.dart'; + +export '../StatelessWidget/FilterChip/node1_base.dart'; + + +export '../StatelessWidget/ListTile/node1_base.dart'; +export '../StatelessWidget/ListTile/node2_select.dart'; +export '../StatelessWidget/ListTile/node3_dense.dart'; + + +export '../StatelessWidget/ListView/node1_base.dart'; +export '../StatelessWidget/ListView/node2_direction.dart'; +export '../StatelessWidget/ListView/node3_builder.dart'; +export '../StatelessWidget/ListView/node4_separated.dart'; + +export '../StatelessWidget/MaterialButton/node1_base.dart'; +export '../StatelessWidget/MaterialButton/node2_onLongPress.dart'; +export '../StatelessWidget/MaterialButton/node3_shape.dart'; + +export '../StatelessWidget/GridTileBar/node1_base.dart'; +export '../StatelessWidget/GridTile/node1_base.dart'; + +export '../StatelessWidget/Icon/node1_base.dart'; +export '../StatelessWidget/Icon/node2_diy.dart'; + +export '../StatelessWidget/Placeholder/node1_base.dart'; +export '../StatelessWidget/Placeholder/node2_fallback.dart'; + +export '../StatelessWidget/RadioListTile/node1_base.dart'; +export '../StatelessWidget/RadioListTile/node2_dense.dart' show DenseRadioListTile; + +export '../StatelessWidget/SingleChildScrollView/node1_base.dart'; +export '../StatelessWidget/SingleChildScrollView/node2_direction.dart'; + +export '../StatelessWidget/TabBar/node1_base.dart'; +export '../StatelessWidget/TabBar/node2_noShadow.dart'; + + +export '../StatelessWidget/UserAccountsDrawerHeader/node2_pro.dart'; +export '../StatelessWidget/VerticalDivider/node2_height.dart'; + +export '../StatelessWidget/BackButton/node1_base.dart'; +export '../StatelessWidget/ButtonBar/node1_base.dart'; +export '../StatelessWidget/CloseButton/node1_base.dart'; + +export '../StatelessWidget/FlatButton/node1_base.dart'; + +export '../StatelessWidget/FlutterLogo/node1_base.dart'; +export '../StatelessWidget/FlutterLogo/node2_style.dart'; + +export '../StatelessWidget/IconButton/node1_base.dart'; +export '../StatelessWidget/OutlineButton/node1_base.dart'; +export '../StatelessWidget/RaisedButton/node1_base.dart'; + +export '../StatelessWidget/Drawer/node1_base.dart'; +export '../StatelessWidget/DrawerHeader/node1_base.dart'; + +export '../StatelessWidget/UserAccountsDrawerHeader/node1_base.dart'; +export '../StatelessWidget/UserAccountsDrawerHeader/node2_pro.dart'; + + +export '../StatelessWidget/VerticalDivider/node1_base.dart'; +export '../StatelessWidget/VerticalDivider/node2_height.dart'; + + +export '../StatelessWidget/GirdView/node1_base.dart'; +export '../StatelessWidget/GirdView/node2_direction.dart'; +export '../StatelessWidget/GirdView/node3_extend.dart'; +export '../StatelessWidget/GirdView/node4_builder.dart'; + +export '../StatelessWidget/GridPaper/node1_base.dart'; +export '../StatelessWidget/GridPaper/node2_divisions.dart'; + +export '../StatelessWidget/Spacer/node1_base.dart'; +export '../StatelessWidget/Spacer/node2_flex.dart'; + +export '../StatelessWidget/SwitchListTile/node1_base.dart'; +export '../StatelessWidget/SwitchListTile/node2_select.dart'; +export '../StatelessWidget/SwitchListTile/node3_dense.dart'; + +export '../StatelessWidget/Listener/node1_base.dart'; +export '../StatelessWidget/PositionedDirectional/node1_base.dart'; + +export '../StatelessWidget/Tab/node1_base.dart'; +export '../StatelessWidget/Theme/node1_base.dart'; +export '../StatelessWidget/Theme/node2_use.dart'; + +export '../StatelessWidget/ToggleButtons/node1_single.dart'; +export '../StatelessWidget/ToggleButtons/node2_color.dart'; +export '../StatelessWidget/ToggleButtons/node3_multi.dart'; + + +export '../StatelessWidget/BottomSheet/node1_base.dart'; +export '../StatelessWidget/CupertinoActionSheet/node1_base.dart'; +export '../StatelessWidget/CupertinoActionSheetAction/node1_base.dart'; +export '../StatelessWidget/CupertinoAlertDialog/node1_base.dart'; + +export '../StatelessWidget/Text/node1_base.dart'; +export '../StatelessWidget/Text/node2_shadows.dart'; +export '../StatelessWidget/Text/node3_decoration.dart'; +export '../StatelessWidget/Text/node4_textAlign.dart'; +export '../StatelessWidget/Text/node5_textDirection.dart'; +export '../StatelessWidget/Text/node6_softWrap.dart'; + + +export '../StatelessWidget/DayPicker/node1_base.dart'; +export '../StatelessWidget/Dialog/node1_base.dart'; + +export '../StatelessWidget/SimpleDialog/node1_base.dart'; +export '../StatelessWidget/SimpleDialogOption/node1_base.dart'; +export '../StatelessWidget/SnackBar/node1_base.dart'; +export '../StatelessWidget/SnackBarAction/node1_base.dart'; + + diff --git a/lib/views/widgets/proxy_unit.dart b/lib/views/widgets/proxy_unit.dart deleted file mode 100644 index 14ccd54..0000000 --- a/lib/views/widgets/proxy_unit.dart +++ /dev/null @@ -1,18 +0,0 @@ -/// create by 张风捷特烈 on 2020/4/28 -/// contact me by email 1981462002@qq.com -/// 说明: - -library proxy_widget_unit.dart; - - -export 'ProxyWidget/DropdownButtonHideUnderline.dart'; -export 'ProxyWidget/Flexible.dart'; -export 'ProxyWidget/MediaQuery.dart'; -export 'ProxyWidget/ButtonTheme.dart'; -export 'ProxyWidget/DefaultTextStyle.dart'; -export 'ProxyWidget/SliderTheme.dart'; -export 'ProxyWidget/DividerTheme.dart'; -export 'ProxyWidget/IconTheme.dart'; -export 'ProxyWidget/ScrollConfiguration.dart'; -export 'ProxyWidget/Expanded.dart'; -export 'ProxyWidget/Positioned.dart'; \ No newline at end of file diff --git a/lib/views/widgets/render_object_unit.dart b/lib/views/widgets/render_object_unit.dart deleted file mode 100644 index 4083240..0000000 --- a/lib/views/widgets/render_object_unit.dart +++ /dev/null @@ -1,50 +0,0 @@ -library render_object_widget; - - -export 'MultiChildRenderObjectWidget/Flex.dart'; -export 'MultiChildRenderObjectWidget/Flow.dart'; -export 'MultiChildRenderObjectWidget/RichText.dart'; -export 'MultiChildRenderObjectWidget/Stack.dart'; -export 'MultiChildRenderObjectWidget/Wrap.dart'; -export 'SingleChildRenderObjectWidget/Align.dart'; -export 'SingleChildRenderObjectWidget/ConstrainedBox.dart'; -export 'SingleChildRenderObjectWidget/ColorFiltered.dart'; -export 'SingleChildRenderObjectWidget/Baseline.dart'; -export 'SingleChildRenderObjectWidget/DecoratedBox.dart'; -export 'SingleChildRenderObjectWidget/FadeTransition.dart'; -export 'SingleChildRenderObjectWidget/FittedBox.dart'; -export 'SingleChildRenderObjectWidget/FractionallySizedBox.dart'; -export 'SingleChildRenderObjectWidget/LimiteBox.dart'; -export 'SingleChildRenderObjectWidget/OffStage.dart'; -export 'SingleChildRenderObjectWidget/Opacity.dart'; -export 'SingleChildRenderObjectWidget/Padding.dart'; -export 'SingleChildRenderObjectWidget/RotatedBox.dart'; -export 'SingleChildRenderObjectWidget/SizedBox.dart'; -export 'SingleChildRenderObjectWidget/SizedOverflowBox.dart'; -export 'SingleChildRenderObjectWidget/Transform.dart'; -export 'SingleChildRenderObjectWidget/UnConstrainedBox.dart'; -export 'StatefulWidget/PositionedTransition/node1_base.dart'; -export 'StatefulWidget/RotationTransition/node1_base.dart'; -export 'StatefulWidget/ScaleTransition/node1_base.dart'; -export 'StatefulWidget/SizeTransition/node1_base.dart'; -export 'SingleChildRenderObjectWidget/ClipOval.dart'; -export 'SingleChildRenderObjectWidget/ClipPath.dart'; -export 'SingleChildRenderObjectWidget/ClipRRect.dart'; -export 'SingleChildRenderObjectWidget/ClipRect.dart'; -export 'SingleChildRenderObjectWidget/OverflowBox.dart'; -export 'other/Table.dart'; -export 'SingleChildRenderObjectWidget/AspectRatio.dart'; - - -export 'MultiChildRenderObjectWidget/Column.dart'; -export 'MultiChildRenderObjectWidget/IndexedStack.dart'; -export 'MultiChildRenderObjectWidget/Row.dart'; -export 'SingleChildRenderObjectWidget/AnimatedSize.dart'; -export 'SingleChildRenderObjectWidget/Center.dart'; -export 'SingleChildRenderObjectWidget/CustomPaint/CustomPaint.dart'; -export 'SingleChildRenderObjectWidget/CustomPaint/colck_page/colck_page.dart'; -export 'SingleChildRenderObjectWidget/AbsorbPointer.dart'; -export 'SingleChildRenderObjectWidget/BackdropFilter.dart'; -export 'SingleChildRenderObjectWidget/IgnorePointer.dart'; -export 'SingleChildRenderObjectWidget/LayoutBuilder.dart'; -export 'SingleChildRenderObjectWidget/ShaderMask.dart'; \ No newline at end of file diff --git a/lib/views/widgets/stateful_unit.dart b/lib/views/widgets/stateful_unit.dart deleted file mode 100644 index b20ae0f..0000000 --- a/lib/views/widgets/stateful_unit.dart +++ /dev/null @@ -1,129 +0,0 @@ -library stateful_unit; - -export 'StatefulWidget/CupertinoButton/node1_base.dart'; -export 'StatefulWidget/CupertinoContextMenu/node1_base.dart'; -export 'StatefulWidget/CupertinoContextMenuAction/node1_base.dart'; - -export 'StatefulWidget/CupertinoDatePicker/node1_base.dart'; -export 'StatefulWidget/CupertinoPicker/node1_base.dart'; -export 'StatefulWidget/CupertinoTimerPicker/node1_base.dart'; -export 'StatefulWidget/SlideTransition/node1_base.dart'; -export 'StatefulWidget/MonthPicker/node1_base.dart'; -export 'StatefulWidget/YearPicker/node1_base.dart'; -export 'StatefulWidget/WillPopScope/node1_base.dart'; - -export 'StatefulWidget/AppBar/node1_base.dart'; -export 'StatefulWidget/AppBar/node2_tab.dart'; -export 'StatefulWidget/BottomAppBar/node1_base.dart'; -export 'StatefulWidget/BottomNavigationBar/node1_base.dart'; -export 'StatefulWidget/BottomNavigationBar/node2_page.dart'; -export 'StatefulWidget/Checkbox/node1_base.dart'; -export 'StatefulWidget/Checkbox/node2_tristate.dart'; -export 'StatefulWidget/ExpandIcon/node1_base.dart'; -export 'StatefulWidget/ExpansionTile/node1_base.dart'; -export 'StatefulWidget/Radio/node1_base.dart'; -export 'StatefulWidget/Tooltip/node1_base.dart'; -export 'StatefulWidget/Tooltip/node2_decoration.dart'; -export 'StatefulWidget/CircularProgressIndicator/node1_base.dart'; -export 'StatefulWidget/CupertinoActivityIndicator/node1_base.dart'; -export 'StatefulWidget/CupertinoSlider/node1_base.dart'; -export 'StatefulWidget/CupertinoSwitch/node1_base.dart'; - -export 'StatefulWidget/Image/node1_base.dart'; -export 'StatefulWidget/Image/node2_fit.dart'; -export 'StatefulWidget/Image/node3_alignment.dart'; -export 'StatefulWidget/Image/node4_colorBlendMode.dart'; -export 'StatefulWidget/Image/node5_repeat.dart'; -export 'StatefulWidget/Image/node6_centerSlice.dart'; - -export 'StatefulWidget/RangeSlider/node1_base.dart'; -export 'StatefulWidget/Slider/node1_base.dart'; -export 'StatefulWidget/Slider/node2_lable.dart'; -export 'StatefulWidget/Switch/node1_base.dart'; -export 'StatefulWidget/Switch/node2_image.dart'; -export 'StatefulWidget/TextField/node3_decoration.dart'; -export 'StatefulWidget/RefreshIndicator/node1_base.dart'; -export 'StatefulWidget/SelectableText/node1_base.dart'; -export 'StatefulWidget/SelectableText/node2_align.dart'; -export 'StatefulWidget/CupertinoNavigationBar/node1_base.dart'; -export 'StatefulWidget/CupertinoTabBar/node1_base.dart'; - -export 'StatefulWidget/DropdownButton/node1_base.dart'; -export 'StatefulWidget/DropdownButton/node2_style.dart'; - -export 'StatefulWidget/AnimatedCrossFade/node1_base.dart'; -export 'StatefulWidget/AnimatedCrossFade/node2_curve.dart'; - -export 'StatefulWidget/AnimatedList/node1_base.dart'; -export 'StatefulWidget/AnimatedSwitcher/node1_base.dart'; -export 'StatefulWidget/AlignTransition/node1_base.dart'; -export 'StatefulWidget/DecoratedBoxTransition/node1_base.dart'; -export 'StatefulWidget/DefaultTextStyleTransition/node1_base.dart'; -export 'StatefulWidget/RelativePositionedTransition/node1_base.dart'; -export 'StatefulWidget/CupertinoScrollbar/node1_base.dart'; - -export 'StatefulWidget/Dismissible/node1_base.dart'; -export 'StatefulWidget/Dismissible/node2_direction.dart'; - -export 'StatefulWidget/DragTarget/node1_base.dart'; -export 'StatefulWidget/Draggable/node1_base.dart'; -export 'StatefulWidget/Draggable/node2_data.dart'; -export 'StatefulWidget/Draggable/node3_use.dart'; - -export 'StatefulWidget/Form/node1_base.dart'; -export 'StatefulWidget/FutureBuilder/node1_base.dart'; -export 'StatefulWidget/Hero/node1_base.dart'; -export 'StatefulWidget/AnimatedAlign/node1_base.dart'; -export 'StatefulWidget/AnimatedContainer/node1_base.dart'; -export 'StatefulWidget/AnimatedDefaultTextStyle/node1_base.dart'; -export 'StatefulWidget/AnimatedOpacity/node1_base.dart'; -export 'StatefulWidget/AnimatedPadding/node1_base.dart'; -export 'StatefulWidget/AnimatedPositioned/node1_base.dart'; -export 'StatefulWidget/AnimatedPositionedDirectional/node1_base.dart'; - -export 'StatefulWidget/ExpansionPanelList/node1_base.dart'; - -export 'StatefulWidget/Ink/node1_base.dart'; -export 'StatefulWidget/Ink/node2_image.dart'; - -export 'StatefulWidget/InkResponse/node1_base.dart'; -export 'StatefulWidget/InkResponse/node2_color.dart'; - -export 'StatefulWidget/InkWell/node1_base.dart'; -export 'StatefulWidget/InkWell/node2_color.dart'; - -export 'StatefulWidget/LicensePage/node1_base.dart'; -export 'StatefulWidget/ListWheelScrollView/node1_base.dart'; -export 'StatefulWidget/LongPressDraggable/node1_base.dart'; -export 'StatefulWidget/Material/node1_base.dart'; -export 'StatefulWidget/Material/node2_shape.dart'; -export 'StatefulWidget/Overlay/node1_base.dart'; -export 'StatefulWidget/PageView/node1_base.dart'; -export 'StatefulWidget/PageView/node2_direction.dart'; -export 'StatefulWidget/PageView/node3_controller.dart'; -export 'StatefulWidget/PopupMenuButton/node1_base.dart'; -export 'StatefulWidget/PopupMenuDivider/node1_base.dart'; -export 'StatefulWidget/RawChip/node1_press.dart'; -export 'StatefulWidget/RawChip/node2_select.dart'; - -export 'StatefulWidget/RawMaterialButton/node1_base.dart'; -export 'StatefulWidget/RawMaterialButton/node2_shape.dart'; -export 'StatefulWidget/ReorderableListView/node1_base.dart'; -export 'StatefulWidget/ReorderableListView/node2_direction.dart'; -export 'StatefulWidget/Scrollbar/node1_base.dart'; -export 'StatefulWidget/Stepper/node1_base.dart'; -export 'StatefulWidget/Stepper/node2_type.dart'; -export 'StatefulWidget/StreamBuilder/node1_base.dart'; -export 'StatefulWidget/TableRowInkWell/node1_base.dart'; -export 'StatefulWidget/TextField/node1_base.dart'; -export 'StatefulWidget/TextField/node2_cursor.dart'; -export 'StatefulWidget/TextField/node3_decoration.dart'; - -export 'StatefulWidget/TextFormField/node1_base.dart'; -export 'StatefulWidget/LinearProgressIndicator/node1_base.dart'; -export 'StatefulWidget/CupertinoApp/node1_base.dart'; -export 'StatefulWidget/CupertinoPageScaffold/node1_base.dart'; -export 'StatefulWidget/CupertinoTabScaffold/node1_base.dart'; -export 'StatefulWidget/MaterialApp/node1_base.dart'; -export 'StatefulWidget/Scaffold/node1_base.dart'; -export 'StatefulWidget/TabBarView/node1_base.dart'; diff --git a/lib/views/widgets/stateless_unit.dart b/lib/views/widgets/stateless_unit.dart deleted file mode 100644 index 01ce133..0000000 --- a/lib/views/widgets/stateless_unit.dart +++ /dev/null @@ -1,168 +0,0 @@ -library stateless_unit; - -export 'StatelessWidget/AboutDialog/node1_base.dart'; -export 'StatelessWidget/AboutListTile/node1_base.dart'; -export 'StatelessWidget/ActionChip/node1_base.dart'; -export 'StatelessWidget/AlertDialog/node1_base.dart'; -export 'StatelessWidget/AnimatedIcon/node1_base.dart'; -export 'StatelessWidget/Card/node1_base.dart'; -export 'StatelessWidget/Card/node2_shape.dart'; - -export 'StatelessWidget/CheckboxListTile/node1_base.dart'; -export 'StatelessWidget/CheckboxListTile/node2_select.dart'; -export 'StatelessWidget/CheckboxListTile/node3_dense.dart'; - -export 'StatelessWidget/Chip/node1_base.dart'; -export 'StatelessWidget/Chip/node2_color.dart'; -export 'StatelessWidget/Chip/node3_delete.dart'; - -export 'StatelessWidget/Container/node1_base.dart'; -export 'StatelessWidget/Container/node2_child.dart'; -export 'StatelessWidget/Container/node3_alignment.dart'; -export 'StatelessWidget/Container/node4_decoration.dart'; -export 'StatelessWidget/Container/node5_transform.dart'; -export 'StatelessWidget/Container/node6_constraints.dart'; - -export 'StatelessWidget/DataTable/node1_base.dart'; -export 'StatelessWidget/DataTable/node2_operation.dart'; - -export 'StatelessWidget/CupertinoTheme/node1_base.dart'; -export 'StatelessWidget/CupertinoTheme/node2_use.dart'; - -export 'StatelessWidget/Divider/node1_base.dart'; -export 'StatelessWidget/Divider/node2_height.dart'; - -export 'StatelessWidget/FloatingActionButton/node1_base.dart'; -export 'StatelessWidget/FloatingActionButton/node2_mini.dart'; -export 'StatelessWidget/FloatingActionButton/node3_shape.dart'; -export 'StatelessWidget/GestureDetector/node1_base.dart'; -export 'StatelessWidget/GestureDetector/node2_tap.dart'; -export 'StatelessWidget/GestureDetector/node3_pan.dart'; - -export 'StatelessWidget/Banner/node1_base.dart'; -export 'StatelessWidget/ImageIcon/node1_base.dart'; -export 'StatelessWidget/FadeInImage/node1_base.dart'; -export 'StatelessWidget/CircleAvatar/node1_base.dart'; - - -export 'StatelessWidget/InputChip/node1_base.dart'; -export 'StatelessWidget/InputChip/node2_select.dart'; - - -export 'StatelessWidget/Visibility/node1_base.dart'; -export 'StatelessWidget/Visibility/node2_replacement.dart'; - -export 'StatelessWidget/ChoiceChip/node1_base.dart'; - -export 'StatelessWidget/FilterChip/node1_base.dart'; - - -export 'StatelessWidget/ListTile/node1_base.dart'; -export 'StatelessWidget/ListTile/node2_select.dart'; -export 'StatelessWidget/ListTile/node3_dense.dart'; - - -export 'StatelessWidget/ListView/node1_base.dart'; -export 'StatelessWidget/ListView/node2_direction.dart'; -export 'StatelessWidget/ListView/node3_builder.dart'; -export 'StatelessWidget/ListView/node4_separated.dart'; - -export 'StatelessWidget/MaterialButton/node1_base.dart'; -export 'StatelessWidget/MaterialButton/node2_onLongPress.dart'; -export 'StatelessWidget/MaterialButton/node3_shape.dart'; - -export 'StatelessWidget/GridTileBar/node1_base.dart'; -export 'StatelessWidget/GridTile/node1_base.dart'; - -export 'StatelessWidget/Icon/node1_base.dart'; -export 'StatelessWidget/Icon/node2_diy.dart'; - -export 'StatelessWidget/Placeholder/node1_base.dart'; -export 'StatelessWidget/Placeholder/node2_fallback.dart'; - -export 'StatelessWidget/RadioListTile/node1_base.dart'; -export 'StatelessWidget/RadioListTile/node2_dense.dart' show DenseRadioListTile; - -export 'StatelessWidget/SingleChildScrollView/node1_base.dart'; -export 'StatelessWidget/SingleChildScrollView/node2_direction.dart'; - -export 'StatelessWidget/TabBar/node1_base.dart'; -export 'StatelessWidget/TabBar/node2_noShadow.dart'; - - -export 'StatelessWidget/UserAccountsDrawerHeader/node2_pro.dart'; -export 'StatelessWidget/VerticalDivider/node2_height.dart'; - -export 'StatelessWidget/BackButton/node1_base.dart'; -export 'StatelessWidget/ButtonBar/node1_base.dart'; -export 'StatelessWidget/CloseButton/node1_base.dart'; - -export 'StatelessWidget/FlatButton/node1_base.dart'; - -export 'StatelessWidget/FlutterLogo/node1_base.dart'; -export 'StatelessWidget/FlutterLogo/node2_style.dart'; - -export 'StatelessWidget/IconButton/node1_base.dart'; -export 'StatelessWidget/OutlineButton/node1_base.dart'; -export 'StatelessWidget/RaisedButton/node1_base.dart'; - -export 'StatelessWidget/Drawer/node1_base.dart'; -export 'StatelessWidget/DrawerHeader/node1_base.dart'; - -export 'StatelessWidget/UserAccountsDrawerHeader/node1_base.dart'; -export 'StatelessWidget/UserAccountsDrawerHeader/node2_pro.dart'; - - -export 'StatelessWidget/VerticalDivider/node1_base.dart'; -export 'StatelessWidget/VerticalDivider/node2_height.dart'; - - -export 'StatelessWidget/GirdView/node1_base.dart'; -export 'StatelessWidget/GirdView/node2_direction.dart'; -export 'StatelessWidget/GirdView/node3_extend.dart'; -export 'StatelessWidget/GirdView/node4_builder.dart'; - -export 'StatelessWidget/GridPaper/node1_base.dart'; -export 'StatelessWidget/GridPaper/node2_divisions.dart'; - -export 'StatelessWidget/Spacer/node1_base.dart'; -export 'StatelessWidget/Spacer/node2_flex.dart'; - -export 'StatelessWidget/SwitchListTile/node1_base.dart'; -export 'StatelessWidget/SwitchListTile/node2_select.dart'; -export 'StatelessWidget/SwitchListTile/node3_dense.dart'; - -export 'StatelessWidget/Listener/node1_base.dart'; -export 'StatelessWidget/PositionedDirectional/node1_base.dart'; - -export 'StatelessWidget/Tab/node1_base.dart'; -export 'StatelessWidget/Theme/node1_base.dart'; -export 'StatelessWidget/Theme/node2_use.dart'; - -export 'StatelessWidget/ToggleButtons/node1_single.dart'; -export 'StatelessWidget/ToggleButtons/node2_color.dart'; -export 'StatelessWidget/ToggleButtons/node3_multi.dart'; - - -export 'StatelessWidget/BottomSheet/node1_base.dart'; -export 'StatelessWidget/CupertinoActionSheet/node1_base.dart'; -export 'StatelessWidget/CupertinoActionSheetAction/node1_base.dart'; -export 'StatelessWidget/CupertinoAlertDialog/node1_base.dart'; - -export 'StatelessWidget/Text/node1_base.dart'; -export 'StatelessWidget/Text/node2_shadows.dart'; -export 'StatelessWidget/Text/node3_decoration.dart'; -export 'StatelessWidget/Text/node4_textAlign.dart'; -export 'StatelessWidget/Text/node5_textDirection.dart'; -export 'StatelessWidget/Text/node6_softWrap.dart'; - - -export 'StatelessWidget/DayPicker/node1_base.dart'; -export 'StatelessWidget/Dialog/node1_base.dart'; - -export 'StatelessWidget/SimpleDialog/node1_base.dart'; -export 'StatelessWidget/SimpleDialogOption/node1_base.dart'; -export 'StatelessWidget/SnackBar/node1_base.dart'; -export 'StatelessWidget/SnackBarAction/node1_base.dart'; - - diff --git a/lib/views/widgets/widgets_map.dart b/lib/views/widgets/widgets_map.dart index 77cc58e..e01c23a 100644 --- a/lib/views/widgets/widgets_map.dart +++ b/lib/views/widgets/widgets_map.dart @@ -1,24 +1,13 @@ import 'package:flutter/material.dart'; -import 'stateful_unit.dart'; -import 'stateless_unit.dart'; -import 'render_object_unit.dart'; -import 'proxy_unit.dart'; +import 'exp/stateful_unit.dart'; +import 'exp/stateless_unit.dart'; +import 'exp/render_object_unit.dart'; +import 'exp/proxy_unit.dart'; +import 'exp/other_unit.dart'; +import 'exp/sliver_unit.dart'; -import 'other/ErrorWidget.dart'; - -import 'Sliver/CustomScrollView.dart'; -import 'Sliver/FlexibleSpaceBar.dart'; -import 'Sliver/SliverAppBar.dart'; -import 'Sliver/SliverFillViewport.dart'; -import 'Sliver/SliverFixedExtentList.dart'; -import 'Sliver/SliverGrid.dart'; -import 'Sliver/SliverList.dart'; -import 'Sliver/SliverOpacity.dart'; -import 'Sliver/SliverPadding.dart'; -import 'Sliver/SliverPersistentHeader.dart'; -import 'Sliver/SliverToBoxAdapter.dart'; /// create by 张风捷特烈 on 2020-03-04 /// contact me by email 1981462002@qq.com