From bd0ee8b08827dc8dcc4a34dcae1221649b3471cb Mon Sep 17 00:00:00 2001 From: toly <1981462002@qq.com> Date: Tue, 21 Jul 2020 08:03:05 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=B7=BB=E5=8A=A0IntrinsicHeight?= =?UTF-8?q?=E3=80=81IntrinsicWidth=E3=80=81ChipTheme=E3=80=81NavigationToo?= =?UTF-8?q?lbar=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/flutter.db | Bin 704512 -> 704512 bytes .../ProxyWidget/ChipTheme/node1_base.dart | 76 ++++++++++++++++++ .../IntrinsicHeight/node1_base.dart | 74 +++++++++++++++++ .../IntrinsicWidth/node1_base.dart | 75 +++++++++++++++++ .../NavigationToolbar/node1_base.dart | 45 +++++++++++ lib/views/widgets/exp/proxy_unit.dart | 3 +- lib/views/widgets/exp/render_object_unit.dart | 4 +- lib/views/widgets/exp/stateful_unit.dart | 1 - lib/views/widgets/exp/stateless_unit.dart | 1 + lib/views/widgets/widgets_map.dart | 10 +++ 10 files changed, 286 insertions(+), 3 deletions(-) create mode 100644 lib/views/widgets/ProxyWidget/ChipTheme/node1_base.dart create mode 100644 lib/views/widgets/SingleChildRenderObjectWidget/IntrinsicHeight/node1_base.dart create mode 100644 lib/views/widgets/SingleChildRenderObjectWidget/IntrinsicWidth/node1_base.dart create mode 100644 lib/views/widgets/StatelessWidget/NavigationToolbar/node1_base.dart diff --git a/assets/flutter.db b/assets/flutter.db index e266d0587ea2ed38dd45d2ee799ec72694595b9d..8fc28b6fd40eae8fc771288f8fd873a02d9eee1b 100644 GIT binary patch delta 8675 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 Z>GBRn8h>Y>+JVxVFk>ixW~&-z{cnBzu6_Uj delta 5386 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 diff --git a/lib/views/widgets/ProxyWidget/ChipTheme/node1_base.dart b/lib/views/widgets/ProxyWidget/ChipTheme/node1_base.dart new file mode 100644 index 0000000..013cd2b --- /dev/null +++ b/lib/views/widgets/ProxyWidget/ChipTheme/node1_base.dart @@ -0,0 +1,76 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/7/20 +/// contact me by email 1981462002@qq.com +/// 说明: 328 ChipTheme 主要用于为后代的Chip类型组件统一设置默认属性,也可以通过该组件获取默认Chip的属性。 +// { +// "widgetId": 328, +// "name": 'ChipTheme基本使用', +// "priority": 1, +// "subtitle": "可指定ChipThemeData数据属性为【后代】的Chip类型组件设置默认样式,属性和Chip属性类似,如阴影、颜色、边距、形状、文字样式等。也可以用ChipTheme.of获取Chip的主题数据。", +// } +class ChipThemeDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return ChipTheme( + data: ChipTheme.of(context).copyWith( + selectedColor: Colors.orange.withAlpha(55), + selectedShadowColor: Colors.blue, + shadowColor: Colors.orangeAccent, + pressElevation: 5, + elevation: 3, + ), + child: CustomFilterChip(), + ); + } +} + +class CustomFilterChip extends StatefulWidget { + @override + _CustomFilterChipState createState() => _CustomFilterChipState(); +} + +class _CustomFilterChipState extends State { + final Map map = { + 'A': 'Ant', + 'B': 'Bug', + 'C': 'Cat', + 'D': 'Dog', + }; + List _selected = []; + + @override + Widget build(BuildContext context) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Wrap( + children: map.keys.map((key) => _buildChild(key)).toList(), + ), + Container( + padding: EdgeInsets.all(10), + child: Text('您已选择: ${_selected.join(', ')}')), + ], + ); + } + + Padding _buildChild(String key) { + return Padding( + padding: const EdgeInsets.all(4.0), + child: FilterChip( + avatar: CircleAvatar(child: Text(key)), + label: Text(map[key]), + selected: _selected.contains(map[key]), + onSelected: (bool value) { + setState(() { + if (value) { + _selected.add(map[key]); + } else { + _selected.removeWhere((name) => name == map[key]); + } + }); + }, + ), + ); + } +} diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/IntrinsicHeight/node1_base.dart b/lib/views/widgets/SingleChildRenderObjectWidget/IntrinsicHeight/node1_base.dart new file mode 100644 index 0000000..178bc3b --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/IntrinsicHeight/node1_base.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/7/21 +/// contact me by email 1981462002@qq.com +/// 说明: 298 IntrinsicHeight 根据子元素的固有高度调整其子元素大小的组件,可解决很多布局的疑难杂症,但相对昂贵。 + +// { +// "widgetId": 298, +// "name": '可用于显示一个指定宽高的区域', +// "priority": 1, +// "subtitle": "【child】 : 子组件 【Widget】\n" +// "如示例:左侧高可变动,中间高固定,右侧高取前两者的最高值。", +// } + +class IntrinsicHeightDemo extends StatefulWidget { + @override + _IntrinsicHeightDemoState createState() => _IntrinsicHeightDemoState(); +} + +class _IntrinsicHeightDemoState extends State { + var _height =120.0; + + @override + Widget build(BuildContext context) { + return Container( + child: Column( + children: [ + buildChild(_height), + SizedBox(height: 10), + _buildSlider() + ], + ), + ); + } + + Widget buildChild(double leftHeight) { + return IntrinsicHeight( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + height: leftHeight, + width: 120, + color: Colors.yellow, + alignment: Alignment.center, + child: Text("height:${leftHeight.toStringAsFixed(1)}"), + ), + Container( + color: Colors.blue, + width: 150, + height: 80, + alignment: Alignment.center, + child: Text("固定高"), + ), + Container( + color: Colors.red, + width: 60, + alignment: Alignment.center, + child: Text("最高"), + ) + ], + ), + ); + } + + Widget _buildSlider() =>Slider( + value: _height, + max: 200.0, + min: 30.0, + divisions: 17, + onChanged: (v)=> setState(() => _height= v), + ); +} diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/IntrinsicWidth/node1_base.dart b/lib/views/widgets/SingleChildRenderObjectWidget/IntrinsicWidth/node1_base.dart new file mode 100644 index 0000000..e3c20aa --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/IntrinsicWidth/node1_base.dart @@ -0,0 +1,75 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/7/21 +/// contact me by email 1981462002@qq.com +/// 说明: + +// { +// "widgetId": 297, +// "name": 'IntrinsicWidth基本使用', +// "priority": 1, +// "subtitle": +// "【child】 : 子组件 【Widget】\n" +// "如示例:上面宽可变动,中间宽固定,下面宽取前两者的最高值。", +// } + +class IntrinsicWidthDemo extends StatefulWidget { + @override + _IntrinsicWidthDemoState createState() => _IntrinsicWidthDemoState(); +} + +class _IntrinsicWidthDemoState extends State { + var _height =120.0; + + @override + Widget build(BuildContext context) { + return Container( + child: Column( + children: [ + buildChild(_height), + SizedBox(height: 10), + _buildSlider() + ], + ), + ); + } + + Widget buildChild(double leftWidth) { + return IntrinsicWidth( + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + height: 50, + width: leftWidth, + color: Colors.yellow, + alignment: Alignment.center, + child: Text("width:${leftWidth.toStringAsFixed(1)}"), + ), + Container( + color: Colors.blue, + width: 150, + height: 60, + alignment: Alignment.center, + child: Text("固定宽"), + ), + Container( + color: Colors.red, + height: 40, + alignment: Alignment.center, + child: Text("最宽"), + ) + ], + ), + ); + } + + Widget _buildSlider() =>Slider( + value: _height, + max: 200.0, + min: 80.0, + divisions: 17, + onChanged: (v)=> setState(() => _height= v), + ); +} diff --git a/lib/views/widgets/StatelessWidget/NavigationToolbar/node1_base.dart b/lib/views/widgets/StatelessWidget/NavigationToolbar/node1_base.dart new file mode 100644 index 0000000..669157e --- /dev/null +++ b/lib/views/widgets/StatelessWidget/NavigationToolbar/node1_base.dart @@ -0,0 +1,45 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/7/20 +/// contact me by email 1981462002@qq.com +/// 说明: NavigationToolbar 214 左中右模式的通用结构组件,可指定中间组件距左侧边距及是否居中。源码在AppBar等导航条结构中有使用它。 +// { +// "widgetId": 214, +// "name": 'NavigationToolbar基本使用', +// "priority": 1, +// "subtitle": "【leading】 : 左侧组件 【Widget】\n" +// "【middle】: 中间组件 【Widget】\n" +// "【trailing】: 右侧组件组件 【Widget】\n" +// "【centerMiddle】: 中间组件是否居中 【bool】\n" +// "【middleSpacing】: 中间组件距左距离 【double】", +// } +class NavigationToolbarDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + height: 60, + child: NavigationToolbar( + leading: Icon(Icons.ac_unit), + middle: Text('middleSpacing#true'), + middleSpacing: 20, + centerMiddle: true, + trailing: Icon(Icons.more_vert), + ), + ), + Container( + height: 60, + child: NavigationToolbar( + leading: Icon(Icons.ac_unit), + middle: Text('middleSpacing#false'), + middleSpacing: 20, + centerMiddle: false, + trailing: Icon(Icons.more_vert), + ), + ), + ], + ); + } +} \ No newline at end of file diff --git a/lib/views/widgets/exp/proxy_unit.dart b/lib/views/widgets/exp/proxy_unit.dart index 4eb0ab3..09c69ce 100644 --- a/lib/views/widgets/exp/proxy_unit.dart +++ b/lib/views/widgets/exp/proxy_unit.dart @@ -17,4 +17,5 @@ export '../ProxyWidget/IconTheme/node1_base.dart'; export '../ProxyWidget/ScrollConfiguration/node1_base.dart'; export '../ProxyWidget/Expanded/node1_base.dart'; export '../ProxyWidget/Positioned/node1_base.dart'; -export '../ProxyWidget/LayoutId/node1_base.dart'; \ No newline at end of file +export '../ProxyWidget/LayoutId/node1_base.dart'; +export '../ProxyWidget/ChipTheme/node1_base.dart' hide CustomFilterChip; \ No newline at end of file diff --git a/lib/views/widgets/exp/render_object_unit.dart b/lib/views/widgets/exp/render_object_unit.dart index 696e797..272089f 100644 --- a/lib/views/widgets/exp/render_object_unit.dart +++ b/lib/views/widgets/exp/render_object_unit.dart @@ -76,4 +76,6 @@ 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 +export '../SingleChildRenderObjectWidget/ShaderMask/node2_linear.dart'; +export '../SingleChildRenderObjectWidget/IntrinsicHeight/node1_base.dart'; +export '../SingleChildRenderObjectWidget/IntrinsicWidth/node1_base.dart'; \ No newline at end of file diff --git a/lib/views/widgets/exp/stateful_unit.dart b/lib/views/widgets/exp/stateful_unit.dart index 8f4a043..57b151b 100644 --- a/lib/views/widgets/exp/stateful_unit.dart +++ b/lib/views/widgets/exp/stateful_unit.dart @@ -32,7 +32,6 @@ export '../StatefulWidget/CupertinoSegmentedControl/node1_base.dart'; export '../StatefulWidget/CupertinoSegmentedControl/node2_color.dart'; export '../StatefulWidget/Navigator/node1_base.dart'; - export '../StatefulWidget/Image/node1_base.dart'; export '../StatefulWidget/Image/node2_fit.dart'; export '../StatefulWidget/Image/node3_alignment.dart'; diff --git a/lib/views/widgets/exp/stateless_unit.dart b/lib/views/widgets/exp/stateless_unit.dart index 41d104d..118be64 100644 --- a/lib/views/widgets/exp/stateless_unit.dart +++ b/lib/views/widgets/exp/stateless_unit.dart @@ -10,6 +10,7 @@ export '../StatelessWidget/Card/node2_shape.dart'; export '../StatelessWidget/PreferredSize/node1_base.dart'; export '../StatelessWidget/PreferredSize/node2_adapter.dart'; export '../StatelessWidget/Builder/node1_base.dart'; +export '../StatelessWidget/NavigationToolbar/node1_base.dart'; export '../StatelessWidget/CheckboxListTile/node1_base.dart'; export '../StatelessWidget/CheckboxListTile/node2_select.dart'; diff --git a/lib/views/widgets/widgets_map.dart b/lib/views/widgets/widgets_map.dart index f1edcce..32d905a 100644 --- a/lib/views/widgets/widgets_map.dart +++ b/lib/views/widgets/widgets_map.dart @@ -51,6 +51,10 @@ class WidgetsMap { return [ CustomBanner(), ]; + case "NavigationToolbar": + return [ + NavigationToolbarDemo(), + ]; case "Icon": return [ CustomIcon(), @@ -87,6 +91,12 @@ class WidgetsMap { return [PressInputChip(), SelectInputChip()]; case "FilterChip": return [CustomFilterChip()]; + case "IntrinsicHeight": + return [IntrinsicHeightDemo()]; + case "IntrinsicWidth": + return [IntrinsicWidthDemo()]; + case "ChipTheme": + return [ChipThemeDemo()]; case "ListTile": return [CustomListTile(), SelectListTile(), DenseListTile()]; case "CheckboxListTile":