From 8ecd3042b9a4e7cbfa707fcdc0120a6f69bb4ce1 Mon Sep 17 00:00:00 2001 From: toly <1981462002@qq.com> Date: Sat, 14 Nov 2020 10:30:26 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=B7=BB=E5=8A=A0=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=20AnnotatedRegion=E3=80=81CheckedModeBanner=E3=80=81C?= =?UTF-8?q?upertinoTabView=E3=80=81CupertinoTextSelectionToolbar=E3=80=81D?= =?UTF-8?q?efaultTabController=E3=80=81DraggableScrollableActuator?= =?UTF-8?q?=E3=80=81DraggableScrollableSheet=E3=80=81DrawerController?= =?UTF-8?q?=E3=80=81GlowingOverscrollIndicator=E3=80=81=20MergeableMateria?= =?UTF-8?q?l=E3=80=81SizeChangedLayoutNotifier=E3=80=81SliverLayoutBuilder?= =?UTF-8?q?=E3=80=81TableCell?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/flutter.db | Bin 860160 -> 901120 bytes .../ProxyWidget/TableCell/node1_base.dart | 79 +++++++++++ .../AnnotatedRegion/node1_base.dart | 85 ++++++++++++ .../node1_base.dart | 29 +++++ .../SizeChangedLayoutNotifier/node1_base.dart | 71 ++++++++++ .../SliverLayoutBuilder/node1_base.dart | 123 ++++++++++++++++++ .../CupertinoTabView/node1_base.dart | 107 +++++++++++++++ .../DefaultTabController/node1_base.dart | 51 ++++++++ .../DraggableScrollableSheet/node1_base.dart | 104 +++++++++++++++ .../DrawerController/node1_base.dart | 75 +++++++++++ .../node1_base.dart | 67 ++++++++++ .../MergeableMaterial/node1_base.dart | 81 ++++++++++++ .../CheckedModeBanner/node1_base.dart | 31 +++++ .../node1_base.dart | 121 +++++++++++++++++ lib/views/widgets/exp/proxy_unit.dart | 1 + lib/views/widgets/exp/render_object_unit.dart | 4 + lib/views/widgets/exp/sliver_unit.dart | 1 + lib/views/widgets/exp/stateful_unit.dart | 6 + lib/views/widgets/exp/stateless_unit.dart | 2 + lib/views/widgets/widgets_map.dart | 53 ++++++++ 20 files changed, 1091 insertions(+) create mode 100644 lib/views/widgets/ProxyWidget/TableCell/node1_base.dart create mode 100644 lib/views/widgets/SingleChildRenderObjectWidget/AnnotatedRegion/node1_base.dart create mode 100644 lib/views/widgets/SingleChildRenderObjectWidget/CupertinoTextSelectionToolbar/node1_base.dart create mode 100644 lib/views/widgets/SingleChildRenderObjectWidget/SizeChangedLayoutNotifier/node1_base.dart create mode 100644 lib/views/widgets/Sliver/SliverLayoutBuilder/node1_base.dart create mode 100644 lib/views/widgets/StatefulWidget/CupertinoTabView/node1_base.dart create mode 100644 lib/views/widgets/StatefulWidget/DefaultTabController/node1_base.dart create mode 100644 lib/views/widgets/StatefulWidget/DraggableScrollableSheet/node1_base.dart create mode 100644 lib/views/widgets/StatefulWidget/DrawerController/node1_base.dart create mode 100644 lib/views/widgets/StatefulWidget/GlowingOverscrollIndicator/node1_base.dart create mode 100644 lib/views/widgets/StatefulWidget/MergeableMaterial/node1_base.dart create mode 100644 lib/views/widgets/StatelessWidget/CheckedModeBanner/node1_base.dart create mode 100644 lib/views/widgets/StatelessWidget/DraggableScrollableActuator/node1_base.dart diff --git a/assets/flutter.db b/assets/flutter.db index 254bc1e9fe467f0fb3973f90461f0a0f78cae8ee..3a546109e9b0b4b4e4486c656e5fed60305fb502 100644 GIT binary patch delta 18848 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 diff --git a/lib/views/widgets/ProxyWidget/TableCell/node1_base.dart b/lib/views/widgets/ProxyWidget/TableCell/node1_base.dart new file mode 100644 index 0000000..fb313d1 --- /dev/null +++ b/lib/views/widgets/ProxyWidget/TableCell/node1_base.dart @@ -0,0 +1,79 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/9/21 +/// contact me by email 1981462002@qq.com +/// 说明: 317 TableCell 表室 必须在 Table 组件的后代中使用,用于控制表孩子的竖直方向对齐方式,并没是什么太大的作用。 +// { +// "widgetId": 317, +// "name": 'TableCell基本使用', +// "priority": 1, +// "subtitle": +// "【child】 : 组件 【Widget】\n" +// "【verticalAlignment】 : 竖直对齐方式 【TableCellVerticalAlignment】", +// } + +class TableCellDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + var title = _ItemBean("单位称", "量纲", "单位", "单位名称", "单位符号"); + var m = _ItemBean("长度", "L", "1m", "米", "m"); + var kg = _ItemBean("质量", "M", "1Kg", "千克", "Kg"); + var s = _ItemBean("时间", "T", "1s", "秒", "s"); + var a = _ItemBean("安培", "Ι", "1A", "安培", "A"); + var k = _ItemBean("热力学温度", "θ", "1K", "开尔文", "K"); + var mol = _ItemBean("物质的量", "N", "1mol", "摩尔", "mol"); + var cd = _ItemBean("发光强度", "J", "1cd", "坎德拉", "cd"); + + var data = <_ItemBean>[title, m, kg, s, a, k, mol, cd]; + + return SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Table( + columnWidths: const { + 0: FixedColumnWidth(80.0), + 1: FixedColumnWidth(80.0), + 2: FixedColumnWidth(80.0), + 3: FixedColumnWidth(80.0), + 4: FixedColumnWidth(80.0), + }, + defaultVerticalAlignment: TableCellVerticalAlignment.middle, + border: TableBorder.all( + color: Colors.orangeAccent, width: 1.0, style: BorderStyle.solid), + children: data + .map((item) => TableRow(children: [ + TableCell( + verticalAlignment: TableCellVerticalAlignment.bottom, + child: Text( + item.name, + style: TextStyle(color: Colors.blue), + )), + TableCell( + verticalAlignment: TableCellVerticalAlignment.baseline, + child: Text(item.symbol)), + TableCell( + verticalAlignment: TableCellVerticalAlignment.top, + child: Text(item.unitSymbol)), + TableCell( + verticalAlignment: TableCellVerticalAlignment.fill, + child: Text(item.unitName)), + TableCell( + verticalAlignment: TableCellVerticalAlignment.middle, + child: Container(height: 30, child: Text(item.unit)), + ), + ])) + .toList(), + ), + ); + } +} + +class _ItemBean { + String name; + String symbol; + String unit; + String unitName; + String unitSymbol; + + _ItemBean(this.name, this.symbol, this.unit, this.unitName, this.unitSymbol); +} diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/AnnotatedRegion/node1_base.dart b/lib/views/widgets/SingleChildRenderObjectWidget/AnnotatedRegion/node1_base.dart new file mode 100644 index 0000000..2220857 --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/AnnotatedRegion/node1_base.dart @@ -0,0 +1,85 @@ + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +/// create by 张风捷特烈 on 2020/9/21 +/// contact me by email 1981462002@qq.com +/// 说明: 288 AnnotatedRegion 有一个泛型,源码中仅适用该组件改变状态量、导航栏样式,泛型通常为SystemUiOverlayStyle。 +// { +// "widgetId": 288, +// "name": 'AnnotatedRegion改变状态量样式', +// "priority": 1, +// "subtitle": +// "【value】 : 值 【T】\n" +// "【sized】 : 是否提供大小 【bool】\n" +// "【child】 : 子组件 【Widget】", +// } + + +class AnnotatedRegionDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + padding: EdgeInsets.all(10), + child: ElevatedButton( + onPressed: (){ + Navigator.push(context, + MaterialPageRoute(builder: (context) => AnnotatedRegionTestPage()), + ); + }, + child: Text("进入 AnnotatedRegion 测试页"), + ), + ); + } +} + + +class AnnotatedRegionTestPage extends StatelessWidget{ + @override + Widget build(BuildContext context) { + final SystemUiOverlayStyle overlayStyle = SystemUiOverlayStyle( + systemNavigationBarColor: Colors.green, + // 导航栏颜色 + systemNavigationBarDividerColor: Colors.red, + statusBarColor: Colors.blue, + systemNavigationBarIconBrightness: Brightness.light, + statusBarIconBrightness: Brightness.light, + statusBarBrightness: Brightness.light, + ); + + return AnnotatedRegion( + value: overlayStyle, + child: Scaffold( + body: Container( + child: Column( + children: [ + Container(height: 56+30.0,color: Colors.blue, + alignment: Alignment(0,0.55), + child: Row( + children: [ + BackButton(color: Colors.white,), + Text("AnnotatedRegion测试",style: TextStyle(color: Colors.white,fontSize: 18),) + ], + ), + ), + SizedBox(height: 30,), + Text( + "上面标题栏背景颜色为蓝色\n" + "上面标题栏图标为亮调", + + style: TextStyle(color: Colors.black,fontSize: 18),), + Spacer(), + Text( + "下面导航栏背景颜色为绿色\n" + "下面导航栏图标为亮调", + + style: TextStyle(color: Colors.black,fontSize: 18),), + SizedBox(height: 30,), + ], + ), + ), + ), + ); + } +} diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/CupertinoTextSelectionToolbar/node1_base.dart b/lib/views/widgets/SingleChildRenderObjectWidget/CupertinoTextSelectionToolbar/node1_base.dart new file mode 100644 index 0000000..4896231 --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/CupertinoTextSelectionToolbar/node1_base.dart @@ -0,0 +1,29 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/9/21 +/// contact me by email 1981462002@qq.com +/// 说明: 299 CupertinoTextSelectionToolbar 对文本选择做出响应的 ios 风格的工具栏。 +// { +// "widgetId": 299, +// "name": '该组件无法使用', +// "priority": 1, +// "subtitle": +// "【-】 : - 【-】", +// } + +class CupertinoTextSelectionToolbarDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + alignment: Alignment.center, + padding: EdgeInsets.all(10), + width: 300, + // color: Theme.of(context).primaryColor, + child: Text( + "注:此组件私有构造器,外部无法使用,并没有使用价值。", + style: TextStyle(color: Colors.red, fontSize: 18), + ), + ); + } +} diff --git a/lib/views/widgets/SingleChildRenderObjectWidget/SizeChangedLayoutNotifier/node1_base.dart b/lib/views/widgets/SingleChildRenderObjectWidget/SizeChangedLayoutNotifier/node1_base.dart new file mode 100644 index 0000000..9e3b22f --- /dev/null +++ b/lib/views/widgets/SingleChildRenderObjectWidget/SizeChangedLayoutNotifier/node1_base.dart @@ -0,0 +1,71 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/9/21 +/// contact me by email 1981462002@qq.com +/// 说明: 294 SizeChangedLayoutNotifier 尺寸变化通告 使用 SizeChangedLayoutNotifier 可以在子组件布局区域发生变化后,发出通知。使用NotificationListener可以进行监听。 +// { +// "widgetId": 294, +// "name": '基本使用', +// "priority": 1, +// "subtitle": +// "【child】 : 组件 【Widget】", +// } + +class SizeChangedLayoutNotifierDemo extends StatefulWidget { + @override + _SizeChangedLayoutNotifierDemoState createState() => _SizeChangedLayoutNotifierDemoState(); +} + +class _SizeChangedLayoutNotifierDemoState extends State { + @override + Widget build(BuildContext context) { + return NotificationListener( + onNotification: _onNotification, + child: ChangeableBox(), + ); + } + + bool _onNotification(SizeChangedLayoutNotification notification) { + print('---------SizeChangedLayoutNotification------'); + return false; + } +} + +class ChangeableBox extends StatefulWidget { + @override + _ChangeableBoxState createState() => _ChangeableBoxState(); +} + +class _ChangeableBoxState extends State { + double width = 40; + + @override + Widget build(BuildContext context) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + SizeChangedLayoutNotifier( + child: Container( + width: width, + height: 100, + color: Colors.blue, + ), + ), + Slider( + max: 200, + min: 20, + divisions: 10, + value: width, + onChanged: _changeWidth, + ) + ], + ); + } + + void _changeWidth(double value) { + setState(() { + width = value; + }); + } +} diff --git a/lib/views/widgets/Sliver/SliverLayoutBuilder/node1_base.dart b/lib/views/widgets/Sliver/SliverLayoutBuilder/node1_base.dart new file mode 100644 index 0000000..cacd904 --- /dev/null +++ b/lib/views/widgets/Sliver/SliverLayoutBuilder/node1_base.dart @@ -0,0 +1,123 @@ +import 'dart:math'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/src/rendering/sliver.dart'; + +/// create by 张风捷特烈 on 2020/9/21 +/// contact me by email 1981462002@qq.com +/// 说明: 304 SliverLayoutBuilder Sliver布局构造器 Sliver家族一员,在滑动过程中可以通过回调出的 SliverConstraints 对象进行子组件的构造。 +// { +// "widgetId": 304, +// "name": 'SliverLayoutBuilder基本使用', +// "priority": 1, +// "subtitle": +// "【builder】 : 组件构造器 【SliverLayoutWidgetBuilder】", +// } +class SliverLayoutBuilderDemo extends StatefulWidget { + @override + _SliverLayoutBuilderDemoState createState() => + _SliverLayoutBuilderDemoState(); +} + +class _SliverLayoutBuilderDemoState extends State { + final data = [ + Colors.orange[50], + Colors.orange[100], + Colors.orange[200], + Colors.orange[300], + Colors.orange[400], + Colors.orange[500], + Colors.orange[600], + Colors.orange[700], + Colors.orange[800], + Colors.orange[900], + ]; + + @override + Widget build(BuildContext context) { + return Container( + height: 300, + child: CustomScrollView( + physics: BouncingScrollPhysics(parent: AlwaysScrollableScrollPhysics()), + slivers: [ + _buildSliverAppBar(), + SliverLayoutBuilder( + builder: _buildSliver, + ), + _buildSliverList(), + ], + ), + ); + } + + Widget _buildSliverList() => SliverFixedExtentList( + itemExtent: 50, + delegate: SliverChildBuilderDelegate( + (_, int index) => Container( + alignment: Alignment.center, + width: 100, + height: 60, + color: data[index], + child: Text( + colorString(data[index]), + style: TextStyle(color: Colors.white, shadows: [ + Shadow( + color: Colors.black, + offset: Offset(.5, .5), + blurRadius: 2) + ]), + ), + ), + childCount: data.length), + ); + + Widget _buildSliverAppBar() { + return SliverAppBar( + expandedHeight: 120.0, + leading: Container( + margin: EdgeInsets.all(10), + child: Image.asset('assets/images/icon_head.webp')), + title: Text('张风捷特烈'), + actions: _buildActions(), + elevation: 5, + pinned: true, + backgroundColor: Colors.orange, + flexibleSpace: FlexibleSpaceBar( + titlePadding: EdgeInsets.only(left: 55, bottom: 15), //标题边距 + collapseMode: CollapseMode.parallax, //视差效果 + background: Image.asset( + "assets/images/caver.webp", + fit: BoxFit.cover, + ), + ), + ); + } + + List _buildActions() => [ + IconButton( + onPressed: () {}, + icon: Icon( + Icons.star_border, + color: Colors.white, + ), + ) + ]; + + String colorString(Color color) => + "#${color.value.toRadixString(16).padLeft(8, '0').toUpperCase()}"; + + Widget _buildSliver(BuildContext context, SliverConstraints constraints) { + return SliverToBoxAdapter( + child: Container( + alignment: Alignment.center, + height: constraints.remainingPaintExtent / 3, + color: Colors.red, + child: Text( + "SliverLayoutBuilder", + style: TextStyle(color: Colors.white, fontSize: 20), + ), + ), + ); + } +} diff --git a/lib/views/widgets/StatefulWidget/CupertinoTabView/node1_base.dart b/lib/views/widgets/StatefulWidget/CupertinoTabView/node1_base.dart new file mode 100644 index 0000000..dce35fb --- /dev/null +++ b/lib/views/widgets/StatefulWidget/CupertinoTabView/node1_base.dart @@ -0,0 +1,107 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/9/21 +/// contact me by email 1981462002@qq.com +/// 说明: 229 CupertinoTabView Cupertino页面 CupertinoTabView 可以像 MaterialApp 一样维护一个路由栈。通过 routes 、onGenerateRoute 来构建路由,可以通过 navigatorObservers 监听路由。 +// { +// "widgetId": 229, +// "name": 'CupertinoTabView基本使用', +// "priority": 1, +// "subtitle": +// "【builder】 : 主页构造器 【WidgetBuilder】\n" +// "【navigatorObservers】 : 路由监听器 【List】\n" +// "【routes】 : 路由映射 【Map】\n" +// "【onGenerateRoute】 : 路由工厂 【RouteFactory】", +// } + +class CupertinoTabViewDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + padding: EdgeInsets.all(10), + child: ElevatedButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => CupertinoTabViewPage()), + ); + }, + child: Text("进入 CupertinoTabView 测试页"), + ), + ); + } +} + + +class CupertinoTabViewPage extends StatelessWidget { + + @override + Widget build(BuildContext context) { + return Container( + height: 300, + child: CupertinoTabView( + routes: { + '/': (context) => HomePage(), + '/test_detail': (context) => DetailPage(), + }, + ), + ); + } +} + +class DetailPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('我是详情页'), + ), + child: Center( + child: Container( + width: 200, + height: 200, + color: Colors.blue, + ), + ), + ); + } +} + +class HomePage extends StatelessWidget { + + final String info = "CupertinoTabView 可以像 MaterialApp 一样维护一个路由栈。" + "通过 routes 、onGenerateRoute 来构建路由,可以通过 navigatorObservers 监听路由。" + "在这个路由栈中可以进行指定名称跳转,如下通过 /test_detail 跳到详情页。"; + + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('我是主页'), + ), + child: Center(child: Column( + + children: [ + Spacer(), + Material(child: Padding( + padding: const EdgeInsets.only(left:18.0,right: 18,bottom: 20), + child: Text(info), + )), + CupertinoButton( + padding: EdgeInsets.only(left: 10,right: 10), + color: Colors.blue, + onPressed: () { + Navigator.pushNamed( + context, "/test_detail" + ); + }, + child: Text("进入详情页"), + ), + Spacer(), + ], + )), + ); + } +} diff --git a/lib/views/widgets/StatefulWidget/DefaultTabController/node1_base.dart b/lib/views/widgets/StatefulWidget/DefaultTabController/node1_base.dart new file mode 100644 index 0000000..34791a2 --- /dev/null +++ b/lib/views/widgets/StatefulWidget/DefaultTabController/node1_base.dart @@ -0,0 +1,51 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/9/21 +/// contact me by email 1981462002@qq.com +/// 说明: 230 DefaultTabController 默认Tab控制器 在使用TabBar和TabBarView时,需要同一个控制器实现页签和页面的控制。DefaultTabController会在未指定控制器时提供默认控制器,简化使用。 +// { +// "widgetId": 230, +// "name": 'DefaultTabController基本使用', +// "priority": 1, +// "subtitle": +// "【length】 : 页签数量 【int】\n" +// "【initialIndex】 : 初始页签索引 【int】\n" +// "【child】 : 组件 【Widget】", +// } + +class DefaultTabControllerDemo extends StatelessWidget { + final List tabs = [ + Tab(text: '青眼白龙'), + Tab(text: '黑魔术师'), + Tab(text: '混沌战士'), + ]; + + @override + Widget build(BuildContext context) { + return Container( + height: 300, + child: DefaultTabController( + length: tabs.length, + child: Scaffold( + appBar: AppBar( + title: Text("DefaultTabController"), + bottom: TabBar( + tabs: tabs, + ), + ), + body: TabBarView( + children: tabs.map((Tab tab) { + return Center( + child: Text( + tab.text, + style: const TextStyle(fontSize: 20), + ), + ); + }).toList(), + ), + ), + ), + ); + } +} diff --git a/lib/views/widgets/StatefulWidget/DraggableScrollableSheet/node1_base.dart b/lib/views/widgets/StatefulWidget/DraggableScrollableSheet/node1_base.dart new file mode 100644 index 0000000..0060d27 --- /dev/null +++ b/lib/views/widgets/StatefulWidget/DraggableScrollableSheet/node1_base.dart @@ -0,0 +1,104 @@ +import 'dart:math'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter/src/rendering/sliver.dart'; + +/// create by 张风捷特烈 on 2020/9/21 +/// contact me by email 1981462002@qq.com +/// 说明: 252 DraggableScrollableSheet 拖滑页 可拖动和滑动的Sheet,可指定最大、最小、最初的分度现在滑动范围。构造器builder需要返回一个可滑动组件。 +// { +// "widgetId": 252, +// "name": 'DraggableScrollableSheet基本使用', +// "priority": 1, +// "subtitle": +// "【initialChildSize】 : 初始分度 【double】\n" +// "【minChildSize】 : 最小分度 【double】\n" +// "【maxChildSize】 : 最大分度 【double】\n" +// "【builder】 : 滑动组件构造器 【ScrollableWidgetBuilder】\n" +// "【expand】 : 是否延展 【bool】", +// } + +class DraggableScrollableSheetDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + padding: EdgeInsets.all(10), + child: ElevatedButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => DraggableScrollableSheetPage()), + ); + }, + child: Text("进入 DraggableScrollableSheet 测试页"), + ), + ); + } +} + +class DraggableScrollableSheetPage extends StatelessWidget { + final data = [ + Colors.orange[50], + Colors.orange[100], + Colors.orange[200], + Colors.orange[300], + Colors.orange[400], + Colors.orange[500], + Colors.orange[600], + Colors.orange[700], + Colors.orange[800], + Colors.orange[900], + Colors.red[50], + Colors.red[100], + Colors.red[200], + Colors.red[300], + Colors.red[400], + Colors.red[500], + Colors.red[600], + Colors.red[700], + Colors.red[800], + Colors.red[900], + ]; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text("DraggableScrollableSheet"), + ), + body: SizedBox.expand( + child: DraggableScrollableSheet( + initialChildSize: 0.3, + minChildSize: 0.2, + maxChildSize: 0.5, + expand: true, + builder: (BuildContext context, ScrollController scrollController)=> + ListView.builder( + controller: scrollController, + itemCount: data.length, + itemBuilder: buildColorItem, + ), + )), + ); + } + + Widget buildColorItem(BuildContext context, int index) { + return Container( + alignment: Alignment.center, + height: 60, + color: data[index], + child: Text( + colorString(data[index]), + style: TextStyle(color: Colors.white, shadows: [ + Shadow(color: Colors.black, offset: Offset(.5, .5), blurRadius: 2) + ]), + ), + ); + } + + String colorString(Color color) => + "#${color.value.toRadixString(16).padLeft(8, '0').toUpperCase()}"; +} diff --git a/lib/views/widgets/StatefulWidget/DrawerController/node1_base.dart b/lib/views/widgets/StatefulWidget/DrawerController/node1_base.dart new file mode 100644 index 0000000..06653af --- /dev/null +++ b/lib/views/widgets/StatefulWidget/DrawerController/node1_base.dart @@ -0,0 +1,75 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + + +/// create by 张风捷特烈 on 2020/9/21 +/// contact me by email 1981462002@qq.com +/// 说明: 257 DrawerController 为 Drawer 组件提供交互行为,一般很少使用。在 Scaffold 组件源码中有使用场景。 +// { +// "widgetId": 257, +// "name": 'DrawerController基本使用', +// "priority": 1, +// "subtitle": +// "【drawerCallback】 : 事件回调 【DrawerCallback】\n" +// "【enableOpenDragGesture】 : 是否侧边滑开 【bool】\n" +// "【alignment】 : 对齐方式 【DrawerAlignment】\n" +// "【scrimColor】 : 背景颜色 【Color】\n" +// "【child】 : Drawer组件 【Widget】", +// } + +class DrawerControllerDemo extends StatefulWidget { + @override + _DrawerControllerDemoState createState() => _DrawerControllerDemoState(); +} + +class _DrawerControllerDemoState extends State { + final GlobalKey _drawerKey = + GlobalKey(); + + bool _open = false; + + @override + Widget build(BuildContext context) { + return Container( + child: Column( + children: [ + ElevatedButton( + onPressed: toggleDrawer, + child: Text("显隐 Drawer"), + ), + Container( + height: 200, + child: DrawerController( + scrimColor: Colors.blue.withAlpha(88), + enableOpenDragGesture: true, + key: _drawerKey, + alignment: DrawerAlignment.start, + drawerCallback: (value) { + _open = value; + }, + child: Drawer( + child: Container( + alignment: Alignment.center, + color: Colors.red, + child: Text( + "I am Drawer!", + style: TextStyle(color: Colors.white, fontSize: 18), + ), + ), + ), + ), + ), + ], + ), + ); + } + + void toggleDrawer() { + if (_open) { + _drawerKey.currentState?.close(); + } else { + print('---open--$_open-------'); + _drawerKey.currentState?.open(); + } + } +} diff --git a/lib/views/widgets/StatefulWidget/GlowingOverscrollIndicator/node1_base.dart b/lib/views/widgets/StatefulWidget/GlowingOverscrollIndicator/node1_base.dart new file mode 100644 index 0000000..c5f62e4 --- /dev/null +++ b/lib/views/widgets/StatefulWidget/GlowingOverscrollIndicator/node1_base.dart @@ -0,0 +1,67 @@ +import 'dart:math'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter/src/rendering/sliver.dart'; + +/// create by 张风捷特烈 on 2020/9/21 +/// contact me by email 1981462002@qq.com +/// 说明: 250 GlowingOverscrollIndicator 孩子为可滑动列表,当滑动到顶部和底部时的指示效果,可指定颜色,没什么太大卵用。是Android和fuchsia系统默认滑动效果。 +// { +// "widgetId": 250, +// "name": '基本使用', +// "priority": 1, +// "subtitle": +// "【showLeading】 : 头部是否生效 【bool】\n" +// "【showTrailing】 : 底部是否生效 【bool】\n" +// "【axisDirection】 : 轴向 【AxisDirection】\n" +// "【color】 : 颜色 【Color】\n" +// "【child】 : 子组件 【Widget】", +// } + +class GlowingOverscrollIndicatorDemo extends StatelessWidget { + final List data = [ + Colors.orange[50], + Colors.orange[100], + Colors.orange[200], + Colors.orange[300], + Colors.orange[400], + Colors.orange[500], + Colors.orange[600], + Colors.orange[700], + Colors.orange[800], + Colors.orange[900], + Colors.red[50], + Colors.red[100], + Colors.red[200], + Colors.red[300], + Colors.red[400], + Colors.red[500], + Colors.red[600], + Colors.red[700], + Colors.red[800], + Colors.red[900], + ]; + + @override + Widget build(BuildContext context) { + return Container( + height: 300, + child: GlowingOverscrollIndicator( + color: Colors.purple, + // showLeading: false, + // showTrailing: false, + axisDirection: AxisDirection.down, + child: ListView.builder( + itemBuilder: (_, index) => Container( + margin: EdgeInsets.all(10), + height: 60, + color: data[index], + ), + itemCount: data.length, + ), + ), + ); + } +} diff --git a/lib/views/widgets/StatefulWidget/MergeableMaterial/node1_base.dart b/lib/views/widgets/StatefulWidget/MergeableMaterial/node1_base.dart new file mode 100644 index 0000000..c4b9843 --- /dev/null +++ b/lib/views/widgets/StatefulWidget/MergeableMaterial/node1_base.dart @@ -0,0 +1,81 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/9/21 +/// contact me by email 1981462002@qq.com +/// 说明: 261 MergeableMaterial 可合并材料 用于展示 MergeableMaterialItem 的列表,包括 MaterialSlice(主体) 和 MaterialGap(分隔) 。 +// { +// "widgetId": 261, +// "name": 'MergeableMaterial基本使用', +// "priority": 1, +// "subtitle": +// "【elevation】 : 影深 【double】\n" +// "【hasDividers】 : 是否有分隔线 【bool】\n" +// "【dividerColor】 : 分隔线颜色 【Color】\n" +// "【mainAxis】 : 轴向 【Axis】\n" +// "【children】 : 子组件集 【List】", +// } + +class MergeableMaterialDemo extends StatefulWidget { + @override + _MergeableMaterialDemoState createState() => _MergeableMaterialDemoState(); +} + +class _MergeableMaterialDemoState extends State { + List items=[]; + + @override + void initState() { + super.initState(); + _init(20); + } + + @override + Widget build(BuildContext context) { + return Container( + height: 300, + child: SingleChildScrollView( + child: MergeableMaterial( + elevation: 1, + hasDividers: true, + dividerColor: Colors.red, + children: items, + ), + ), + ); + } + + final List data = [ + Colors.orange[50], + Colors.orange[100], + Colors.orange[200], + Colors.orange[300], + Colors.orange[400], + Colors.orange[500], + Colors.orange[600], + Colors.orange[700], + Colors.orange[800], + Colors.orange[900] + ]; + + void _init(int count) { + for (int i = 0; i < count; i++) { + items.add(MaterialSlice( + key: ValueKey(i), + child: Container( + alignment: Alignment.center, + height: 60, + color: data[i % data.length], + child: Text(colorString(data[i % data.length])), + ))); + if(i!=count-1){ + items.add(MaterialGap( + key: ValueKey(i), + size: 5)); + } + } + } + + String colorString(Color color) => + "#${color.value.toRadixString(16).padLeft(8, '0').toUpperCase()}"; +} diff --git a/lib/views/widgets/StatelessWidget/CheckedModeBanner/node1_base.dart b/lib/views/widgets/StatelessWidget/CheckedModeBanner/node1_base.dart new file mode 100644 index 0000000..c42a5c8 --- /dev/null +++ b/lib/views/widgets/StatelessWidget/CheckedModeBanner/node1_base.dart @@ -0,0 +1,31 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/9/21 +/// contact me by email 1981462002@qq.com +/// 说明: 215 CheckedModeBanner 仅在debug运行模式中显示右上角角标,没什么太大卵用。在 MaterialApp 组件源码中有使用场景。 +// { +// "widgetId": 215, +// "name": 'CheckedModeBanner基本使用', +// "priority": 1, +// "subtitle": +// "【child】 : 组件 【Widget】", +// } + +class CheckedModeBannerDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return CheckedModeBanner( + child: Container( + alignment: Alignment.center, + width: 250, + height: 150, + color: Theme.of(context).primaryColor, + child: Text( + "CheckedModeBanner", + style: TextStyle(color: Colors.white, fontSize: 20), + ), + ), + ); + } +} diff --git a/lib/views/widgets/StatelessWidget/DraggableScrollableActuator/node1_base.dart b/lib/views/widgets/StatelessWidget/DraggableScrollableActuator/node1_base.dart new file mode 100644 index 0000000..bb260c5 --- /dev/null +++ b/lib/views/widgets/StatelessWidget/DraggableScrollableActuator/node1_base.dart @@ -0,0 +1,121 @@ +import 'dart:math'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter/src/rendering/sliver.dart'; + +/// create by 张风捷特烈 on 2020/9/21 +/// contact me by email 1981462002@qq.com +/// 说明: 221 DraggableScrollableActuator 拖滑重置器 它可以通知后代的 DraggableScrollableSheet,将其位置重置为初始状态。 +// { +// "widgetId": 221, +// "name": '基本使用方法', +// "priority": 1, +// "subtitle": +// "【child】 : 子组件 【Widget】\n" +// "使用 DraggableScrollableActuator.reset(context) 重置后代 DraggableScrollableSheet 位初始位置。", +// } + +class DraggableScrollableActuatorDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + padding: EdgeInsets.all(10), + child: ElevatedButton( + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => DraggableScrollableActuatorPage()), + ); + }, + child: Text("进入 DraggableScrollableActuator 测试页"), + ), + ); + } +} + +class DraggableScrollableActuatorPage extends StatelessWidget { + final List data = [ + Colors.orange[50], + Colors.orange[100], + Colors.orange[200], + Colors.orange[300], + Colors.orange[400], + Colors.orange[500], + Colors.orange[600], + Colors.orange[700], + Colors.orange[800], + Colors.orange[900], + Colors.red[50], + Colors.red[100], + Colors.red[200], + Colors.red[300], + Colors.red[400], + Colors.red[500], + Colors.red[600], + Colors.red[700], + Colors.red[800], + Colors.red[900], + ]; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text("DraggableScrollableActuator"), + ), + body: Container( + // height: 400, + child: DraggableScrollableActuator( + child: Builder( + builder: (ctx) => Column( + children: [ + ElevatedButton( + onPressed: () { + DraggableScrollableActuator.reset(ctx); + }, + child: Text("重置位置"), + ), + Expanded( + child: buildSheet(), + ), + ], + ), + ), + ), + ), + ); + } + + Widget buildSheet() => DraggableScrollableSheet( + initialChildSize: 0.3, + minChildSize: 0.2, + maxChildSize: 1, + expand: true, + builder: (BuildContext context, ScrollController scrollController) => + ListView.builder( + controller: scrollController, + itemCount: data.length, + itemBuilder: buildColorItem, + ), + ); + + Widget buildColorItem(BuildContext context, int index) { + return Container( + alignment: Alignment.center, + height: 60, + color: data[index], + child: Text( + colorString(data[index]), + style: TextStyle(color: Colors.white, shadows: [ + Shadow(color: Colors.black, offset: Offset(.5, .5), blurRadius: 2) + ]), + ), + ); + } + + String colorString(Color color) => + "#${color.value.toRadixString(16).padLeft(8, '0').toUpperCase()}"; +} diff --git a/lib/views/widgets/exp/proxy_unit.dart b/lib/views/widgets/exp/proxy_unit.dart index 7e6ccf9..e4f0bfd 100644 --- a/lib/views/widgets/exp/proxy_unit.dart +++ b/lib/views/widgets/exp/proxy_unit.dart @@ -26,3 +26,4 @@ export '../ProxyWidget/ToggleButtonsTheme/node1_base.dart'; export '../ProxyWidget/ButtonBarTheme/node1_base.dart'; export '../ProxyWidget/TooltipTheme/node1_base.dart'; export '../ProxyWidget/Directionality/node1_base.dart'; +export '../ProxyWidget/TableCell/node1_base.dart'; diff --git a/lib/views/widgets/exp/render_object_unit.dart b/lib/views/widgets/exp/render_object_unit.dart index 78d2773..9aacb83 100644 --- a/lib/views/widgets/exp/render_object_unit.dart +++ b/lib/views/widgets/exp/render_object_unit.dart @@ -32,6 +32,10 @@ export '../SingleChildRenderObjectWidget/CustomSingleChildLayout/node2_offset.da export '../SingleChildRenderObjectWidget/RepaintBoundary/node1_base.dart'; export '../SingleChildRenderObjectWidget/RepaintBoundary/node2_save.dart'; +export '../SingleChildRenderObjectWidget/AnnotatedRegion/node1_base.dart'; +export '../SingleChildRenderObjectWidget/CupertinoTextSelectionToolbar/node1_base.dart'; +export '../SingleChildRenderObjectWidget/SizeChangedLayoutNotifier/node1_base.dart'; + export '../SingleChildRenderObjectWidget/ConstrainedBox/node1_base.dart'; export '../SingleChildRenderObjectWidget/PhysicalModel/node1_base.dart'; export '../SingleChildRenderObjectWidget/FractionalTranslation/node1_base.dart'; diff --git a/lib/views/widgets/exp/sliver_unit.dart b/lib/views/widgets/exp/sliver_unit.dart index 3de62a2..c4128c2 100644 --- a/lib/views/widgets/exp/sliver_unit.dart +++ b/lib/views/widgets/exp/sliver_unit.dart @@ -23,3 +23,4 @@ export '../Sliver/CupertinoSliverRefreshControl/node1_base.dart'; export '../Sliver/SliverFillRemaining/node1_base.dart'; export '../Sliver/SliverIgnorePointer/node1_base.dart'; export '../Sliver/SliverAnimatedList/node1_base.dart'; +export '../Sliver/SliverLayoutBuilder/node1_base.dart'; diff --git a/lib/views/widgets/exp/stateful_unit.dart b/lib/views/widgets/exp/stateful_unit.dart index 057b17f..c4b1640 100644 --- a/lib/views/widgets/exp/stateful_unit.dart +++ b/lib/views/widgets/exp/stateful_unit.dart @@ -145,6 +145,12 @@ export '../StatefulWidget/WidgetsApp/node1_base.dart' hide HomePage; export '../StatefulWidget/WidgetInspector/node1_base.dart' hide HomePage; export '../StatefulWidget/AnimatedTheme/node1_base.dart'; export '../StatefulWidget/AnimatedPhysicalModel/node1_base.dart'; +export '../StatefulWidget/DefaultTabController/node1_base.dart'; +export '../StatefulWidget/GlowingOverscrollIndicator/node1_base.dart'; +export '../StatefulWidget/DraggableScrollableSheet/node1_base.dart'; +export '../StatefulWidget/DrawerController/node1_base.dart'; +export '../StatefulWidget/MergeableMaterial/node1_base.dart'; +export '../StatefulWidget/CupertinoTabView/node1_base.dart' hide HomePage; export '../StatefulWidget/TextButton/node1_base.dart'; export '../StatefulWidget/TextButton/node2_style.dart'; diff --git a/lib/views/widgets/exp/stateless_unit.dart b/lib/views/widgets/exp/stateless_unit.dart index edb9a71..da1831c 100644 --- a/lib/views/widgets/exp/stateless_unit.dart +++ b/lib/views/widgets/exp/stateless_unit.dart @@ -5,6 +5,7 @@ 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/CheckedModeBanner/node1_base.dart'; export '../StatelessWidget/Card/node1_base.dart'; export '../StatelessWidget/Card/node2_shape.dart'; export '../StatelessWidget/PreferredSize/node1_base.dart'; @@ -12,6 +13,7 @@ export '../StatelessWidget/PreferredSize/node2_adapter.dart'; export '../StatelessWidget/Builder/node1_base.dart'; export '../StatelessWidget/NavigationToolbar/node1_base.dart'; export '../StatelessWidget/CupertinoDialogAction/node1_base.dart'; +export '../StatelessWidget/DraggableScrollableActuator/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 521db88..bf99dcd 100644 --- a/lib/views/widgets/widgets_map.dart +++ b/lib/views/widgets/widgets_map.dart @@ -133,6 +133,10 @@ class WidgetsMap { return [ WidgetsAppDemo(), ]; + case "TableCell": + return [ + TableCellDemo(), + ]; case "EditableText": return [ @@ -235,6 +239,10 @@ class WidgetsMap { return [ CustomCircleAvatar(), ]; + case "SliverLayoutBuilder": + return [ + SliverLayoutBuilderDemo(), + ]; case "Visibility": return [ CustomVisibility(), @@ -466,6 +474,51 @@ class WidgetsMap { return [ CustomExpansionTile(), ]; + + case "AnnotatedRegion": + return [ + AnnotatedRegionDemo(), + ]; + case "CheckedModeBanner": + return [ + CheckedModeBannerDemo(), + ]; + case "DefaultTabController": + return [ + DefaultTabControllerDemo(), + ]; + case "CupertinoTabView": + return [ + CupertinoTabViewDemo(), + ]; + case "CupertinoTextSelectionToolbar": + return [ + CupertinoTextSelectionToolbarDemo(), + ]; + case "DraggableScrollableActuator": + return [ + DraggableScrollableActuatorDemo(), + ]; + case "GlowingOverscrollIndicator": + return [ + GlowingOverscrollIndicatorDemo(), + ]; + case "DraggableScrollableSheet": + return [ + DraggableScrollableSheetDemo(), + ]; + case "DrawerController": + return [ + DrawerControllerDemo(), + ]; + case "MergeableMaterial": + return [ + MergeableMaterialDemo(), + ]; + case "SizeChangedLayoutNotifier": + return [ + SizeChangedLayoutNotifierDemo(), + ]; case "SelectableText": return [ CustomSelectableText(),