├── nodejs ├── README.md ├── package.json ├── getWidgetsCatalog.js └── widgets_catalog.json ├── app ├── assets │ ├── images │ │ └── test.jpg │ └── fonts │ │ └── iconfont.ttf ├── README.md ├── lib │ ├── view │ │ ├── pages │ │ │ ├── mywebview.dart │ │ │ ├── catalog.dart │ │ │ ├── detail.dart │ │ │ └── indexed.dart │ │ ├── components │ │ │ ├── EZJellyClock.dart │ │ │ └── ezflutter │ │ │ │ └── EZMindMap.dart │ │ └── examples │ │ │ ├── ExampleAbsorbPointer.dart │ │ │ ├── Example.dart │ │ │ ├── ExampleAlign.dart │ │ │ ├── ExampleAnimatedOpacity.dart │ │ │ ├── ExampleAnimatedAlign.dart │ │ │ ├── ExampleAnimatedDefaultTextStyle.dart │ │ │ ├── ExampleAnimatedModalBarrier.dart │ │ │ ├── ExampleAnimatedContainer.dart │ │ │ ├── ExampleAlertDialog.dart │ │ │ ├── ExampleAnimatedPositioned.dart │ │ │ ├── ExampleAnimatedListState.dart │ │ │ ├── ExampleAnimatedPhysicalModel.dart │ │ │ ├── ExampleAnimatedCrossFade.dart │ │ │ └── ExampleAnimatedBuilder.dart │ ├── main.dart │ └── model │ │ ├── WidgetsJson.dart │ │ └── IconFontIcons.dart ├── test │ └── widget_test.dart └── pubspec.yaml ├── doc ├── Flutter Widgets Catalog.pdf └── Flutter Widgets Catalog.xmind ├── .gitignore ├── LICENSE └── README.md /nodejs/README.md: -------------------------------------------------------------------------------- 1 | 后端采用nodejs云开发 2 | 3 | -------------------------------------------------------------------------------- /app/assets/images/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ezshine/FlutterWidgetsCatalog/HEAD/app/assets/images/test.jpg -------------------------------------------------------------------------------- /app/assets/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ezshine/FlutterWidgetsCatalog/HEAD/app/assets/fonts/iconfont.ttf -------------------------------------------------------------------------------- /doc/Flutter Widgets Catalog.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ezshine/FlutterWidgetsCatalog/HEAD/doc/Flutter Widgets Catalog.pdf -------------------------------------------------------------------------------- /doc/Flutter Widgets Catalog.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ezshine/FlutterWidgetsCatalog/HEAD/doc/Flutter Widgets Catalog.xmind -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .metadata 2 | .gitignore 3 | .DS_Store 4 | pubspec.lock 5 | macos/ 6 | web/ 7 | ios/ 8 | android/ 9 | 10 | node_modules/ 11 | package-lock.json 12 | -------------------------------------------------------------------------------- /nodejs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backend", 3 | "version": "0.0.1", 4 | "description": "后端采用nodejs云开发", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "MIT", 11 | "dependencies": { 12 | "axios": "^0.21.1", 13 | "cheerio": "^1.0.0-rc.5" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/README.md: -------------------------------------------------------------------------------- 1 | # app 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /app/lib/view/pages/mywebview.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | import 'package:flutter/material.dart'; 4 | import 'package:webview_flutter/webview_flutter.dart'; 5 | 6 | class MyWebView extends StatefulWidget { 7 | 8 | final title; 9 | final url; 10 | 11 | MyWebView(this.title,this.url); 12 | 13 | @override 14 | MyWebViewState createState() => MyWebViewState(); 15 | } 16 | 17 | class MyWebViewState extends State { 18 | @override 19 | void initState() { 20 | super.initState(); 21 | // Enable hybrid composition. 22 | if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView(); 23 | } 24 | 25 | @override 26 | Widget build(BuildContext context) { 27 | return Scaffold( 28 | appBar: AppBar( 29 | title: Text(widget.title), 30 | ), 31 | body: WebView( 32 | javascriptMode: JavascriptMode.unrestricted, 33 | initialUrl: widget.url, 34 | ), 35 | ); 36 | } 37 | } -------------------------------------------------------------------------------- /app/lib/view/components/EZJellyClock.dart: -------------------------------------------------------------------------------- 1 | import 'package:app/view/pages/detail.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter/widgets.dart'; 4 | 5 | class EZJellyClock extends StatefulWidget { 6 | EZJellyClock({Key key}) : super(key: key); 7 | 8 | @override 9 | _EZJellyClockState createState() => _EZJellyClockState(); 10 | } 11 | 12 | class _EZJellyClockState extends State with TickerProviderStateMixin { 13 | 14 | 15 | @override 16 | Widget build(BuildContext context) { 17 | return Container( 18 | child: ListView.builder(itemBuilder: (BuildContext context,int index){ 19 | return ListTile( 20 | onTap: (){ 21 | Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){ 22 | return PageDetail(); 23 | })); 24 | }, 25 | leading: Hero(tag:"image$index",child: Image.asset("assets/images/test.jpg")) 26 | ); 27 | }), 28 | ); 29 | } 30 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 ezshine 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /app/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:app/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /app/lib/view/examples/ExampleAbsorbPointer.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ExampleAbsorbPointer extends StatefulWidget { 4 | ExampleAbsorbPointer({Key key}) : super(key: key); 5 | 6 | @override 7 | _ExampleAbsorbPointerState createState() => _ExampleAbsorbPointerState(); 8 | } 9 | 10 | class _ExampleAbsorbPointerState extends State { 11 | @override 12 | Widget build(BuildContext context) { 13 | return Scaffold( 14 | appBar: AppBar(), 15 | body: Padding( 16 | padding: EdgeInsets.all(10), 17 | child: ListView( 18 | children: [ 19 | Container( 20 | color: Colors.grey[850], 21 | child: Text(""" 22 | AbsorbPointer( 23 | absorbing: true,//默认值是true 24 | child: ElevatedButton(onPressed: (){}, child: Text("被AbsorbPointer的包裹的按钮")), 25 | ) 26 | """,textAlign: TextAlign.left,style: TextStyle(color: Colors.white),), 27 | ), 28 | TextField(), 29 | AbsorbPointer( 30 | absorbing: true, 31 | child: TextField(), 32 | ) 33 | ] 34 | ), 35 | ), 36 | ); 37 | } 38 | } -------------------------------------------------------------------------------- /app/lib/view/examples/Example.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ExampleAlign extends StatefulWidget { 4 | ExampleAlign({Key key}) : super(key: key); 5 | 6 | @override 7 | _ExampleAlignState createState() => _ExampleAlignState(); 8 | } 9 | 10 | class _ExampleAlignState extends State { 11 | @override 12 | Widget build(BuildContext context) { 13 | return Scaffold( 14 | appBar: AppBar(), 15 | body: Padding( 16 | padding: EdgeInsets.all(10), 17 | child: ListView( 18 | children: [ 19 | Container( 20 | color: Colors.grey[850], 21 | child: Text(""" 22 | AbsorbPointer( 23 | absorbing: true,//默认值是true 24 | child: ElevatedButton(onPressed: (){}, child: Text("被AbsorbPointer的包裹的按钮")), 25 | ) 26 | """,textAlign: TextAlign.left,style: TextStyle(color: Colors.white),), 27 | ), 28 | ElevatedButton(onPressed: (){}, child: Text("正常的按钮")), 29 | AbsorbPointer( 30 | absorbing: true, 31 | child: ElevatedButton(onPressed: (){}, child: Text("被AbsorbPointer的包裹的按钮")), 32 | ), 33 | Text("AbsorbPointer的子组件可以忽略掉用户的交互") 34 | ] 35 | ), 36 | ), 37 | ); 38 | } 39 | } -------------------------------------------------------------------------------- /app/lib/view/pages/catalog.dart: -------------------------------------------------------------------------------- 1 | import 'package:app/model/WidgetsJson.dart'; 2 | import 'package:app/view/components/ezflutter/EZMindMap.dart'; 3 | import 'package:flutter/material.dart'; 4 | import 'package:flutter/widgets.dart'; 5 | 6 | class PageCatalog extends StatefulWidget { 7 | PageCatalog({Key key}) : super(key: key); 8 | 9 | @override 10 | _PageCatalogState createState() => _PageCatalogState(); 11 | } 12 | 13 | class _PageCatalogState extends State with AutomaticKeepAliveClientMixin { 14 | 15 | @override 16 | bool get wantKeepAlive => true; 17 | 18 | EZMindMap mindMap; 19 | 20 | var rootNode; 21 | var tempNode; 22 | 23 | @override 24 | void initState() { 25 | super.initState(); 26 | 27 | mindMap = new EZMindMap(); 28 | 29 | rootNode = mindMap.addNode("Widgets Catalog (${WidgetsJson.data['total']})"); 30 | 31 | var list = WidgetsJson.data["list"]; 32 | addNodeFromList(list,rootNode); 33 | } 34 | 35 | void addNodeFromList(List list,node){ 36 | for(var i = 0 ; i _ExampleAlignState(); 8 | } 9 | 10 | class _ExampleAlignState extends State { 11 | @override 12 | Widget build(BuildContext context) { 13 | return Scaffold( 14 | appBar: AppBar(), 15 | body: Padding( 16 | padding: EdgeInsets.all(10), 17 | child: ListView( 18 | children: [ 19 | Container( 20 | color: Colors.grey[850], 21 | child: Text(""" 22 | Align( 23 | alignment: Alignment.topRight,//默认值是center 24 | child: ElevatedButton(onPressed: (){}, child: Text("按钮")), 25 | ), 26 | """, 27 | textAlign: TextAlign.left, 28 | style: TextStyle(color: Colors.white) 29 | ), 30 | ), 31 | Text("按钮靠左"), 32 | Align( 33 | alignment: Alignment.topLeft, 34 | child: ElevatedButton(onPressed: (){}, child: Text("按钮")), 35 | ), 36 | Align( 37 | alignment: Alignment.topRight, 38 | child:Text("按钮靠右") 39 | ), 40 | Align( 41 | alignment: Alignment.topRight, 42 | child: ElevatedButton(onPressed: (){}, child: Text("按钮")), 43 | ), 44 | ] 45 | ), 46 | ), 47 | ); 48 | } 49 | } -------------------------------------------------------------------------------- /app/lib/view/examples/ExampleAnimatedOpacity.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/widgets.dart'; 3 | 4 | class ExampleAnimatedOpacity extends StatefulWidget { 5 | @override 6 | _ExampleAnimatedOpacityState createState() => _ExampleAnimatedOpacityState(); 7 | } 8 | 9 | class _ExampleAnimatedOpacityState extends State { 10 | double opacity = 1.0; 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | return Scaffold( 15 | appBar: AppBar(), 16 | body: Padding( 17 | padding: EdgeInsets.all(10), 18 | child: ListView( 19 | children: [ 20 | Container( 21 | color: Colors.grey[850], 22 | child: Text(""" 23 | AnimatedOpacity( 24 | duration: Duration(seconds: 1),//动画时长 25 | opacity: 1,//透明度0-1 26 | } 27 | """,textAlign: TextAlign.left,style: TextStyle(color: Colors.white),), 28 | ), 29 | AnimatedOpacity( 30 | duration: Duration(seconds: 1), 31 | opacity: opacity, 32 | child: ElevatedButton( 33 | onPressed: (){ 34 | setState(() { 35 | opacity = 0; 36 | }); 37 | }, 38 | child: Text("点击后逐渐变透明") 39 | ) 40 | ), 41 | Text("AnimatedOpacity的opacity属性值发生变化时,其子组件会产生动画效果") 42 | ] 43 | ), 44 | ), 45 | ); 46 | } 47 | } -------------------------------------------------------------------------------- /app/lib/view/examples/ExampleAnimatedAlign.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | import 'package:flutter/material.dart'; 4 | 5 | class ExampleAnimatedAlign extends StatefulWidget { 6 | ExampleAnimatedAlign({Key key}) : super(key: key); 7 | 8 | @override 9 | _ExampleAnimatedAlignState createState() => _ExampleAnimatedAlignState(); 10 | } 11 | 12 | class _ExampleAnimatedAlignState extends State { 13 | 14 | Alignment alignment = Alignment.center; 15 | 16 | @override 17 | Widget build(BuildContext context) { 18 | return Scaffold( 19 | appBar: AppBar(), 20 | body: Padding( 21 | padding: EdgeInsets.all(10), 22 | child: ListView( 23 | children: [ 24 | Container( 25 | color: Colors.grey[850], 26 | child: Text(""" 27 | AnimatedAlign( 28 | duration: Duration(seconds: 1),//动画持续时长 29 | alignment: alignment, 30 | child: ElevatedButton(onPressed: (){}, child: Text("按钮")), 31 | ) 32 | """, 33 | textAlign: TextAlign.left, 34 | style: TextStyle(color: Colors.white) 35 | ), 36 | ), 37 | AnimatedAlign( 38 | alignment: alignment, 39 | duration: Duration(seconds: 1), 40 | child: ElevatedButton(onPressed: (){}, child: Text("按钮")), 41 | ), 42 | Text("AnimatedAlign组件的alignment改变时会有动画效果"), 43 | ElevatedButton(onPressed: (){ 44 | alignment = [Alignment.centerLeft,Alignment.center,Alignment.centerRight][Random().nextInt(3)]; 45 | setState(() { 46 | 47 | }); 48 | }, child: Text("现在是 $alignment ,点击切换")) 49 | ] 50 | ), 51 | ), 52 | ); 53 | } 54 | } -------------------------------------------------------------------------------- /app/lib/view/pages/detail.dart: -------------------------------------------------------------------------------- 1 | import 'package:app/model/IconFontIcons.dart'; 2 | import 'package:app/view/pages/mywebview.dart'; 3 | import 'package:flutter/material.dart'; 4 | import 'package:flutter/widgets.dart'; 5 | 6 | class PageDetail extends StatefulWidget { 7 | final Map info; 8 | final String videoUrl; 9 | PageDetail({Key key,this.info,this.videoUrl}) : super(key: key); 10 | 11 | @override 12 | _PageDetailState createState() => _PageDetailState(); 13 | } 14 | 15 | class _PageDetailState extends State { 16 | @override 17 | Widget build(BuildContext context) { 18 | return Scaffold( 19 | appBar: AppBar( 20 | title: Text(widget.info["title"]), 21 | ), 22 | body:Padding( 23 | padding: EdgeInsets.symmetric(vertical:20,horizontal:10), 24 | child:ListView( 25 | children: [ 26 | Text(widget.info["desc"]), 27 | ElevatedButton.icon(onPressed: (){ 28 | //https://api.flutter.dev/flutter/material/AlertDialog-class.html 29 | Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){ 30 | return MyWebView(widget.info['title'], widget.info["url"]); 31 | })); 32 | }, icon: Icon(IconFontIcons.iconFile), label: Text("官网文档")), 33 | ElevatedButton.icon(onPressed: (){ 34 | Navigator.pushNamed(context, "/examples/Example${widget.info['title']}"); 35 | }, icon: Icon(IconFontIcons.iconExperiment), label: Text("使用示例")), 36 | ElevatedButton.icon(onPressed: (){ 37 | Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){ 38 | return MyWebView(widget.info['title'], widget.videoUrl); 39 | })); 40 | }, icon: Icon(IconFontIcons.iconVideo), label: Text("视频教程")), 41 | ], 42 | ), 43 | ) 44 | ); 45 | } 46 | } -------------------------------------------------------------------------------- /app/lib/view/examples/ExampleAnimatedDefaultTextStyle.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | import 'package:flutter/material.dart'; 4 | 5 | class ExampleAnimatedDefaultTextStyle extends StatefulWidget { 6 | ExampleAnimatedDefaultTextStyle({Key key}) : super(key: key); 7 | 8 | @override 9 | _ExampleAnimatedDefaultTextStyleState createState() => _ExampleAnimatedDefaultTextStyleState(); 10 | } 11 | 12 | class _ExampleAnimatedDefaultTextStyleState extends State { 13 | 14 | Color color = Colors.red; 15 | double fontSize = 24.0; 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | return Scaffold( 20 | appBar: AppBar(), 21 | body: Padding( 22 | padding: EdgeInsets.all(10), 23 | child: ListView( 24 | children: [ 25 | Container( 26 | color: Colors.grey[850], 27 | child: Text(""" 28 | AnimatedDefaultTextStyle( 29 | child: Text("文字"), 30 | style: TextStyle(color: color,fontSize: fontSize), 31 | duration: Duration(seconds: 1) 32 | ) 33 | """,textAlign: TextAlign.left,style: TextStyle(color: Colors.white),), 34 | ), 35 | Center( 36 | child:AnimatedDefaultTextStyle( 37 | child: Text("文字"), 38 | style: TextStyle(color: color,fontSize: fontSize), 39 | duration: Duration(seconds: 1) 40 | ) 41 | ), 42 | ElevatedButton(onPressed: (){ 43 | setState(() { 44 | fontSize = Random().nextDouble()*40+24; 45 | color = Color.fromRGBO(Random().nextInt(256), Random().nextInt(256), Random().nextInt(256), 1); 46 | }); 47 | }, child: Text("切换字体大小颜色")), 48 | Text("改变AnimatedDefaultTextStyle的style中的属性时,其子元素的文本样式会以动画的方式改变style") 49 | ] 50 | ), 51 | ), 52 | ); 53 | } 54 | } -------------------------------------------------------------------------------- /app/lib/view/examples/ExampleAnimatedModalBarrier.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ExampleAnimatedModalBarrier extends StatefulWidget { 4 | ExampleAnimatedModalBarrier({Key key}) : super(key: key); 5 | 6 | @override 7 | _ExampleAnimatedModalBarrierState createState() => _ExampleAnimatedModalBarrierState(); 8 | } 9 | 10 | class _ExampleAnimatedModalBarrierState extends State with SingleTickerProviderStateMixin { 11 | 12 | AnimationController _controller; 13 | Animation _animation; 14 | 15 | @override 16 | void initState() { 17 | 18 | _controller = AnimationController(duration: Duration(milliseconds: 1000),vsync: this); 19 | 20 | _animation = ColorTween(begin: Colors.red,end: Colors.blue).animate(_controller); 21 | 22 | _controller.forward(); 23 | 24 | super.initState(); 25 | } 26 | 27 | @override 28 | void dispose() { 29 | _controller.dispose(); 30 | 31 | super.dispose(); 32 | } 33 | 34 | @override 35 | Widget build(BuildContext context) { 36 | return Scaffold( 37 | appBar: AppBar(), 38 | body: Padding( 39 | padding: EdgeInsets.all(10), 40 | child: Column( 41 | children: [ 42 | Container( 43 | color: Colors.grey[850], 44 | child: Text(""" 45 | AnimatedModalBarrier( 46 | dismissible: false,//点击后是否自动pop 47 | color: _animation//动画控制器 48 | ) 49 | """,textAlign: TextAlign.left,style: TextStyle(color: Colors.white),), 50 | ), 51 | Container( 52 | width: 100, 53 | height: 100, 54 | child:AnimatedModalBarrier( 55 | dismissible: false, 56 | color: _animation 57 | ), 58 | ), 59 | Text("AnimatedModalBarriers是一个带颜色切换动画的覆盖层,用于自定义弹窗的背景色") 60 | ] 61 | ), 62 | ), 63 | ); 64 | } 65 | } -------------------------------------------------------------------------------- /app/lib/view/examples/ExampleAnimatedContainer.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | import 'package:flutter/material.dart'; 4 | 5 | class ExampleAnimatedContainer extends StatefulWidget { 6 | ExampleAnimatedContainer({Key key}) : super(key: key); 7 | 8 | @override 9 | _ExampleAnimatedContainerState createState() => _ExampleAnimatedContainerState(); 10 | } 11 | 12 | class _ExampleAnimatedContainerState extends State { 13 | 14 | double width = 100.0; 15 | double height = 100.0; 16 | Color color = Colors.red; 17 | 18 | @override 19 | Widget build(BuildContext context) { 20 | return Scaffold( 21 | appBar: AppBar(), 22 | body: Padding( 23 | padding: EdgeInsets.all(10), 24 | child: ListView( 25 | children: [ 26 | Container( 27 | color: Colors.grey[850], 28 | child: Text(""" 29 | Center( 30 | child: AnimatedContainer( 31 | duration: Duration(seconds: 1),//required 32 | width: width, 33 | height: height, 34 | color: color, 35 | ), 36 | ), 37 | """,textAlign: TextAlign.left,style: TextStyle(color: Colors.white),), 38 | ), 39 | Center( 40 | child: AnimatedContainer( 41 | width: width, 42 | height: height, 43 | duration: Duration(seconds: 1), 44 | color: color, 45 | ), 46 | ), 47 | ElevatedButton(onPressed: (){ 48 | setState(() { 49 | width = Random().nextDouble()*50+50; 50 | height = Random().nextDouble()*50+50; 51 | color = Color.fromRGBO(Random().nextInt(256), Random().nextInt(256), Random().nextInt(256), 1); 52 | }); 53 | }, child: Text("随机动画")), 54 | Text("AnimatedContainer的属性变化时会产生动画效果") 55 | ] 56 | ), 57 | ), 58 | ); 59 | } 60 | } -------------------------------------------------------------------------------- /app/lib/view/pages/indexed.dart: -------------------------------------------------------------------------------- 1 | import 'package:app/model/WidgetsJson.dart'; 2 | import 'package:app/view/pages/detail.dart'; 3 | import 'package:flutter/material.dart'; 4 | 5 | class PageIndexed extends StatefulWidget { 6 | PageIndexed({Key key}) : super(key: key); 7 | 8 | @override 9 | _PageIndexedState createState() => _PageIndexedState(); 10 | } 11 | 12 | class _PageIndexedState extends State with AutomaticKeepAliveClientMixin{ 13 | 14 | @override 15 | bool get wantKeepAlive => true; 16 | 17 | List list = []; 18 | 19 | @override 20 | void initState() { 21 | super.initState(); 22 | 23 | parseCata(WidgetsJson.data); 24 | list.sort((Map a, Map b)=>a["title"].compareTo(b["title"])); 25 | } 26 | 27 | void parseCata(Map cataMap){ 28 | if(cataMap.containsKey("list")){ 29 | List cataList = cataMap["list"]; 30 | for(var i = cataList.length -1 ;i>=0;i--){ 31 | parseCata(cataList[i]); 32 | } 33 | }else{ 34 | bool exists = list.any((item){ 35 | if(item["title"] == cataMap["title"]){ 36 | return true; 37 | } 38 | return false; 39 | }); 40 | 41 | if(!exists){ 42 | list.add(cataMap); 43 | } 44 | } 45 | } 46 | 47 | @override 48 | Widget build(BuildContext context) { 49 | super.build(context); 50 | 51 | return ListView.separated( 52 | itemBuilder: (BuildContext context,int index){ 53 | return ListTile( 54 | onTap: (){ 55 | Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){ 56 | return PageDetail(info:list[index],videoUrl: "https://www.bilibili.com/video/BV1rz4y117D6?p=${index+2}"); 57 | })); 58 | }, 59 | title: Text(list[index]["title"],style: TextStyle(fontSize: 20)), 60 | // subtitle: Text(list[index]["desc"]) 61 | ); 62 | }, 63 | separatorBuilder: (BuildContext context,int index){ 64 | return Divider(); 65 | }, 66 | itemCount: list.length 67 | ); 68 | } 69 | } -------------------------------------------------------------------------------- /app/lib/view/examples/ExampleAlertDialog.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ExampleAlertDialog extends StatefulWidget { 4 | ExampleAlertDialog({Key key}) : super(key: key); 5 | 6 | @override 7 | _ExampleAlertDialogState createState() => _ExampleAlertDialogState(); 8 | } 9 | 10 | class _ExampleAlertDialogState extends State { 11 | 12 | 13 | getAlertDialog(){ 14 | return AlertDialog( 15 | elevation: 5, 16 | title: Text("这是标题"), 17 | content: Text("这是文本内容这是文本内容这是文本内容这是文本内容这是文本内容"), 18 | actions: [ 19 | ElevatedButton(onPressed: (){ 20 | Navigator.pop(context); 21 | }, child: Text("确定")), 22 | ElevatedButton(onPressed: (){ 23 | Navigator.pop(context); 24 | }, child: Text("取消"),style: ButtonStyle(backgroundColor: MaterialStateProperty.all(Colors.grey)),), 25 | ], 26 | ); 27 | } 28 | 29 | @override 30 | Widget build(BuildContext context) { 31 | return Scaffold( 32 | appBar: AppBar(), 33 | body: Padding( 34 | padding: EdgeInsets.all(10), 35 | child: ListView( 36 | children: [ 37 | Container( 38 | color: Colors.grey[850], 39 | child: Text(""" 40 | AlertDialog( 41 | title: Text("这是标题"), 42 | content: Text("这是内容"), 43 | elevation: 10,//控制立体阴影高度 44 | actions: [ 45 | ElevatedButton(onPressed: (){}, child: Text("取消"),style: ButtonStyle(backgroundColor: MaterialStateProperty.all(Colors.grey)),), 46 | ElevatedButton(onPressed: (){}, child: Text("确定")) 47 | ], 48 | ) 49 | """,textAlign: TextAlign.left,style: TextStyle(color: Colors.white),), 50 | ), 51 | getAlertDialog(), 52 | ElevatedButton(onPressed: () 53 | { 54 | showDialog(context: context, builder: (BuildContext context){ 55 | return getAlertDialog(); 56 | }); 57 | }, child: Text("弹出对话框")), 58 | Text("AlertDialog是一个对话框组件") 59 | ] 60 | ), 61 | ), 62 | ); 63 | } 64 | } -------------------------------------------------------------------------------- /app/lib/view/examples/ExampleAnimatedPositioned.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | import 'package:flutter/material.dart'; 4 | 5 | class ExampleAnimatedPositioned extends StatefulWidget { 6 | @override 7 | _ExampleAnimatedPositionedState createState() => 8 | _ExampleAnimatedPositionedState(); 9 | } 10 | 11 | class _ExampleAnimatedPositionedState extends State { 12 | 13 | @override 14 | Widget build(BuildContext context) { 15 | double left = Random().nextInt(200-64).toDouble(); 16 | double top = Random().nextInt(200-36).toDouble(); 17 | return Scaffold( 18 | appBar: AppBar(), 19 | body: Padding( 20 | padding: EdgeInsets.all(10), 21 | child: ListView(children: [ 22 | Container( 23 | color: Colors.grey[850], 24 | child: Text( 25 | """ 26 | AnimatedPositioned( 27 | duration: Duration(seconds: 1), 28 | left: left, 29 | top:top, 30 | child://子组件 31 | ) 32 | """, 33 | textAlign: TextAlign.left, 34 | style: TextStyle(color: Colors.white), 35 | ), 36 | ), 37 | Align( 38 | alignment: Alignment.center, 39 | child: Container( 40 | width: 200, 41 | height: 200, 42 | color: Colors.grey[200], 43 | child: Stack( 44 | children: [ 45 | AnimatedPositioned( 46 | duration: Duration(seconds: 1), 47 | left: left, 48 | top:top, 49 | child: ElevatedButton( 50 | onPressed: () { 51 | setState(() { 52 | 53 | }); 54 | }, 55 | child: Text("点了就跑") 56 | ) 57 | ) 58 | ], 59 | ), 60 | ), 61 | ), 62 | Text( 63 | "Positioned配合Stack布局,可以放置在任意坐标,AnimatedPositioned则在更改left,top属性值时会产生动画效果") 64 | ]), 65 | )); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /app/lib/view/examples/ExampleAnimatedListState.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ExampleAnimatedListState extends StatefulWidget { 4 | ExampleAnimatedListState({Key key}) : super(key: key); 5 | 6 | @override 7 | _ExampleAnimatedListStateState createState() => 8 | _ExampleAnimatedListStateState(); 9 | } 10 | 11 | class _ExampleAnimatedListStateState extends State { 12 | final GlobalKey _listKey = GlobalKey(); 13 | 14 | List _list = [ 15 | "AnimatedListState要配合AnimatedList使用", 16 | "当我们对ListView中的条目新增或删减时执行动画", 17 | "可以执行任意动画效果", 18 | "请查看本示例代码" 19 | ]; 20 | 21 | addItem() { 22 | final int _index = _list.length; 23 | 24 | _list.insert(_index, _index); 25 | 26 | _listKey.currentState.insertItem(_index); 27 | } 28 | 29 | removeItem() { 30 | final int _index = _list.length - 1; 31 | 32 | _listKey.currentState.removeItem(_index, (context, animation) { 33 | return _buildItem("item$_index", animation); 34 | }); 35 | _list.removeAt(_index); 36 | } 37 | 38 | Widget _buildItem(String _item, Animation _animation) { 39 | return SlideTransition( 40 | position: _animation 41 | .drive(CurveTween(curve: Curves.easeIn)) 42 | .drive(Tween(begin: Offset(1, 1), end: Offset(0, 1))), 43 | child: ListTile( 44 | tileColor: Colors.red, 45 | title: Text( 46 | _item, 47 | ), 48 | ), 49 | ); 50 | } 51 | 52 | @override 53 | Widget build(BuildContext context) { 54 | return Scaffold( 55 | appBar: AppBar(), 56 | body: AnimatedList( 57 | initialItemCount: _list.length, 58 | key: _listKey, 59 | itemBuilder: 60 | (BuildContext context, int index, Animation animation) { 61 | return _buildItem(_list[index].toString(), animation); 62 | }), 63 | floatingActionButton: Row( 64 | mainAxisAlignment: MainAxisAlignment.end, 65 | children: [ 66 | ElevatedButton( 67 | child: Text("添加"), 68 | onPressed: addItem 69 | ), 70 | ElevatedButton( 71 | child: Text("删除"), 72 | onPressed: removeItem 73 | ), 74 | ], 75 | )); 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /app/lib/view/examples/ExampleAnimatedPhysicalModel.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | import 'package:flutter/material.dart'; 4 | 5 | class ExampleAnimatedPhysicalModel extends StatefulWidget { 6 | @override 7 | _ExampleAnimatedPhysicalModelState createState() => _ExampleAnimatedPhysicalModelState(); 8 | } 9 | 10 | class _ExampleAnimatedPhysicalModelState extends State { 11 | double elevation = 10; 12 | BorderRadius boardRadius = BorderRadius.all(Radius.circular(10)); 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar(), 18 | body: Padding( 19 | padding: EdgeInsets.all(10), 20 | child: ListView( 21 | children: [ 22 | Container( 23 | color: Colors.grey[850], 24 | child: Text(""" 25 | AnimatedPhysicalModel( 26 | duration: Duration(seconds: 1), 27 | color:Colors.red, 28 | elevation: elevation, 29 | shadowColor: Colors.black, 30 | child: Container(width: 100,height: 100), 31 | shape: BoxShape.rectangle, 32 | borderRadius: BorderRadius.all(Radius.circular(8)), 33 | ) 34 | """,textAlign: TextAlign.left,style: TextStyle(color: Colors.white),), 35 | ), 36 | Padding( 37 | padding: EdgeInsets.all(50), 38 | child: AnimatedPhysicalModel( 39 | duration: Duration(seconds: 1), 40 | color:Colors.red, 41 | elevation: elevation, 42 | shadowColor: Colors.black, 43 | child: Container(width: 100,height: 100), 44 | shape: BoxShape.rectangle, 45 | borderRadius: boardRadius, 46 | ), 47 | ), 48 | ElevatedButton(onPressed: (){ 49 | setState(() { 50 | boardRadius = BorderRadius.all(Radius.circular(Random().nextInt(20).toDouble())); 51 | elevation = Random().nextInt(20).toDouble(); 52 | }); 53 | }, child: Text("改变属性")), 54 | Text("PhysicalModel是一个可以设定阴影,圆角和等属性的单子组件容器,AnimatedPhysicalModel在更改属性值时会产生动画效果") 55 | ] 56 | ), 57 | ) 58 | ); 59 | } 60 | } -------------------------------------------------------------------------------- /app/lib/view/examples/ExampleAnimatedCrossFade.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ExampleAnimatedCrossFade extends StatefulWidget { 4 | ExampleAnimatedCrossFade({Key key}) : super(key: key); 5 | 6 | @override 7 | _ExampleAnimatedCrossFadeState createState() => _ExampleAnimatedCrossFadeState(); 8 | } 9 | 10 | class _ExampleAnimatedCrossFadeState extends State { 11 | 12 | CrossFadeState fadeState = CrossFadeState.showFirst; 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar(), 18 | body: Padding( 19 | padding: EdgeInsets.all(10), 20 | child: ListView( 21 | children: [ 22 | Container( 23 | color: Colors.grey[850], 24 | child: Text(""" 25 | AnimatedCrossFade( 26 | firstChild: Container( 27 | width: 100, 28 | height: 100, 29 | color: Colors.red, 30 | child: Center(child:Text("first child")) 31 | ), 32 | secondChild: Container( 33 | width: 100, 34 | height: 100, 35 | color: Colors.blue, 36 | child: Center(child:Text("second child")) 37 | ), 38 | crossFadeState: fadeState, 39 | duration: Duration(seconds: 1) 40 | ) 41 | """,textAlign: TextAlign.left,style: TextStyle(color: Colors.white),), 42 | ), 43 | Center( 44 | child:AnimatedCrossFade( 45 | firstChild: Container( 46 | width: 100, 47 | height: 100, 48 | color: Colors.red, 49 | child: Center(child:Text("first child")) 50 | ), 51 | secondChild: Container( 52 | width: 100, 53 | height: 100, 54 | color: Colors.blue, 55 | child: Center(child:Text("second child")) 56 | ), 57 | crossFadeState: fadeState, 58 | duration: Duration(seconds: 1) 59 | ) 60 | ), 61 | ElevatedButton(onPressed: (){ 62 | setState(() { 63 | if(fadeState == CrossFadeState.showFirst)fadeState = CrossFadeState.showSecond; 64 | else fadeState = CrossFadeState.showFirst; 65 | }); 66 | }, child: Text("切换")), 67 | Text("AnimatedCrossFade可以在两个子组件间切换并具备淡入淡出的动画效果") 68 | ] 69 | ), 70 | ), 71 | ); 72 | } 73 | } -------------------------------------------------------------------------------- /nodejs/getWidgetsCatalog.js: -------------------------------------------------------------------------------- 1 | const axios = require("axios"); 2 | const cheerio = require('cheerio'); 3 | const fs = require('fs'); 4 | 5 | var totalWidgets = 0; 6 | async function getWidgetsCatalog() { 7 | // body... 8 | const res = await axios.get("https://flutter.dev/docs/development/ui/widgets"); 9 | 10 | const $ = cheerio.load(res.data); 11 | 12 | 13 | var final = { 14 | catalog:[] 15 | }; 16 | 17 | var catalog = $('.card'); 18 | 19 | for(var i = 0;i0){ 60 | 61 | console.log($(".site-content__title h1").text()+"有子分类"); 62 | 63 | for(var i = 0;i _ExampleAnimatedBuilderState(); 8 | } 9 | 10 | class _ExampleAnimatedBuilderState extends State with SingleTickerProviderStateMixin { 11 | 12 | AnimationController controller; 13 | Animation animation; 14 | 15 | @override 16 | void initState() { 17 | super.initState(); 18 | 19 | controller = AnimationController( 20 | duration: Duration(seconds: 1), 21 | vsync: this 22 | ); 23 | controller.repeat(); 24 | } 25 | 26 | @override 27 | void dispose() { 28 | controller.dispose(); 29 | 30 | super.dispose(); 31 | } 32 | 33 | @override 34 | Widget build(BuildContext context) { 35 | return Scaffold( 36 | appBar: AppBar(), 37 | body: Padding( 38 | padding: EdgeInsets.all(10), 39 | child: ListView( 40 | children: [ 41 | Container( 42 | color: Colors.grey[850], 43 | child: Text(""" 44 | Center( 45 | child: AnimatedBuilder( 46 | animation: controller, 47 | builder: (BuildContext context,Widget widget){ 48 | return Container( 49 | width: controller.value*100, 50 | height: 100, 51 | color: Colors.red, 52 | child: Center( 53 | child: Text("文字",style: TextStyle(color: Color.fromRGBO(255, (255*controller.value).toInt(), 255, 1)),), 54 | ), 55 | ); 56 | } 57 | ), 58 | ), 59 | """,textAlign: TextAlign.left,style: TextStyle(color: Colors.white),), 60 | ), 61 | Center( 62 | child: AnimatedBuilder( 63 | animation: controller, 64 | builder: (BuildContext context,Widget widget){ 65 | return Container( 66 | width: controller.value*100, 67 | height: 100, 68 | color: Colors.red, 69 | child: Center( 70 | child: Text("文字",style: TextStyle(color: Color.fromRGBO(255, (255*controller.value).toInt(), 255, 1)),), 71 | ), 72 | ); 73 | } 74 | ), 75 | ), 76 | Text("当AnimatedXXXX或XXXXTransition无法满足你对动画的需求时,比如连续循环的动画,那么你该看看AnimatedBuilder,它需要一个animationController但无需监听Listener。在动画执行期间会不断调用builder。") 77 | ] 78 | ), 79 | ), 80 | ); 81 | } 82 | } -------------------------------------------------------------------------------- /app/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: app 2 | description: A new Flutter project. 3 | 4 | # The following line prevents the package from being accidentally published to 5 | # pub.dev using `pub publish`. This is preferred for private packages. 6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev 7 | 8 | # The following defines the version and build number for your application. 9 | # A version number is three numbers separated by dots, like 1.2.43 10 | # followed by an optional build number separated by a +. 11 | # Both the version and the builder number may be overridden in flutter 12 | # build by specifying --build-name and --build-number, respectively. 13 | # In Android, build-name is used as versionName while build-number used as versionCode. 14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 16 | # Read more about iOS versioning at 17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 18 | version: 1.0.0+1 19 | 20 | environment: 21 | sdk: ">=2.7.0 <3.0.0" 22 | 23 | dependencies: 24 | flutter: 25 | sdk: flutter 26 | webview_flutter: ^2.0.2 27 | 28 | 29 | # The following adds the Cupertino Icons font to your application. 30 | # Use with the CupertinoIcons class for iOS style icons. 31 | cupertino_icons: ^1.0.2 32 | 33 | dev_dependencies: 34 | flutter_test: 35 | sdk: flutter 36 | 37 | # For information on the generic Dart part of this file, see the 38 | # following page: https://dart.dev/tools/pub/pubspec 39 | 40 | # The following section is specific to Flutter. 41 | flutter: 42 | 43 | # The following line ensures that the Material Icons font is 44 | # included with your application, so that you can use the icons in 45 | # the material Icons class. 46 | uses-material-design: true 47 | 48 | # To add assets to your application, add an assets section, like this: 49 | # assets: 50 | # - images/a_dot_burr.jpeg 51 | # - images/a_dot_ham.jpeg 52 | 53 | assets: 54 | - assets/images/ 55 | 56 | # An image asset can refer to one or more resolution-specific "variants", see 57 | # https://flutter.dev/assets-and-images/#resolution-aware. 58 | 59 | # For details regarding adding assets from package dependencies, see 60 | # https://flutter.dev/assets-and-images/#from-packages 61 | 62 | # To add custom fonts to your application, add a fonts section here, 63 | # in this "flutter" section. Each entry in this list should have a 64 | # "family" key with the font family name, and a "fonts" key with a 65 | # list giving the asset and other descriptors for the font. For 66 | # example: 67 | 68 | fonts: 69 | - family: IconFontIcons 70 | fonts: 71 | - asset: assets/fonts/iconfont.ttf 72 | 73 | # fonts: 74 | # - family: Schyler 75 | # fonts: 76 | # - asset: fonts/Schyler-Regular.ttf 77 | # - asset: fonts/Schyler-Italic.ttf 78 | # style: italic 79 | # - family: Trajan Pro 80 | # fonts: 81 | # - asset: fonts/TrajanPro.ttf 82 | # - asset: fonts/TrajanPro_Bold.ttf 83 | # weight: 700 84 | # 85 | # For details regarding fonts from package dependencies, 86 | # see https://flutter.dev/custom-fonts/#from-packages 87 | -------------------------------------------------------------------------------- /app/lib/view/components/ezflutter/EZMindMap.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class EZMindMap extends StatefulWidget { 4 | EZMindMap({Key key}) : super(key: key); 5 | 6 | final List _allNodes = []; 7 | 8 | Color itemTextColor = Colors.white; 9 | Color itemBackgroundColor = Colors.blue; 10 | double itemBorderRadius = 10; 11 | 12 | Color backgroundColor = Colors.white; 13 | 14 | Map addNode(String text, [Map parentNode]) { 15 | Map node = {"text": text, "children": []}; 16 | 17 | if (parentNode == null) 18 | _allNodes.add(node); 19 | else 20 | parentNode["children"].add(node); 21 | 22 | return node; 23 | } 24 | 25 | @override 26 | _EZMindMapState createState() => _EZMindMapState(); 27 | } 28 | 29 | class _EZMindMapState extends State { 30 | 31 | Offset drawStartPoint = Offset(0,0); 32 | 33 | @override 34 | void initState() { 35 | super.initState(); 36 | } 37 | 38 | @override 39 | Widget build(BuildContext context) { 40 | return Container( 41 | width: double.infinity, 42 | height: double.infinity, 43 | color: widget.backgroundColor, 44 | child: GestureDetector( 45 | onTapUp: (TapUpDetails detail){ 46 | 47 | }, 48 | onPanUpdate: (DragUpdateDetails detail){ 49 | drawStartPoint = Offset(drawStartPoint.dx + detail.delta.dx,drawStartPoint.dy + detail.delta.dy); 50 | setState(() {}); 51 | }, 52 | child: CustomPaint( 53 | painter: _EZMindMapPainter(widget._allNodes,drawStartPoint), 54 | ) 55 | ) 56 | ); 57 | } 58 | } 59 | 60 | class _EZMindMapPainter extends CustomPainter { 61 | List allNodes; 62 | 63 | Offset startPoint; 64 | 65 | _EZMindMapPainter(List allNodes,[Offset startPoint]) { 66 | this.allNodes = allNodes; 67 | this.startPoint = startPoint??Offset(0,0); 68 | } 69 | 70 | getNodeByHitPosition(){ 71 | 72 | } 73 | 74 | void drawNode(Map node,Canvas canvas){ 75 | double x = node["x"]??startPoint.dx; 76 | double y = node["y"]??startPoint.dy; 77 | double hPadding = node["hPadding"]??20; 78 | double vPadding = node["vPadding"]??10; 79 | double borderRadius = node["borderRadius"]??20; 80 | 81 | //text color 82 | Color color = node["color"]==null?Colors.white:Color(node["color"]); 83 | //background color 84 | Color backgroundColor = node["backgroundColor"]==null?Colors.blue:Color(node["backgroundColor"]); 85 | 86 | var paint = Paint(); 87 | paint.color = backgroundColor; 88 | paint.strokeWidth = 2; 89 | 90 | TextSpan textSpan = new TextSpan(style: new TextStyle(color: color), text: node["text"]); 91 | TextPainter tp = new TextPainter( 92 | text: textSpan, 93 | textAlign: TextAlign.center, 94 | textDirection: TextDirection.ltr 95 | ); 96 | tp.layout(); 97 | 98 | double width = tp.width+hPadding*2; 99 | double height = tp.height+vPadding*2; 100 | canvas.drawRRect(RRect.fromLTRBR(x, y, x+width, y+height, Radius.circular(borderRadius)), paint); 101 | tp.paint(canvas, new Offset(x+hPadding, y+vPadding)); 102 | 103 | node["hitRect"] = Rect.fromLTWH(x, y, width, height); 104 | 105 | List children = node["children"]; 106 | node["totalHeight"] = node["totalHeight"]??0; 107 | for(int i = 0 ;i 0){ 116 | var prevNode = children[i-1]; 117 | sy = prevNode["y"] + prevNode["totalHeight"] + 20; 118 | } 119 | 120 | childNode["y"] = sy; 121 | childNode["x"] = sx; 122 | drawNode(childNode,canvas); 123 | 124 | if(childNode["children"].length>0)node["totalHeight"] += childNode["totalHeight"]-height; 125 | 126 | canvas.drawLine(Offset(childNode["x"]-10,childNode["y"]+height/2), Offset(childNode["x"],childNode["y"]+height/2), paint); 127 | canvas.drawLine(Offset(childNode["x"]-10,childNode["y"]+height/2), Offset(childNode["x"]-10,y+height), paint); 128 | } 129 | } 130 | 131 | @override 132 | void paint(Canvas canvas, Size size) { 133 | // var paint = Paint() 134 | // ..isAntiAlias = true 135 | // ..strokeWidth = 2 136 | // ..style = PaintingStyle.fill //填充 137 | // ..color = Colors.black; //绘制颜色 138 | 139 | for (int i = allNodes.length - 1; i >= 0; i--) { 140 | Map node = allNodes[i]; 141 | drawNode(node, canvas); 142 | } 143 | 144 | } 145 | 146 | @override 147 | bool shouldRepaint(covariant CustomPainter oldDelegate) { 148 | return true; 149 | // throw UnimplementedError(); 150 | } 151 | } 152 | -------------------------------------------------------------------------------- /app/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:app/model/IconFontIcons.dart'; 2 | import 'package:app/view/examples/ExampleAbsorbPointer.dart'; 3 | import 'package:app/view/examples/ExampleAlertDialog.dart'; 4 | import 'package:app/view/examples/ExampleAlign.dart'; 5 | import 'package:app/view/examples/ExampleAnimatedAlign.dart'; 6 | import 'package:app/view/examples/ExampleAnimatedBuilder.dart'; 7 | import 'package:app/view/examples/ExampleAnimatedContainer.dart'; 8 | import 'package:app/view/examples/ExampleAnimatedCrossFade.dart'; 9 | import 'package:app/view/examples/ExampleAnimatedDefaultTextStyle.dart'; 10 | import 'package:app/view/examples/ExampleAnimatedListState.dart'; 11 | import 'package:app/view/examples/ExampleAnimatedModalBarrier.dart'; 12 | import 'package:app/view/examples/ExampleAnimatedOpacity.dart'; 13 | import 'package:app/view/examples/ExampleAnimatedPhysicalModel.dart'; 14 | import 'package:app/view/examples/ExampleAnimatedPositioned.dart'; 15 | import 'package:app/view/pages/catalog.dart'; 16 | import 'package:app/view/pages/indexed.dart'; 17 | import 'package:flutter/material.dart'; 18 | 19 | void main() { 20 | runApp(MyApp()); 21 | } 22 | 23 | class MyApp extends StatelessWidget { 24 | // This widget is the root of your application. 25 | @override 26 | Widget build(BuildContext context) { 27 | return MaterialApp( 28 | title: 'Flutter Demo', 29 | theme: ThemeData( 30 | // This is the theme of your application. 31 | // 32 | // Try running your application with "flutter run". You'll see the 33 | // application has a blue toolbar. Then, without quitting the app, try 34 | // changing the primarySwatch below to Colors.green and then invoke 35 | // "hot reload" (press "r" in the console where you ran "flutter run", 36 | // or simply save your changes to "hot reload" in a Flutter IDE). 37 | // Notice that the counter didn't reset back to zero; the application 38 | // is not restarted. 39 | primarySwatch: Colors.blue, 40 | ), 41 | home: MyHomePage(title: 'Flutter Widgets Catalog'), 42 | routes: { 43 | "/examples/ExampleAbsorbPointer":(BuildContext context) => ExampleAbsorbPointer(), 44 | "/examples/ExampleAlertDialog":(BuildContext context) => ExampleAlertDialog(), 45 | "/examples/ExampleAlign":(BuildContext context) => ExampleAlign(), 46 | "/examples/ExampleAnimatedAlign":(BuildContext context) => ExampleAnimatedAlign(), 47 | "/examples/ExampleAnimatedBuilder":(BuildContext context) => ExampleAnimatedBuilder(), 48 | "/examples/ExampleAnimatedContainer":(BuildContext context) => ExampleAnimatedContainer(), 49 | "/examples/ExampleAnimatedCrossFade":(BuildContext context) => ExampleAnimatedCrossFade(), 50 | "/examples/ExampleAnimatedDefaultTextStyle":(BuildContext context) => ExampleAnimatedDefaultTextStyle(), 51 | "/examples/ExampleAnimatedListState":(BuildContext context) => ExampleAnimatedListState(), 52 | "/examples/ExampleAnimatedModalBarrier":(BuildContext context) => ExampleAnimatedModalBarrier(), 53 | "/examples/ExampleAnimatedOpacity":(BuildContext context) => ExampleAnimatedOpacity(), 54 | "/examples/ExampleAnimatedPhysicalModel":(BuildContext context) => ExampleAnimatedPhysicalModel(), 55 | "/examples/ExampleAnimatedPositioned":(BuildContext context) => ExampleAnimatedPositioned() 56 | }, 57 | ); 58 | } 59 | } 60 | 61 | class MyHomePage extends StatefulWidget { 62 | MyHomePage({Key key, this.title}) : super(key: key); 63 | 64 | // This widget is the home page of your application. It is stateful, meaning 65 | // that it has a State object (defined below) that contains fields that affect 66 | // how it looks. 67 | 68 | // This class is the configuration for the state. It holds the values (in this 69 | // case the title) provided by the parent (in this case the App widget) and 70 | // used by the build method of the State. Fields in a Widget subclass are 71 | // always marked "final". 72 | 73 | final String title; 74 | 75 | @override 76 | _MyHomePageState createState() => _MyHomePageState(); 77 | } 78 | 79 | class _MyHomePageState extends State { 80 | 81 | int currentBottomNav = 0; 82 | PageController _pageController = PageController(initialPage: 0); 83 | 84 | @override 85 | void dispose() { 86 | super.dispose(); 87 | 88 | _pageController.dispose(); 89 | } 90 | 91 | @override 92 | Widget build(BuildContext context) { 93 | // This method is rerun every time setState is called, for instance as done 94 | // by the _incrementCounter method above. 95 | // 96 | // The Flutter framework has been optimized to make rerunning build methods 97 | // fast, so that you can just rebuild anything that needs updating rather 98 | // than having to individually change instances of widgets. 99 | return Scaffold( 100 | appBar: AppBar( 101 | title: Text(widget.title), 102 | ), 103 | body: PageView( 104 | physics: NeverScrollableScrollPhysics(), 105 | controller: _pageController, 106 | children: [ 107 | PageIndexed(), 108 | PageCatalog() 109 | ], 110 | ), 111 | bottomNavigationBar: BottomNavigationBar( 112 | backgroundColor: Colors.blueAccent, 113 | selectedItemColor: Colors.white, 114 | unselectedItemColor: Colors.white30, 115 | currentIndex: currentBottomNav, 116 | onTap: (int index){ 117 | setState(() { 118 | currentBottomNav = index; 119 | _pageController.jumpToPage(currentBottomNav); 120 | }); 121 | }, 122 | items: [ 123 | BottomNavigationBarItem(icon: Icon(IconFontIcons.iconSortAscending),label: "索引"), 124 | BottomNavigationBarItem(icon: Icon(IconFontIcons.iconApartment),label: "地图"), 125 | ], 126 | ), 127 | ); 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Flutter Widgets Catalog 2 | 3 | (WIP) 4 | 5 | 6 | 7 | ### 计划 8 | 9 | 1、使用`Flutter`开发一个全平台的`Flutter Widgets Catalog APP`,并且开源。在这个APP中可以通过图形化的方式查看所有`Widgets`的介绍,示例,视频教程。 10 | 11 | 2、所有文档内容由前一天从`flutter.dev`官网爬取,保持和官网同步。 12 | 13 | 3、每一个`Widget`都录制一个视频教程。 14 | 15 | 16 | 17 | ### 关注进展 18 | 19 | - [掘金(大帅老猿)](https://juejin.cn/user/2955079655898093) 20 | - [哔哩哔哩(大帅老猿)](https://space.bilibili.com/422646817) 21 | - 微信公众号(大帅老猿) 22 | 23 | 24 | 25 | ### 使用说明 26 | 27 | 1. 安装好Flutter环境,查看教程 28 | 2. clone本项目到本地 29 | 1. `cd FlutterWigetsCatalog/app` 30 | 2. `flutter create .` 31 | 3. `flutter run` 32 | 3. 要运行nodejs爬虫,你需要`npm install`一下 33 | 34 | 35 | 36 | ### Widgets列表 (共173个) 37 | 38 | 视频教程地址:https://www.bilibili.com/video/BV1rz4y117D6/ 39 | 40 | | 代码示例 | 官方视频 | 示例视频 | Widget名称 | 41 | | :----: | :----: | :----: | ------ | 42 | | √ | √ | √ | AbsorbPointer | 43 | | √ | √ | √ | AlertDialog | 44 | | √ | √ | | Align | 45 | | √ | | | AnimatedAlign | 46 | | √ | √ | | AnimatedBuilder | 47 | | √ | | | AnimatedContainer | 48 | | √ | √ | | AnimatedCrossFade | 49 | | √ | | | AnimatedDefaultTextStyle | 50 | | √ | | | AnimatedListState | 51 | | √ | | | AnimatedModalBarrier | 52 | | √ | √ | | AnimatedOpacity | 53 | | √ | | | AnimatedPhysicalModel | 54 | | √ | √ | | AnimatedPositioned | 55 | | | | | AnimatedSize | 56 | | | √ | | AnimatedWidget | 57 | | | | | AnimatedWidgetBaseState | 58 | | | | | Appbar | 59 | | | √ | | AspectRatio | 60 | | | | | AssetBundle | 61 | | | | | Autocomplete | 62 | | | | | BackdropFilter | 63 | | | | | Baseline | 64 | | | | | BottomNavigationBar | 65 | | | | | BottomSheet | 66 | | | | | Card | 67 | | | | | Center | 68 | | | | | Checkbox | 69 | | | | | Chip | 70 | | | √ | | CircularProgressIndicator | 71 | | | √ | | ClipOval | 72 | | | √ | | ClipPath | 73 | | | √ | | ClipRect | 74 | | | | | Column | 75 | | | √ | | ConstrainedBox | 76 | | | √ | | Container | 77 | | | √ | | CupertinoActionSheet | 78 | | | √ | | CupertinoActivityIndicator | 79 | | | | | CupertinoAlertDialog | 80 | | | | | CupertinoButton | 81 | | | | | CupertinoContextMenu | 82 | | | | | CupertinoDatePicker | 83 | | | | | CupertinoDialog | 84 | | | | | CupertinoDialogAction | 85 | | | | | CupertinoFullscreenDialogTransition | 86 | | | | | CupertinoNavigationBar | 87 | | | | | CupertinoPageScaffold | 88 | | | | | CupertinoPageTransition | 89 | | | | | CupertinoPicker | 90 | | | | | CupertinoPopupSurface | 91 | | | | | CupertinoScrollbar | 92 | | | | | CupertinoSearchTextField | 93 | | | | | CupertinoSegmentedControl | 94 | | | | | CupertinoSlider | 95 | | | | | CupertinoSlidingSegmentedControl | 96 | | | | | CupertinoSliverNavigationBar | 97 | | | | | CupertinoSwitch | 98 | | | | | CupertinoTabBar | 99 | | | | | CupertinoTabScaffold | 100 | | | | | CupertinoTabView | 101 | | | | | CupertinoTextField | 102 | | | | | CupertinoTimerPicker | 103 | | | | | CustomMultiChildLayout | 104 | | | √ | | CustomPaint | 105 | | | | | CustomScrollView | 106 | | | | | CustomSingleChildLayout | 107 | | | √ | | DataTable | 108 | | | | | Date & Time Pickers | 109 | | | | | DecoratedBox | 110 | | | | | DecoratedBoxTransition | 111 | | | | | DefaultTextStyle | 112 | | | √ | | Dismissible | 113 | | | √ | | Divider | 114 | | | | | DragTarget | 115 | | | √ | | Draggable | 116 | | | √ | | DraggableScrollableSheet | 117 | | | √ | | Drawer | 118 | | | | | DropdownButton | 119 | | | | | ElevatedButton | 120 | | | | | ExcludeSemantics | 121 | | | | | Expanded | 122 | | | √ | | ExpansionPanel | 123 | | | | | FadeTransition | 124 | | | √ | | FittedBox | 125 | | | | | FloatingActionButton | 126 | | | | | Flow | 127 | | | √ | | FlutterLogo | 128 | | | | | Form | 129 | | | | | FormField | 130 | | | | | FractionalTranslation | 131 | | | √ | | FractionallySizedBox | 132 | | | | | FutureBuilder | 133 | | | | | GestureDetector | 134 | | | √ | | GridView | 135 | | | √ | | Hero | 136 | | | | | Icon | 137 | | | | | IconButton | 138 | | | √ | | IgnorePointer | 139 | | | √ | | Image | 140 | | | √ | | IndexedStack | 141 | | | √ | | InteractiveViewer | 142 | | | | | IntrinsicHeight | 143 | | | | | IntrinsicWidth | 144 | | | √ | | LayoutBuilder | 145 | | | √ | | LimitedBox | 146 | | | √ | | LinearProgressIndicator | 147 | | | | | ListBody | 148 | | | √ | | ListTile | 149 | | | √ | | ListView | 150 | | | | | LongPressDraggable | 151 | | | | | MaterialApp | 152 | | | √ | | MediaQuery | 153 | | | | | MergeSemantics | 154 | | | | | Navigator | 155 | | | | | NestedScrollView | 156 | | | √ | | NotificationListener | 157 | | | | | Offstage | 158 | | | | | Opacity | 159 | | | | | OutlinedButton | 160 | | | | | OverflowBox | 161 | | | √ | | Padding | 162 | | | | | PageView | 163 | | | √ | | Placeholder | 164 | | | | | PopupMenuButton | 165 | | | | | PositionedTransition | 166 | | | | | Radio | 167 | | | | | RawImage | 168 | | | | | RawKeyboardListener | 169 | | | | | RefreshIndicator | 170 | | | √ | | ReorderableListView | 171 | | | √ | | RichText | 172 | | | √ | | RotatedBox | 173 | | | | | RotationTransition | 174 | | | | | Row | 175 | | | | | Scaffold | 176 | | | | | ScaleTransition | 177 | | | | | ScrollConfiguration | 178 | | | | | Scrollable | 179 | | | √ | | Scrollbar | 180 | | | √ | | Semantics | 181 | | | | | SimpleDialog | 182 | | | | | SingleChildScrollView | 183 | | | | | SizeTransition | 184 | | | √ | | SizedBox | 185 | | | | | SizedOverflowBox | 186 | | | | | SlideTransition | 187 | | | √ | | Slider | 188 | | | √ | | SliverAppBar | 189 | | | | | SliverChildBuilderDelegate | 190 | | | | | SliverChildListDelegate | 191 | | | | | SliverFixedExtentList | 192 | | | | | SliverGrid | 193 | | | | | SliverList | 194 | | | | | SliverPadding | 195 | | | | | SliverPersistentHeader | 196 | | | | | SliverToBoxAdapter | 197 | | | √ | | SnackBar | 198 | | | √ | | Stack | 199 | | | | | Stepper | 200 | | | | | StreamBuilder | 201 | | | | | Switch | 202 | | | | | TabBar | 203 | | | | | TabBarView | 204 | | | | | TabController | 205 | | | | | TabPageSelector | 206 | | | | | Table | 207 | | | | | Text | 208 | | | | | TextButton | 209 | | | | | TextField | 210 | | | | | Theme | 211 | | | √ | | Tooltip | 212 | | | √ | | Transform | 213 | | | | | WidgetsApp | 214 | | | | | Wrap | 215 | 216 | 217 | 218 | *关注我,一起学习Flutter吧* -------------------------------------------------------------------------------- /nodejs/widgets_catalog.json: -------------------------------------------------------------------------------- 1 | {"catalog":[{"title":"Accessibility","desc":"Make your app accessible.","url":"/docs/development/ui/widgets/accessibility","list":[{"title":"ExcludeSemantics","desc":"A widget that drops all the semantics of its descendants. This can be used to hide subwidgets that would otherwise be reported but that would only be confusing. For example, the Material Components Chip widget hides the avatar since it is redundant with the chip label.","url":"https://api.flutter.dev/flutter/widgets/ExcludeSemantics-class.html"},{"title":"MergeSemantics","desc":"A widget that merges the semantics of its descendants.","url":"https://api.flutter.dev/flutter/widgets/MergeSemantics-class.html"},{"title":"Semantics","desc":"A widget that annotates the widget tree with a description of the meaning of the widgets. Used by accessibility tools, search engines, and other semantic analysis software to determine the meaning of the application.","url":"https://api.flutter.dev/flutter/widgets/Semantics-class.html"}]},{"title":"Animation and Motion","desc":"Bring animations to your app.","url":"/docs/development/ui/widgets/animation","list":[{"title":"AnimatedAlign","desc":"Animated version of Align which automatically transitions the child's position over a given duration whenever the given alignment changes.","url":"https://api.flutter.dev/flutter/widgets/AnimatedAlign-class.html"},{"title":"AnimatedBuilder","desc":"A general-purpose widget for building animations. AnimatedBuilder is useful for more complex widgets that wish to include animation as part of a larger build function. To use AnimatedBuilder, simply construct the widget and pass it a builder function.","url":"https://api.flutter.dev/flutter/widgets/AnimatedBuilder-class.html"},{"title":"AnimatedContainer","desc":"A container that gradually changes its values over a period of time.","url":"https://api.flutter.dev/flutter/widgets/AnimatedContainer-class.html"},{"title":"AnimatedCrossFade","desc":"A widget that cross-fades between two given children and animates itself between their sizes.","url":"https://api.flutter.dev/flutter/widgets/AnimatedCrossFade-class.html"},{"title":"AnimatedDefaultTextStyle","desc":"Animated version of DefaultTextStyle which automatically transitions the default text style (the text style to apply to descendant Text widgets without explicit style) over a given duration whenever the given style changes.","url":"https://api.flutter.dev/flutter/widgets/AnimatedDefaultTextStyle-class.html"},{"title":"AnimatedListState","desc":"The state for a scrolling container that animates items when they are inserted or removed.","url":"https://api.flutter.dev/flutter/widgets/AnimatedListState-class.html"},{"title":"AnimatedModalBarrier","desc":"A widget that prevents the user from interacting with widgets behind itself.","url":"https://api.flutter.dev/flutter/widgets/AnimatedModalBarrier-class.html"},{"title":"AnimatedOpacity","desc":"Animated version of Opacity which automatically transitions the child's opacity over a given duration whenever the given opacity changes.","url":"https://api.flutter.dev/flutter/widgets/AnimatedOpacity-class.html"},{"title":"AnimatedPhysicalModel","desc":"Animated version of PhysicalModel.","url":"https://api.flutter.dev/flutter/widgets/AnimatedPhysicalModel-class.html"},{"title":"AnimatedPositioned","desc":"Animated version of Positioned which automatically transitions the child's position over a given duration whenever the given position changes.","url":"https://api.flutter.dev/flutter/widgets/AnimatedPositioned-class.html"},{"title":"AnimatedSize","desc":"Animated widget that automatically transitions its size over a given duration whenever the given child's size changes.","url":"https://api.flutter.dev/flutter/widgets/AnimatedSize-class.html"},{"title":"AnimatedWidget","desc":"A widget that rebuilds when the given Listenable changes value.","url":"https://api.flutter.dev/flutter/widgets/AnimatedWidget-class.html"},{"title":"AnimatedWidgetBaseState","desc":"A base class for widgets with implicit animations.","url":"https://api.flutter.dev/flutter/widgets/AnimatedWidgetBaseState-class.html"},{"title":"DecoratedBoxTransition","desc":"Animated version of a DecoratedBox that animates the different properties of its Decoration.","url":"https://api.flutter.dev/flutter/widgets/DecoratedBoxTransition-class.html"},{"title":"FadeTransition","desc":"Animates the opacity of a widget.","url":"https://api.flutter.dev/flutter/widgets/FadeTransition-class.html"},{"title":"Hero","desc":"A widget that marks its child as being a candidate for hero animations.","url":"https://api.flutter.dev/flutter/widgets/Hero-class.html"},{"title":"PositionedTransition","desc":"Animated version of Positioned which takes a specific Animation to transition the child's position from a start position to and end position over the lifetime of the animation.","url":"https://api.flutter.dev/flutter/widgets/PositionedTransition-class.html"},{"title":"RotationTransition","desc":"Animates the rotation of a widget.","url":"https://api.flutter.dev/flutter/widgets/RotationTransition-class.html"},{"title":"ScaleTransition","desc":"Animates the scale of transformed widget.","url":"https://api.flutter.dev/flutter/widgets/ScaleTransition-class.html"},{"title":"SizeTransition","desc":"Animates its own size and clips and aligns the child.","url":"https://api.flutter.dev/flutter/widgets/SizeTransition-class.html"},{"title":"SlideTransition","desc":"Animates the position of a widget relative to its normal position.","url":"https://api.flutter.dev/flutter/widgets/SlideTransition-class.html"}]},{"title":"Assets, Images, and Icons","desc":"Manage assets, display images, and show icons.","url":"/docs/development/ui/widgets/assets","list":[{"title":"AssetBundle","desc":"Asset bundles contain resources, such as images and strings, that can be used by an application. Access to these resources is asynchronous so that they can be transparently loaded over a network (e.g., from a NetworkAssetBundle) or from the local file system without blocking the application's user interface.","url":"https://api.flutter.dev/flutter/services/AssetBundle-class.html"},{"title":"Icon","desc":"A Material Design icon.","url":"https://api.flutter.dev/flutter/widgets/Icon-class.html"},{"title":"Image","desc":"A widget that displays an image.","url":"https://api.flutter.dev/flutter/widgets/Image-class.html"},{"title":"RawImage","desc":"A widget that displays a dart:ui.Image directly.","url":"https://api.flutter.dev/flutter/widgets/RawImage-class.html"}]},{"title":"Async","desc":"Async patterns to your Flutter application.","url":"/docs/development/ui/widgets/async","list":[{"title":"FutureBuilder","desc":"Widget that builds itself based on the latest snapshot of interaction with a Future.","url":"https://api.flutter.dev/flutter/widgets/FutureBuilder-class.html"},{"title":"StreamBuilder","desc":"Widget that builds itself based on the latest snapshot of interaction with a Stream.","url":"https://api.flutter.dev/flutter/widgets/StreamBuilder-class.html"}]},{"title":"Basics","desc":"Widgets you absolutely need to know before building your first Flutter app.","url":"/docs/development/ui/widgets/basics","list":[{"title":"Appbar","desc":"A Material Design app bar. An app bar consists of a toolbar and potentially other widgets, such as a TabBar and a FlexibleSpaceBar.","url":"https://api.flutter.dev/flutter/material/AppBar-class.html"},{"title":"Column","desc":"Layout a list of child widgets in the vertical direction.","url":"https://api.flutter.dev/flutter/widgets/Column-class.html"},{"title":"Container","desc":"A convenience widget that combines common painting, positioning, and sizing widgets.","url":"https://api.flutter.dev/flutter/widgets/Container-class.html"},{"title":"ElevatedButton","desc":"A Material Design elevated button. A filled button whose material elevates when pressed.","url":"https://api.flutter.dev/flutter/material/ElevatedButton-class.html"},{"title":"FlutterLogo","desc":"The Flutter logo, in widget form. This widget respects the IconTheme.","url":"https://api.flutter.dev/flutter/material/FlutterLogo-class.html"},{"title":"Icon","desc":"A Material Design icon.","url":"https://api.flutter.dev/flutter/widgets/Icon-class.html"},{"title":"Image","desc":"A widget that displays an image.","url":"https://api.flutter.dev/flutter/widgets/Image-class.html"},{"title":"Placeholder","desc":"A widget that draws a box that represents where other widgets will one day be added.","url":"https://api.flutter.dev/flutter/widgets/Placeholder-class.html"},{"title":"Row","desc":"Layout a list of child widgets in the horizontal direction.","url":"https://api.flutter.dev/flutter/widgets/Row-class.html"},{"title":"Scaffold","desc":"Implements the basic Material Design visual layout structure. This class provides APIs for showing drawers, snack bars, and bottom sheets.","url":"https://api.flutter.dev/flutter/material/Scaffold-class.html"},{"title":"Text","desc":"A run of text with a single style.","url":"https://api.flutter.dev/flutter/widgets/Text-class.html"}]},{"title":"Cupertino (iOS-style widgets)","desc":"Beautiful and high-fidelity widgets for current iOS design language.","url":"/docs/development/ui/widgets/cupertino","list":[{"title":"CupertinoActionSheet","desc":"An iOS-style modal bottom action sheet to choose an option among many.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoActionSheet-class.html"},{"title":"CupertinoActivityIndicator","desc":"An iOS-style activity indicator. Displays a circular 'spinner'.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoActivityIndicator-class.html"},{"title":"CupertinoAlertDialog","desc":"An iOS-style alert dialog.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoAlertDialog-class.html"},{"title":"CupertinoButton","desc":"An iOS-style button.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoButton-class.html"},{"title":"CupertinoContextMenu","desc":"An iOS-style full-screen modal route that opens when the child is long-pressed. Used to display relevant actions for your content.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoContextMenu-class.html"},{"title":"CupertinoDatePicker","desc":"An iOS-style date or date and time picker.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoDatePicker-class.html"},{"title":"CupertinoDialog","desc":"An iOS-style dialog.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoDialog-class.html"},{"title":"CupertinoDialogAction","desc":"A button typically used in a CupertinoAlertDialog.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoDialogAction-class.html"},{"title":"CupertinoFullscreenDialogTransition","desc":"An iOS-style transition used for summoning fullscreen dialogs.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoFullscreenDialogTransition-class.html"},{"title":"CupertinoNavigationBar","desc":"An iOS-style top navigation bar. Typically used with CupertinoPageScaffold.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoNavigationBar-class.html"},{"title":"CupertinoPageScaffold","desc":"Basic iOS style page layout structure. Positions a navigation bar and content on a background.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoPageScaffold-class.html"},{"title":"CupertinoPageTransition","desc":"Provides an iOS-style page transition animation.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoPageTransition-class.html"},{"title":"CupertinoPicker","desc":"An iOS-style picker control. Used to select an item in a short list.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoPicker-class.html"},{"title":"CupertinoPopupSurface","desc":"Rounded rectangle surface that looks like an iOS popup surface, such as an alert dialog or action sheet.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoPopupSurface-class.html"},{"title":"CupertinoScrollbar","desc":"An iOS-style scrollbar that indicates which portion of a scrollable widget is currently visible.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoScrollbar-class.html"},{"title":"CupertinoSearchTextField","desc":"An iOS-style search field.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSearchTextField-class.html"},{"title":"CupertinoSegmentedControl","desc":"An iOS-style segmented control. Used to select mutually exclusive options in a horizontal list.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSegmentedControl-class.html"},{"title":"CupertinoSlider","desc":"Used to select from a range of values.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSlider-class.html"},{"title":"CupertinoSlidingSegmentedControl","desc":"An iOS-13-style segmented control. Used to select mutually exclusive options in a horizontal list.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSlidingSegmentedControl-class.html"},{"title":"CupertinoSliverNavigationBar","desc":"An iOS-styled navigation bar with iOS-11-style large titles using slivers.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSliverNavigationBar-class.html"},{"title":"CupertinoSwitch","desc":"An iOS-style switch. Used to toggle the on/off state of a single setting.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSwitch-class.html"},{"title":"CupertinoTabBar","desc":"An iOS-style bottom tab bar. Typically used with CupertinoTabScaffold.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoTabBar-class.html"},{"title":"CupertinoTabScaffold","desc":"Tabbed iOS app structure. Positions a tab bar on top of tabs of content.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoTabScaffold-class.html"},{"title":"CupertinoTabView","desc":"Root content of a tab that supports parallel navigation between tabs. Typically used with CupertinoTabScaffold.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoTabView-class.html"},{"title":"CupertinoTextField","desc":"An iOS-style text field.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoTextField-class.html"},{"title":"CupertinoTimerPicker","desc":"An iOS-style countdown timer picker.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoTimerPicker-class.html"}]},{"title":"Input","desc":"Take user input in addition to input widgets in Material Components and Cupertino.","url":"/docs/development/ui/widgets/input","list":[{"title":"Autocomplete","desc":"A widget for helping the user make a selection by entering some text and choosing from among a list of options.","url":"https://api.flutter.dev/flutter/material/Autocomplete-class.html"},{"title":"Form","desc":"An optional container for grouping together multiple form field widgets (e.g. TextField widgets).","url":"https://api.flutter.dev/flutter/widgets/Form-class.html"},{"title":"FormField","desc":"A single form field. This widget maintains the current state of the form field, so that updates and validation errors are visually reflected in the UI.","url":"https://api.flutter.dev/flutter/widgets/FormField-class.html"},{"title":"RawKeyboardListener","desc":"A widget that calls a callback whenever the user presses or releases a key on a keyboard.","url":"https://api.flutter.dev/flutter/widgets/RawKeyboardListener-class.html"}]},{"title":"Interaction Models","desc":"Respond to touch events and route users to different views.","url":"/docs/development/ui/widgets/interaction","list":[{"title":"Touch interactions","list":[{"title":"AbsorbPointer","desc":"A widget that absorbs pointers during hit testing. When absorbing is true, this widget prevents its subtree from receiving pointer events by terminating hit testing at itself. It still consumes space during layout and paints its child as usual. It just prevents its children from being the target of located events, because it returns true from RenderBox.hitTest.","url":"https://api.flutter.dev/flutter/widgets/AbsorbPointer-class.html"},{"title":"Dismissible","desc":"A widget that can be dismissed by dragging in the indicated direction. Dragging or flinging this widget in the DismissDirection causes the child to slide out of view. Following the slide animation, if resizeDuration is non-null, the Dismissible widget animates its height (or width, whichever is perpendicular to the dismiss direction) to zero over the resizeDuration.","url":"https://api.flutter.dev/flutter/widgets/Dismissible-class.html"},{"title":"DragTarget","desc":"A widget that receives data when a Draggable widget is dropped. When a draggable is dragged on top of a drag target, the drag target is asked whether it will accept the data the draggable is carrying. If the user does drop the draggable on top of the drag target (and the drag target has indicated that it will accept the draggable's data), then the drag target is asked to accept the draggable's data.","url":"https://api.flutter.dev/flutter/widgets/DragTarget-class.html"},{"title":"Draggable","desc":"A widget that can be dragged from to a DragTarget. When a draggable widget recognizes the start of a drag gesture, it displays a feedback widget that tracks the user's finger across the screen. If the user lifts their finger while on top of a DragTarget, that target is given the opportunity to accept the data carried by the draggable.","url":"https://api.flutter.dev/flutter/widgets/Draggable-class.html"},{"title":"DraggableScrollableSheet","desc":"A container for a Scrollable that responds to drag gestures by resizing the scrollable until a limit is reached, and then scrolling.","url":"https://api.flutter.dev/flutter/widgets/DraggableScrollableSheet-class.html"},{"title":"GestureDetector","desc":"A widget that detects gestures. Attempts to recognize gestures that correspond to its non-null callbacks. If this widget has a child, it defers to that child for its sizing behavior. If it does not have a child, it grows to fit the parent instead.","url":"https://api.flutter.dev/flutter/widgets/GestureDetector-class.html"},{"title":"IgnorePointer","desc":"A widget that is invisible during hit testing. When ignoring is true, this widget (and its subtree) is invisible to hit testing. It still consumes space during layout and paints its child as usual. It just cannot be the target of located events, because it returns false from RenderBox.hitTest.","url":"https://api.flutter.dev/flutter/widgets/IgnorePointer-class.html"},{"title":"InteractiveViewer","desc":"A widget that enables pan and zoom interactions with its child.","url":"https://api.flutter.dev/flutter/widgets/InteractiveViewer-class.html"},{"title":"LongPressDraggable","desc":"Makes its child draggable starting from long press.","url":"https://api.flutter.dev/flutter/widgets/LongPressDraggable-class.html"},{"title":"Scrollable","desc":"Scrollable implements the interaction model for a scrollable widget, including gesture recognition, but does not have an opinion about how the viewport, which actually displays the children, is constructed.","url":"https://api.flutter.dev/flutter/widgets/Scrollable-class.html"}]},{"title":"Routing","list":[{"title":"Hero","desc":"A widget that marks its child as being a candidate for hero animations.","url":"https://api.flutter.dev/flutter/widgets/Hero-class.html"},{"title":"Navigator","desc":"A widget that manages a set of child widgets with a stack discipline. Many apps have a navigator near the top of their widget hierarchy to display their logical history using an Overlay with the most recently visited pages visually on top of the older pages. Using this pattern lets the navigator visually transition from one page to another by moving the widgets around in the overlay. Similarly, the navigator can be used to show a dialog by positioning the dialog widget above the current page.","url":"https://api.flutter.dev/flutter/widgets/Navigator-class.html"}]}]},{"title":"Layout","desc":"Arrange other widgets columns, rows, grids, and many other layouts.","url":"/docs/development/ui/widgets/layout","list":[{"title":"Single-child layout widgets","list":[{"title":"Align","desc":"A widget that aligns its child within itself and optionally sizes itself based on the child's size.","url":"https://api.flutter.dev/flutter/widgets/Align-class.html"},{"title":"AspectRatio","desc":"A widget that attempts to size the child to a specific aspect ratio.","url":"https://api.flutter.dev/flutter/widgets/AspectRatio-class.html"},{"title":"Baseline","desc":"A widget that positions its child according to the child's baseline.","url":"https://api.flutter.dev/flutter/widgets/Baseline-class.html"},{"title":"Center","desc":"A widget that centers its child within itself.","url":"https://api.flutter.dev/flutter/widgets/Center-class.html"},{"title":"ConstrainedBox","desc":"A widget that imposes additional constraints on its child.","url":"https://api.flutter.dev/flutter/widgets/ConstrainedBox-class.html"},{"title":"Container","desc":"A convenience widget that combines common painting, positioning, and sizing widgets.","url":"https://api.flutter.dev/flutter/widgets/Container-class.html"},{"title":"CustomSingleChildLayout","desc":"A widget that defers the layout of its single child to a delegate.","url":"https://api.flutter.dev/flutter/widgets/CustomSingleChildLayout-class.html"},{"title":"Expanded","desc":"A widget that expands a child of a Row, Column, or Flex.","url":"https://api.flutter.dev/flutter/widgets/Expanded-class.html"},{"title":"FittedBox","desc":"Scales and positions its child within itself according to fit.","url":"https://api.flutter.dev/flutter/widgets/FittedBox-class.html"},{"title":"FractionallySizedBox","desc":"A widget that sizes its child to a fraction of the total available space. For more details about the layout algorithm, see RenderFractionallySizedOverflowBox.","url":"https://api.flutter.dev/flutter/widgets/FractionallySizedBox-class.html"},{"title":"IntrinsicHeight","desc":"A widget that sizes its child to the child's intrinsic height.","url":"https://api.flutter.dev/flutter/widgets/IntrinsicHeight-class.html"},{"title":"IntrinsicWidth","desc":"A widget that sizes its child to the child's intrinsic width.","url":"https://api.flutter.dev/flutter/widgets/IntrinsicWidth-class.html"},{"title":"LimitedBox","desc":"A box that limits its size only when it's unconstrained.","url":"https://api.flutter.dev/flutter/widgets/LimitedBox-class.html"},{"title":"Offstage","desc":"A widget that lays the child out as if it was in the tree, but without painting anything, without making the child available for hit testing, and without taking any room in the parent.","url":"https://api.flutter.dev/flutter/widgets/Offstage-class.html"},{"title":"OverflowBox","desc":"A widget that imposes different constraints on its child than it gets from its parent, possibly allowing the child to overflow the parent.","url":"https://api.flutter.dev/flutter/widgets/OverflowBox-class.html"},{"title":"Padding","desc":"A widget that insets its child by the given padding.","url":"https://api.flutter.dev/flutter/widgets/Padding-class.html"},{"title":"SizedBox","desc":"A box with a specified size. If given a child, this widget forces its child to have a specific width and/or height (assuming values are permitted by this widget's parent). If either the width or height is null, this widget will size itself to match the child's size in that dimension.","url":"https://api.flutter.dev/flutter/widgets/SizedBox-class.html"},{"title":"SizedOverflowBox","desc":"A widget that is a specific size but passes its original constraints through to its child, which will probably overflow.","url":"https://api.flutter.dev/flutter/widgets/SizedOverflowBox-class.html"},{"title":"Transform","desc":"A widget that applies a transformation before painting its child.","url":"https://api.flutter.dev/flutter/widgets/Transform-class.html"}]},{"title":"Multi-child layout widgets","list":[{"title":"Column","desc":"Layout a list of child widgets in the vertical direction.","url":"https://api.flutter.dev/flutter/widgets/Column-class.html"},{"title":"CustomMultiChildLayout","desc":"A widget that uses a delegate to size and position multiple children.","url":"https://api.flutter.dev/flutter/widgets/CustomMultiChildLayout-class.html"},{"title":"Flow","desc":"A widget that implements the flow layout algorithm.","url":"https://api.flutter.dev/flutter/widgets/Flow-class.html"},{"title":"GridView","desc":"A grid list consists of a repeated pattern of cells arrayed in a vertical and horizontal layout. The GridView widget implements this component.","url":"https://api.flutter.dev/flutter/widgets/GridView-class.html"},{"title":"IndexedStack","desc":"A Stack that shows a single child from a list of children.","url":"https://api.flutter.dev/flutter/widgets/IndexedStack-class.html"},{"title":"LayoutBuilder","desc":"Builds a widget tree that can depend on the parent widget's size.","url":"https://api.flutter.dev/flutter/widgets/LayoutBuilder-class.html"},{"title":"ListBody","desc":"A widget that arranges its children sequentially along a given axis, forcing them to the dimension of the parent in the other axis.","url":"https://api.flutter.dev/flutter/widgets/ListBody-class.html"},{"title":"ListView","desc":"A scrollable, linear list of widgets. ListView is the most commonly used scrolling widget. It displays its children one after another in the scroll direction. In the cross axis, the children are required to fill the ListView.","url":"https://api.flutter.dev/flutter/widgets/ListView-class.html"},{"title":"Row","desc":"Layout a list of child widgets in the horizontal direction.","url":"https://api.flutter.dev/flutter/widgets/Row-class.html"},{"title":"Stack","desc":"This class is useful if you want to overlap several children in a simple way, for example having some text and an image, overlaid with a gradient and a button attached to the bottom.","url":"https://api.flutter.dev/flutter/widgets/Stack-class.html"},{"title":"Table","desc":"A widget that uses the table layout algorithm for its children.","url":"https://api.flutter.dev/flutter/widgets/Table-class.html"},{"title":"Wrap","desc":"A widget that displays its children in multiple horizontal or vertical runs.","url":"https://api.flutter.dev/flutter/widgets/Wrap-class.html"}]},{"title":"Sliver widgets","list":[{"title":"CupertinoSliverNavigationBar","desc":"An iOS-styled navigation bar with iOS-11-style large titles using slivers.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSliverNavigationBar-class.html"},{"title":"CustomScrollView","desc":"A ScrollView that creates custom scroll effects using slivers.","url":"https://api.flutter.dev/flutter/widgets/CustomScrollView-class.html"},{"title":"SliverAppBar","desc":"A material design app bar that integrates with a CustomScrollView.","url":"https://api.flutter.dev/flutter/material/SliverAppBar-class.html"},{"title":"SliverChildBuilderDelegate","desc":"A delegate that supplies children for slivers using a builder callback.","url":"https://api.flutter.dev/flutter/widgets/SliverChildBuilderDelegate-class.html"},{"title":"SliverChildListDelegate","desc":"A delegate that supplies children for slivers using an explicit list.","url":"https://api.flutter.dev/flutter/widgets/SliverChildListDelegate-class.html"},{"title":"SliverFixedExtentList","desc":"A sliver that places multiple box children with the same main axis extent in a linear array.","url":"https://api.flutter.dev/flutter/widgets/SliverFixedExtentList-class.html"},{"title":"SliverGrid","desc":"A sliver that places multiple box children in a two dimensional arrangement.","url":"https://api.flutter.dev/flutter/widgets/SliverGrid-class.html"},{"title":"SliverList","desc":"A sliver that places multiple box children in a linear array along the main axis.","url":"https://api.flutter.dev/flutter/widgets/SliverList-class.html"},{"title":"SliverPadding","desc":"A sliver that applies padding on each side of another sliver.","url":"https://api.flutter.dev/flutter/widgets/SliverPadding-class.html"},{"title":"SliverPersistentHeader","desc":"A sliver whose size varies when the sliver is scrolled to the edge of the viewport opposite the sliver's GrowthDirection.","url":"https://api.flutter.dev/flutter/widgets/SliverPersistentHeader-class.html"},{"title":"SliverToBoxAdapter","desc":"A sliver that contains a single box widget.","url":"https://api.flutter.dev/flutter/widgets/SliverToBoxAdapter-class.html"}]}]},{"title":"Material Components","desc":"Visual, behavioral, and motion-rich widgets implementing the Material Design guidelines.","url":"/docs/development/ui/widgets/material","list":[{"title":"App structure and navigation","list":[{"title":"Appbar","desc":"A Material Design app bar. An app bar consists of a toolbar and potentially other widgets, such as a TabBar and a FlexibleSpaceBar.","url":"https://api.flutter.dev/flutter/material/AppBar-class.html"},{"title":"BottomNavigationBar","desc":"Bottom navigation bars make it easy to explore and switch between top-level views in a single tap. The BottomNavigationBar widget implements this component.","url":"https://api.flutter.dev/flutter/material/BottomNavigationBar-class.html"},{"title":"Drawer","desc":"A Material Design panel that slides in horizontally from the edge of a Scaffold to show navigation links in an application.","url":"https://api.flutter.dev/flutter/material/Drawer-class.html"},{"title":"MaterialApp","desc":"A convenience widget that wraps a number of widgets that are commonly required for applications implementing Material Design.","url":"https://api.flutter.dev/flutter/material/MaterialApp-class.html"},{"title":"Scaffold","desc":"Implements the basic Material Design visual layout structure. This class provides APIs for showing drawers, snack bars, and bottom sheets.","url":"https://api.flutter.dev/flutter/material/Scaffold-class.html"},{"title":"SliverAppBar","desc":"A material design app bar that integrates with a CustomScrollView.","url":"https://api.flutter.dev/flutter/material/SliverAppBar-class.html"},{"title":"TabBar","desc":"A Material Design widget that displays a horizontal row of tabs.","url":"https://api.flutter.dev/flutter/material/TabBar-class.html"},{"title":"TabBarView","desc":"A page view that displays the widget which corresponds to the currently selected tab. Typically used in conjunction with a TabBar.","url":"https://api.flutter.dev/flutter/material/TabBarView-class.html"},{"title":"TabController","desc":"Coordinates tab selection between a TabBar and a TabBarView.","url":"https://api.flutter.dev/flutter/material/TabController-class.html"},{"title":"TabPageSelector","desc":"Displays a row of small circular indicators, one per tab. The selected tab's indicator is highlighted. Often used in conjunction with a TabBarView.","url":"https://api.flutter.dev/flutter/material/TabPageSelector-class.html"},{"title":"WidgetsApp","desc":"A convenience class that wraps a number of widgets that are commonly required for an application.","url":"https://api.flutter.dev/flutter/widgets/WidgetsApp-class.html"}]},{"title":"Buttons","list":[{"title":"DropdownButton","desc":"Shows the currently selected item and an arrow that opens a menu for selecting another item.","url":"https://api.flutter.dev/flutter/material/DropdownButton-class.html"},{"title":"ElevatedButton","desc":"A Material Design elevated button. A filled button whose material elevates when pressed.","url":"https://api.flutter.dev/flutter/material/ElevatedButton-class.html"},{"title":"FloatingActionButton","desc":"A floating action button is a circular icon button that hovers over content to promote a primary action in the application. Floating action buttons are most commonly used in the Scaffold.floatingActionButton field.","url":"https://api.flutter.dev/flutter/material/FloatingActionButton-class.html"},{"title":"IconButton","desc":"An icon button is a picture printed on a Material widget that reacts to touches by filling with color (ink).","url":"https://api.flutter.dev/flutter/material/IconButton-class.html"},{"title":"OutlinedButton","desc":"A Material Design outlined button, essentially a TextButton with an outlined border.","url":"https://api.flutter.dev/flutter/material/OutlinedButton-class.html"},{"title":"PopupMenuButton","desc":"Displays a menu when pressed and calls onSelected when the menu is dismissed because an item was selected.","url":"https://api.flutter.dev/flutter/material/PopupMenuButton-class.html"},{"title":"TextButton","desc":"A Material Design text button. A simple flat button without a border outline.","url":"https://api.flutter.dev/flutter/material/TextButton-class.html"}]},{"title":"Input and selections","list":[{"title":"Checkbox","desc":"Checkboxes allow the user to select multiple options from a set. The Checkbox widget implements this component.","url":"https://api.flutter.dev/flutter/material/Checkbox-class.html"},{"title":"Date & Time Pickers","desc":"Date pickers use a dialog window to select a single date on mobile. Time pickers use a dialog to select a single time (in the hours:minutes format) on mobile.","url":"https://api.flutter.dev/flutter/material/showDatePicker.html"},{"title":"Radio","desc":"Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side-by-side. ","url":"https://api.flutter.dev/flutter/material/Radio-class.html"},{"title":"Slider","desc":"Sliders let users select from a range of values by moving the slider thumb. ","url":"https://api.flutter.dev/flutter/material/Slider-class.html"},{"title":"Switch","desc":"On/off switches toggle the state of a single settings option. The Switch widget implements this component.","url":"https://api.flutter.dev/flutter/material/Switch-class.html"},{"title":"TextField","desc":"Touching a text field places the cursor and displays the keyboard. The TextField widget implements this component.","url":"https://api.flutter.dev/flutter/material/TextField-class.html"}]},{"title":"Dialogs, alerts, and panels","list":[{"title":"AlertDialog","desc":"Alerts are urgent interruptions requiring acknowledgement that inform the user about a situation. The AlertDialog widget implements this component.","url":"https://api.flutter.dev/flutter/material/AlertDialog-class.html"},{"title":"BottomSheet","desc":"Bottom sheets slide up from the bottom of the screen to reveal more content. You can call showBottomSheet() to implement a persistent bottom sheet or showModalBottomSheet() to implement a modal bottom sheet.","url":"https://api.flutter.dev/flutter/material/BottomSheet-class.html"},{"title":"ExpansionPanel","desc":"Expansion panels contain creation flows and allow lightweight editing of an element. The ExpansionPanel widget implements this component.","url":"https://api.flutter.dev/flutter/material/ExpansionPanel-class.html"},{"title":"SimpleDialog","desc":"Simple dialogs can provide additional details or actions about a list item. For example they can display avatars icons clarifying subtext or orthogonal actions (such as adding an account). ","url":"https://api.flutter.dev/flutter/material/SimpleDialog-class.html"},{"title":"SnackBar","desc":"A lightweight message with an optional action which briefly displays at the bottom of the screen.","url":"https://api.flutter.dev/flutter/material/SnackBar-class.html"}]},{"title":"Information displays","list":[{"title":"Card","desc":"A Material Design card. A card has slightly rounded corners and a shadow.","url":"https://api.flutter.dev/flutter/material/Card-class.html"},{"title":"Chip","desc":"A Material Design chip. Chips represent complex entities in small blocks, such as a contact.","url":"https://api.flutter.dev/flutter/material/Chip-class.html"},{"title":"CircularProgressIndicator","desc":"A material design circular progress indicator, which spins to indicate that the application is busy.","url":"https://api.flutter.dev/flutter/material/CircularProgressIndicator-class.html"},{"title":"DataTable","desc":"Data tables display sets of raw data. They usually appear in desktop enterprise products. The DataTable widget implements this component.","url":"https://api.flutter.dev/flutter/material/DataTable-class.html"},{"title":"GridView","desc":"A grid list consists of a repeated pattern of cells arrayed in a vertical and horizontal layout. The GridView widget implements this component.","url":"https://api.flutter.dev/flutter/widgets/GridView-class.html"},{"title":"Icon","desc":"A Material Design icon.","url":"https://api.flutter.dev/flutter/widgets/Icon-class.html"},{"title":"Image","desc":"A widget that displays an image.","url":"https://api.flutter.dev/flutter/widgets/Image-class.html"},{"title":"LinearProgressIndicator","desc":"A material design linear progress indicator, also known as a progress bar.","url":"https://api.flutter.dev/flutter/material/LinearProgressIndicator-class.html"},{"title":"Tooltip","desc":"Tooltips provide text labels that help explain the function of a button or other user interface action. Wrap the button in a Tooltip widget to show a label when the widget long pressed (or when the user takes some other appropriate action).","url":"https://api.flutter.dev/flutter/material/Tooltip-class.html"}]},{"title":"Layout","list":[{"title":"Divider","desc":"A one logical pixel thick horizontal line, with padding on either side.","url":"https://api.flutter.dev/flutter/material/Divider-class.html"},{"title":"ListTile","desc":"A single fixed-height row that typically contains some text as well as a leading or trailing icon.","url":"https://api.flutter.dev/flutter/material/ListTile-class.html"},{"title":"Stepper","desc":"A Material Design stepper widget that displays progress through a sequence of steps.","url":"https://api.flutter.dev/flutter/material/Stepper-class.html"}]}]},{"title":"Painting and effects","desc":"These widgets apply visual effects to the children without changing their layout, size, or position.","url":"/docs/development/ui/widgets/painting","list":[{"title":"BackdropFilter","desc":"A widget that applies a filter to the existing painted content and then paints a child. This effect is relatively expensive, especially if the filter is non-local, such as a blur.","url":"https://api.flutter.dev/flutter/widgets/BackdropFilter-class.html"},{"title":"ClipOval","desc":"A widget that clips its child using an oval.","url":"https://api.flutter.dev/flutter/widgets/ClipOval-class.html"},{"title":"ClipPath","desc":"A widget that clips its child using a path.","url":"https://api.flutter.dev/flutter/widgets/ClipPath-class.html"},{"title":"ClipRect","desc":"A widget that clips its child using a rectangle.","url":"https://api.flutter.dev/flutter/widgets/ClipRect-class.html"},{"title":"CustomPaint","desc":"A widget that provides a canvas on which to draw during the paint phase.","url":"https://api.flutter.dev/flutter/widgets/CustomPaint-class.html"},{"title":"DecoratedBox","desc":"A widget that paints a Decoration either before or after its child paints.","url":"https://api.flutter.dev/flutter/widgets/DecoratedBox-class.html"},{"title":"FractionalTranslation","desc":"A widget that applies a translation expressed as a fraction of the box's size before painting its child.","url":"https://api.flutter.dev/flutter/widgets/FractionalTranslation-class.html"},{"title":"Opacity","desc":"A widget that makes its child partially transparent.","url":"https://api.flutter.dev/flutter/widgets/Opacity-class.html"},{"title":"RotatedBox","desc":"A widget that rotates its child by a integral number of quarter turns.","url":"https://api.flutter.dev/flutter/widgets/RotatedBox-class.html"},{"title":"Transform","desc":"A widget that applies a transformation before painting its child.","url":"https://api.flutter.dev/flutter/widgets/Transform-class.html"}]},{"title":"Scrolling","desc":"Scroll multiple widgets as children of the parent.","url":"/docs/development/ui/widgets/scrolling","list":[{"title":"CustomScrollView","desc":"A ScrollView that creates custom scroll effects using slivers.","url":"https://api.flutter.dev/flutter/widgets/CustomScrollView-class.html"},{"title":"DraggableScrollableSheet","desc":"A container for a Scrollable that responds to drag gestures by resizing the scrollable until a limit is reached, and then scrolling.","url":"https://api.flutter.dev/flutter/widgets/DraggableScrollableSheet-class.html"},{"title":"GridView","desc":"A grid list consists of a repeated pattern of cells arrayed in a vertical and horizontal layout. The GridView widget implements this component.","url":"https://api.flutter.dev/flutter/widgets/GridView-class.html"},{"title":"ListView","desc":"A scrollable, linear list of widgets. ListView is the most commonly used scrolling widget. It displays its children one after another in the scroll direction. In the cross axis, the children are required to fill the ListView.","url":"https://api.flutter.dev/flutter/widgets/ListView-class.html"},{"title":"NestedScrollView","desc":"A scrolling view inside of which can be nested other scrolling views, with their scroll positions being intrinsically linked.","url":"https://api.flutter.dev/flutter/widgets/NestedScrollView-class.html"},{"title":"NotificationListener","desc":"A widget that listens for Notifications bubbling up the tree.","url":"https://api.flutter.dev/flutter/widgets/NotificationListener-class.html"},{"title":"PageView","desc":"A scrollable list that works page by page.","url":"https://api.flutter.dev/flutter/widgets/PageView-class.html"},{"title":"RefreshIndicator","desc":"A Material Design pull-to-refresh wrapper for scrollables.","url":"https://api.flutter.dev/flutter/material/RefreshIndicator-class.html"},{"title":"ReorderableListView","desc":"A list whose items the user can interactively reorder by dragging.","url":"https://api.flutter.dev/flutter/material/ReorderableListView-class.html"},{"title":"ScrollConfiguration","desc":"Controls how Scrollable widgets behave in a subtree.","url":"https://api.flutter.dev/flutter/widgets/ScrollConfiguration-class.html"},{"title":"Scrollable","desc":"Scrollable implements the interaction model for a scrollable widget, including gesture recognition, but does not have an opinion about how the viewport, which actually displays the children, is constructed.","url":"https://api.flutter.dev/flutter/widgets/Scrollable-class.html"},{"title":"Scrollbar","desc":"A Material Design scrollbar. A scrollbar indicates which portion of a Scrollable widget is actually visible.","url":"https://api.flutter.dev/flutter/material/Scrollbar-class.html"},{"title":"SingleChildScrollView","desc":"A box in which a single widget can be scrolled. This widget is useful when you have a single box that will normally be entirely visible, for example a clock face in a time picker, but you need to make sure it can be scrolled if the container gets too small in one axis (the scroll direction).","url":"https://api.flutter.dev/flutter/widgets/SingleChildScrollView-class.html"}]},{"title":"Styling","desc":"Manage the theme of your app, makes your app responsive to screen sizes, or add padding.","url":"/docs/development/ui/widgets/styling","list":[{"title":"MediaQuery","desc":"Establishes a subtree in which media queries resolve to the given data.","url":"https://api.flutter.dev/flutter/widgets/MediaQuery-class.html"},{"title":"Padding","desc":"A widget that insets its child by the given padding.","url":"https://api.flutter.dev/flutter/widgets/Padding-class.html"},{"title":"Theme","desc":"Applies a theme to descendant widgets. A theme describes the colors and typographic choices of an application.","url":"https://api.flutter.dev/flutter/material/Theme-class.html"}]},{"title":"Text","desc":"Display and style text.","url":"/docs/development/ui/widgets/text","list":[{"title":"DefaultTextStyle","desc":"The text style to apply to descendant Text widgets without explicit style.","url":"https://api.flutter.dev/flutter/widgets/DefaultTextStyle-class.html"},{"title":"RichText","desc":"The RichText widget displays text that uses multiple different styles. The text to display is described using a tree of TextSpan objects, each of which has an associated style that is used for that subtree. The text might break across multiple lines or might all be displayed on the same line depending on the layout constraints.","url":"https://api.flutter.dev/flutter/widgets/RichText-class.html"},{"title":"Text","desc":"A run of text with a single style.","url":"https://api.flutter.dev/flutter/widgets/Text-class.html"}]}],"total":195} -------------------------------------------------------------------------------- /app/lib/model/WidgetsJson.dart: -------------------------------------------------------------------------------- 1 | class WidgetsJson 2 | { 3 | static Map data = {"list":[{"title":"Accessibility","desc":"Make your app accessible.","url":"/docs/development/ui/widgets/accessibility","list":[{"title":"ExcludeSemantics","desc":"A widget that drops all the semantics of its descendants. This can be used to hide subwidgets that would otherwise be reported but that would only be confusing. For example, the Material Components Chip widget hides the avatar since it is redundant with the chip label.","url":"https://api.flutter.dev/flutter/widgets/ExcludeSemantics-class.html"},{"title":"MergeSemantics","desc":"A widget that merges the semantics of its descendants.","url":"https://api.flutter.dev/flutter/widgets/MergeSemantics-class.html"},{"title":"Semantics","desc":"A widget that annotates the widget tree with a description of the meaning of the widgets. Used by accessibility tools, search engines, and other semantic analysis software to determine the meaning of the application.","url":"https://api.flutter.dev/flutter/widgets/Semantics-class.html"}]},{"title":"Animation and Motion","desc":"Bring animations to your app.","url":"/docs/development/ui/widgets/animation","list":[{"title":"AnimatedAlign","desc":"Animated version of Align which automatically transitions the child's position over a given duration whenever the given alignment changes.","url":"https://api.flutter.dev/flutter/widgets/AnimatedAlign-class.html"},{"title":"AnimatedBuilder","desc":"A general-purpose widget for building animations. AnimatedBuilder is useful for more complex widgets that wish to include animation as part of a larger build function. To use AnimatedBuilder, simply construct the widget and pass it a builder function.","url":"https://api.flutter.dev/flutter/widgets/AnimatedBuilder-class.html"},{"title":"AnimatedContainer","desc":"A container that gradually changes its values over a period of time.","url":"https://api.flutter.dev/flutter/widgets/AnimatedContainer-class.html"},{"title":"AnimatedCrossFade","desc":"A widget that cross-fades between two given children and animates itself between their sizes.","url":"https://api.flutter.dev/flutter/widgets/AnimatedCrossFade-class.html"},{"title":"AnimatedDefaultTextStyle","desc":"Animated version of DefaultTextStyle which automatically transitions the default text style (the text style to apply to descendant Text widgets without explicit style) over a given duration whenever the given style changes.","url":"https://api.flutter.dev/flutter/widgets/AnimatedDefaultTextStyle-class.html"},{"title":"AnimatedListState","desc":"The state for a scrolling container that animates items when they are inserted or removed.","url":"https://api.flutter.dev/flutter/widgets/AnimatedListState-class.html"},{"title":"AnimatedModalBarrier","desc":"A widget that prevents the user from interacting with widgets behind itself.","url":"https://api.flutter.dev/flutter/widgets/AnimatedModalBarrier-class.html"},{"title":"AnimatedOpacity","desc":"Animated version of Opacity which automatically transitions the child's opacity over a given duration whenever the given opacity changes.","url":"https://api.flutter.dev/flutter/widgets/AnimatedOpacity-class.html"},{"title":"AnimatedPhysicalModel","desc":"Animated version of PhysicalModel.","url":"https://api.flutter.dev/flutter/widgets/AnimatedPhysicalModel-class.html"},{"title":"AnimatedPositioned","desc":"Animated version of Positioned which automatically transitions the child's position over a given duration whenever the given position changes.","url":"https://api.flutter.dev/flutter/widgets/AnimatedPositioned-class.html"},{"title":"AnimatedSize","desc":"Animated widget that automatically transitions its size over a given duration whenever the given child's size changes.","url":"https://api.flutter.dev/flutter/widgets/AnimatedSize-class.html"},{"title":"AnimatedWidget","desc":"A widget that rebuilds when the given Listenable changes value.","url":"https://api.flutter.dev/flutter/widgets/AnimatedWidget-class.html"},{"title":"AnimatedWidgetBaseState","desc":"A base class for widgets with implicit animations.","url":"https://api.flutter.dev/flutter/widgets/AnimatedWidgetBaseState-class.html"},{"title":"DecoratedBoxTransition","desc":"Animated version of a DecoratedBox that animates the different properties of its Decoration.","url":"https://api.flutter.dev/flutter/widgets/DecoratedBoxTransition-class.html"},{"title":"FadeTransition","desc":"Animates the opacity of a widget.","url":"https://api.flutter.dev/flutter/widgets/FadeTransition-class.html"},{"title":"Hero","desc":"A widget that marks its child as being a candidate for hero animations.","url":"https://api.flutter.dev/flutter/widgets/Hero-class.html"},{"title":"PositionedTransition","desc":"Animated version of Positioned which takes a specific Animation to transition the child's position from a start position to and end position over the lifetime of the animation.","url":"https://api.flutter.dev/flutter/widgets/PositionedTransition-class.html"},{"title":"RotationTransition","desc":"Animates the rotation of a widget.","url":"https://api.flutter.dev/flutter/widgets/RotationTransition-class.html"},{"title":"ScaleTransition","desc":"Animates the scale of transformed widget.","url":"https://api.flutter.dev/flutter/widgets/ScaleTransition-class.html"},{"title":"SizeTransition","desc":"Animates its own size and clips and aligns the child.","url":"https://api.flutter.dev/flutter/widgets/SizeTransition-class.html"},{"title":"SlideTransition","desc":"Animates the position of a widget relative to its normal position.","url":"https://api.flutter.dev/flutter/widgets/SlideTransition-class.html"}]},{"title":"Assets, Images, and Icons","desc":"Manage assets, display images, and show icons.","url":"/docs/development/ui/widgets/assets","list":[{"title":"AssetBundle","desc":"Asset bundles contain resources, such as images and strings, that can be used by an application. Access to these resources is asynchronous so that they can be transparently loaded over a network (e.g., from a NetworkAssetBundle) or from the local file system without blocking the application's user interface.","url":"https://api.flutter.dev/flutter/services/AssetBundle-class.html"},{"title":"Icon","desc":"A Material Design icon.","url":"https://api.flutter.dev/flutter/widgets/Icon-class.html"},{"title":"Image","desc":"A widget that displays an image.","url":"https://api.flutter.dev/flutter/widgets/Image-class.html"},{"title":"RawImage","desc":"A widget that displays a dart:ui.Image directly.","url":"https://api.flutter.dev/flutter/widgets/RawImage-class.html"}]},{"title":"Async","desc":"Async patterns to your Flutter application.","url":"/docs/development/ui/widgets/async","list":[{"title":"FutureBuilder","desc":"Widget that builds itself based on the latest snapshot of interaction with a Future.","url":"https://api.flutter.dev/flutter/widgets/FutureBuilder-class.html"},{"title":"StreamBuilder","desc":"Widget that builds itself based on the latest snapshot of interaction with a Stream.","url":"https://api.flutter.dev/flutter/widgets/StreamBuilder-class.html"}]},{"title":"Basics","desc":"Widgets you absolutely need to know before building your first Flutter app.","url":"/docs/development/ui/widgets/basics","list":[{"title":"Appbar","desc":"A Material Design app bar. An app bar consists of a toolbar and potentially other widgets, such as a TabBar and a FlexibleSpaceBar.","url":"https://api.flutter.dev/flutter/material/AppBar-class.html"},{"title":"Column","desc":"Layout a list of child widgets in the vertical direction.","url":"https://api.flutter.dev/flutter/widgets/Column-class.html"},{"title":"Container","desc":"A convenience widget that combines common painting, positioning, and sizing widgets.","url":"https://api.flutter.dev/flutter/widgets/Container-class.html"},{"title":"ElevatedButton","desc":"A Material Design elevated button. A filled button whose material elevates when pressed.","url":"https://api.flutter.dev/flutter/material/ElevatedButton-class.html"},{"title":"FlutterLogo","desc":"The Flutter logo, in widget form. This widget respects the IconTheme.","url":"https://api.flutter.dev/flutter/material/FlutterLogo-class.html"},{"title":"Icon","desc":"A Material Design icon.","url":"https://api.flutter.dev/flutter/widgets/Icon-class.html"},{"title":"Image","desc":"A widget that displays an image.","url":"https://api.flutter.dev/flutter/widgets/Image-class.html"},{"title":"Placeholder","desc":"A widget that draws a box that represents where other widgets will one day be added.","url":"https://api.flutter.dev/flutter/widgets/Placeholder-class.html"},{"title":"Row","desc":"Layout a list of child widgets in the horizontal direction.","url":"https://api.flutter.dev/flutter/widgets/Row-class.html"},{"title":"Scaffold","desc":"Implements the basic Material Design visual layout structure. This class provides APIs for showing drawers, snack bars, and bottom sheets.","url":"https://api.flutter.dev/flutter/material/Scaffold-class.html"},{"title":"Text","desc":"A run of text with a single style.","url":"https://api.flutter.dev/flutter/widgets/Text-class.html"}]},{"title":"Cupertino (iOS-style widgets)","desc":"Beautiful and high-fidelity widgets for current iOS design language.","url":"/docs/development/ui/widgets/cupertino","list":[{"title":"CupertinoActionSheet","desc":"An iOS-style modal bottom action sheet to choose an option among many.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoActionSheet-class.html"},{"title":"CupertinoActivityIndicator","desc":"An iOS-style activity indicator. Displays a circular 'spinner'.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoActivityIndicator-class.html"},{"title":"CupertinoAlertDialog","desc":"An iOS-style alert dialog.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoAlertDialog-class.html"},{"title":"CupertinoButton","desc":"An iOS-style button.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoButton-class.html"},{"title":"CupertinoContextMenu","desc":"An iOS-style full-screen modal route that opens when the child is long-pressed. Used to display relevant actions for your content.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoContextMenu-class.html"},{"title":"CupertinoDatePicker","desc":"An iOS-style date or date and time picker.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoDatePicker-class.html"},{"title":"CupertinoDialog","desc":"An iOS-style dialog.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoDialog-class.html"},{"title":"CupertinoDialogAction","desc":"A button typically used in a CupertinoAlertDialog.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoDialogAction-class.html"},{"title":"CupertinoFullscreenDialogTransition","desc":"An iOS-style transition used for summoning fullscreen dialogs.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoFullscreenDialogTransition-class.html"},{"title":"CupertinoNavigationBar","desc":"An iOS-style top navigation bar. Typically used with CupertinoPageScaffold.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoNavigationBar-class.html"},{"title":"CupertinoPageScaffold","desc":"Basic iOS style page layout structure. Positions a navigation bar and content on a background.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoPageScaffold-class.html"},{"title":"CupertinoPageTransition","desc":"Provides an iOS-style page transition animation.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoPageTransition-class.html"},{"title":"CupertinoPicker","desc":"An iOS-style picker control. Used to select an item in a short list.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoPicker-class.html"},{"title":"CupertinoPopupSurface","desc":"Rounded rectangle surface that looks like an iOS popup surface, such as an alert dialog or action sheet.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoPopupSurface-class.html"},{"title":"CupertinoScrollbar","desc":"An iOS-style scrollbar that indicates which portion of a scrollable widget is currently visible.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoScrollbar-class.html"},{"title":"CupertinoSearchTextField","desc":"An iOS-style search field.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSearchTextField-class.html"},{"title":"CupertinoSegmentedControl","desc":"An iOS-style segmented control. Used to select mutually exclusive options in a horizontal list.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSegmentedControl-class.html"},{"title":"CupertinoSlider","desc":"Used to select from a range of values.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSlider-class.html"},{"title":"CupertinoSlidingSegmentedControl","desc":"An iOS-13-style segmented control. Used to select mutually exclusive options in a horizontal list.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSlidingSegmentedControl-class.html"},{"title":"CupertinoSliverNavigationBar","desc":"An iOS-styled navigation bar with iOS-11-style large titles using slivers.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSliverNavigationBar-class.html"},{"title":"CupertinoSwitch","desc":"An iOS-style switch. Used to toggle the on/off state of a single setting.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSwitch-class.html"},{"title":"CupertinoTabBar","desc":"An iOS-style bottom tab bar. Typically used with CupertinoTabScaffold.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoTabBar-class.html"},{"title":"CupertinoTabScaffold","desc":"Tabbed iOS app structure. Positions a tab bar on top of tabs of content.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoTabScaffold-class.html"},{"title":"CupertinoTabView","desc":"Root content of a tab that supports parallel navigation between tabs. Typically used with CupertinoTabScaffold.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoTabView-class.html"},{"title":"CupertinoTextField","desc":"An iOS-style text field.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoTextField-class.html"},{"title":"CupertinoTimerPicker","desc":"An iOS-style countdown timer picker.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoTimerPicker-class.html"}]},{"title":"Input","desc":"Take user input in addition to input widgets in Material Components and Cupertino.","url":"/docs/development/ui/widgets/input","list":[{"title":"Autocomplete","desc":"A widget for helping the user make a selection by entering some text and choosing from among a list of options.","url":"https://api.flutter.dev/flutter/material/Autocomplete-class.html"},{"title":"Form","desc":"An optional container for grouping together multiple form field widgets (e.g. TextField widgets).","url":"https://api.flutter.dev/flutter/widgets/Form-class.html"},{"title":"FormField","desc":"A single form field. This widget maintains the current state of the form field, so that updates and validation errors are visually reflected in the UI.","url":"https://api.flutter.dev/flutter/widgets/FormField-class.html"},{"title":"RawKeyboardListener","desc":"A widget that calls a callback whenever the user presses or releases a key on a keyboard.","url":"https://api.flutter.dev/flutter/widgets/RawKeyboardListener-class.html"}]},{"title":"Interaction Models","desc":"Respond to touch events and route users to different views.","url":"/docs/development/ui/widgets/interaction","list":[{"title":"Touch interactions","list":[{"title":"AbsorbPointer","desc":"A widget that absorbs pointers during hit testing. When absorbing is true, this widget prevents its subtree from receiving pointer events by terminating hit testing at itself. It still consumes space during layout and paints its child as usual. It just prevents its children from being the target of located events, because it returns true from RenderBox.hitTest.","url":"https://api.flutter.dev/flutter/widgets/AbsorbPointer-class.html"},{"title":"Dismissible","desc":"A widget that can be dismissed by dragging in the indicated direction. Dragging or flinging this widget in the DismissDirection causes the child to slide out of view. Following the slide animation, if resizeDuration is non-null, the Dismissible widget animates its height (or width, whichever is perpendicular to the dismiss direction) to zero over the resizeDuration.","url":"https://api.flutter.dev/flutter/widgets/Dismissible-class.html"},{"title":"DragTarget","desc":"A widget that receives data when a Draggable widget is dropped. When a draggable is dragged on top of a drag target, the drag target is asked whether it will accept the data the draggable is carrying. If the user does drop the draggable on top of the drag target (and the drag target has indicated that it will accept the draggable's data), then the drag target is asked to accept the draggable's data.","url":"https://api.flutter.dev/flutter/widgets/DragTarget-class.html"},{"title":"Draggable","desc":"A widget that can be dragged from to a DragTarget. When a draggable widget recognizes the start of a drag gesture, it displays a feedback widget that tracks the user's finger across the screen. If the user lifts their finger while on top of a DragTarget, that target is given the opportunity to accept the data carried by the draggable.","url":"https://api.flutter.dev/flutter/widgets/Draggable-class.html"},{"title":"DraggableScrollableSheet","desc":"A container for a Scrollable that responds to drag gestures by resizing the scrollable until a limit is reached, and then scrolling.","url":"https://api.flutter.dev/flutter/widgets/DraggableScrollableSheet-class.html"},{"title":"GestureDetector","desc":"A widget that detects gestures. Attempts to recognize gestures that correspond to its non-null callbacks. If this widget has a child, it defers to that child for its sizing behavior. If it does not have a child, it grows to fit the parent instead.","url":"https://api.flutter.dev/flutter/widgets/GestureDetector-class.html"},{"title":"IgnorePointer","desc":"A widget that is invisible during hit testing. When ignoring is true, this widget (and its subtree) is invisible to hit testing. It still consumes space during layout and paints its child as usual. It just cannot be the target of located events, because it returns false from RenderBox.hitTest.","url":"https://api.flutter.dev/flutter/widgets/IgnorePointer-class.html"},{"title":"InteractiveViewer","desc":"A widget that enables pan and zoom interactions with its child.","url":"https://api.flutter.dev/flutter/widgets/InteractiveViewer-class.html"},{"title":"LongPressDraggable","desc":"Makes its child draggable starting from long press.","url":"https://api.flutter.dev/flutter/widgets/LongPressDraggable-class.html"},{"title":"Scrollable","desc":"Scrollable implements the interaction model for a scrollable widget, including gesture recognition, but does not have an opinion about how the viewport, which actually displays the children, is constructed.","url":"https://api.flutter.dev/flutter/widgets/Scrollable-class.html"}]},{"title":"Routing","list":[{"title":"Hero","desc":"A widget that marks its child as being a candidate for hero animations.","url":"https://api.flutter.dev/flutter/widgets/Hero-class.html"},{"title":"Navigator","desc":"A widget that manages a set of child widgets with a stack discipline. Many apps have a navigator near the top of their widget hierarchy to display their logical history using an Overlay with the most recently visited pages visually on top of the older pages. Using this pattern lets the navigator visually transition from one page to another by moving the widgets around in the overlay. Similarly, the navigator can be used to show a dialog by positioning the dialog widget above the current page.","url":"https://api.flutter.dev/flutter/widgets/Navigator-class.html"}]}]},{"title":"Layout","desc":"Arrange other widgets columns, rows, grids, and many other layouts.","url":"/docs/development/ui/widgets/layout","list":[{"title":"Single-child layout widgets","list":[{"title":"Align","desc":"A widget that aligns its child within itself and optionally sizes itself based on the child's size.","url":"https://api.flutter.dev/flutter/widgets/Align-class.html"},{"title":"AspectRatio","desc":"A widget that attempts to size the child to a specific aspect ratio.","url":"https://api.flutter.dev/flutter/widgets/AspectRatio-class.html"},{"title":"Baseline","desc":"A widget that positions its child according to the child's baseline.","url":"https://api.flutter.dev/flutter/widgets/Baseline-class.html"},{"title":"Center","desc":"A widget that centers its child within itself.","url":"https://api.flutter.dev/flutter/widgets/Center-class.html"},{"title":"ConstrainedBox","desc":"A widget that imposes additional constraints on its child.","url":"https://api.flutter.dev/flutter/widgets/ConstrainedBox-class.html"},{"title":"Container","desc":"A convenience widget that combines common painting, positioning, and sizing widgets.","url":"https://api.flutter.dev/flutter/widgets/Container-class.html"},{"title":"CustomSingleChildLayout","desc":"A widget that defers the layout of its single child to a delegate.","url":"https://api.flutter.dev/flutter/widgets/CustomSingleChildLayout-class.html"},{"title":"Expanded","desc":"A widget that expands a child of a Row, Column, or Flex.","url":"https://api.flutter.dev/flutter/widgets/Expanded-class.html"},{"title":"FittedBox","desc":"Scales and positions its child within itself according to fit.","url":"https://api.flutter.dev/flutter/widgets/FittedBox-class.html"},{"title":"FractionallySizedBox","desc":"A widget that sizes its child to a fraction of the total available space. For more details about the layout algorithm, see RenderFractionallySizedOverflowBox.","url":"https://api.flutter.dev/flutter/widgets/FractionallySizedBox-class.html"},{"title":"IntrinsicHeight","desc":"A widget that sizes its child to the child's intrinsic height.","url":"https://api.flutter.dev/flutter/widgets/IntrinsicHeight-class.html"},{"title":"IntrinsicWidth","desc":"A widget that sizes its child to the child's intrinsic width.","url":"https://api.flutter.dev/flutter/widgets/IntrinsicWidth-class.html"},{"title":"LimitedBox","desc":"A box that limits its size only when it's unconstrained.","url":"https://api.flutter.dev/flutter/widgets/LimitedBox-class.html"},{"title":"Offstage","desc":"A widget that lays the child out as if it was in the tree, but without painting anything, without making the child available for hit testing, and without taking any room in the parent.","url":"https://api.flutter.dev/flutter/widgets/Offstage-class.html"},{"title":"OverflowBox","desc":"A widget that imposes different constraints on its child than it gets from its parent, possibly allowing the child to overflow the parent.","url":"https://api.flutter.dev/flutter/widgets/OverflowBox-class.html"},{"title":"Padding","desc":"A widget that insets its child by the given padding.","url":"https://api.flutter.dev/flutter/widgets/Padding-class.html"},{"title":"SizedBox","desc":"A box with a specified size. If given a child, this widget forces its child to have a specific width and/or height (assuming values are permitted by this widget's parent). If either the width or height is null, this widget will size itself to match the child's size in that dimension.","url":"https://api.flutter.dev/flutter/widgets/SizedBox-class.html"},{"title":"SizedOverflowBox","desc":"A widget that is a specific size but passes its original constraints through to its child, which will probably overflow.","url":"https://api.flutter.dev/flutter/widgets/SizedOverflowBox-class.html"},{"title":"Transform","desc":"A widget that applies a transformation before painting its child.","url":"https://api.flutter.dev/flutter/widgets/Transform-class.html"}]},{"title":"Multi-child layout widgets","list":[{"title":"Column","desc":"Layout a list of child widgets in the vertical direction.","url":"https://api.flutter.dev/flutter/widgets/Column-class.html"},{"title":"CustomMultiChildLayout","desc":"A widget that uses a delegate to size and position multiple children.","url":"https://api.flutter.dev/flutter/widgets/CustomMultiChildLayout-class.html"},{"title":"Flow","desc":"A widget that implements the flow layout algorithm.","url":"https://api.flutter.dev/flutter/widgets/Flow-class.html"},{"title":"GridView","desc":"A grid list consists of a repeated pattern of cells arrayed in a vertical and horizontal layout. The GridView widget implements this component.","url":"https://api.flutter.dev/flutter/widgets/GridView-class.html"},{"title":"IndexedStack","desc":"A Stack that shows a single child from a list of children.","url":"https://api.flutter.dev/flutter/widgets/IndexedStack-class.html"},{"title":"LayoutBuilder","desc":"Builds a widget tree that can depend on the parent widget's size.","url":"https://api.flutter.dev/flutter/widgets/LayoutBuilder-class.html"},{"title":"ListBody","desc":"A widget that arranges its children sequentially along a given axis, forcing them to the dimension of the parent in the other axis.","url":"https://api.flutter.dev/flutter/widgets/ListBody-class.html"},{"title":"ListView","desc":"A scrollable, linear list of widgets. ListView is the most commonly used scrolling widget. It displays its children one after another in the scroll direction. In the cross axis, the children are required to fill the ListView.","url":"https://api.flutter.dev/flutter/widgets/ListView-class.html"},{"title":"Row","desc":"Layout a list of child widgets in the horizontal direction.","url":"https://api.flutter.dev/flutter/widgets/Row-class.html"},{"title":"Stack","desc":"This class is useful if you want to overlap several children in a simple way, for example having some text and an image, overlaid with a gradient and a button attached to the bottom.","url":"https://api.flutter.dev/flutter/widgets/Stack-class.html"},{"title":"Table","desc":"A widget that uses the table layout algorithm for its children.","url":"https://api.flutter.dev/flutter/widgets/Table-class.html"},{"title":"Wrap","desc":"A widget that displays its children in multiple horizontal or vertical runs.","url":"https://api.flutter.dev/flutter/widgets/Wrap-class.html"}]},{"title":"Sliver widgets","list":[{"title":"CupertinoSliverNavigationBar","desc":"An iOS-styled navigation bar with iOS-11-style large titles using slivers.","url":"https://api.flutter.dev/flutter/cupertino/CupertinoSliverNavigationBar-class.html"},{"title":"CustomScrollView","desc":"A ScrollView that creates custom scroll effects using slivers.","url":"https://api.flutter.dev/flutter/widgets/CustomScrollView-class.html"},{"title":"SliverAppBar","desc":"A material design app bar that integrates with a CustomScrollView.","url":"https://api.flutter.dev/flutter/material/SliverAppBar-class.html"},{"title":"SliverChildBuilderDelegate","desc":"A delegate that supplies children for slivers using a builder callback.","url":"https://api.flutter.dev/flutter/widgets/SliverChildBuilderDelegate-class.html"},{"title":"SliverChildListDelegate","desc":"A delegate that supplies children for slivers using an explicit list.","url":"https://api.flutter.dev/flutter/widgets/SliverChildListDelegate-class.html"},{"title":"SliverFixedExtentList","desc":"A sliver that places multiple box children with the same main axis extent in a linear array.","url":"https://api.flutter.dev/flutter/widgets/SliverFixedExtentList-class.html"},{"title":"SliverGrid","desc":"A sliver that places multiple box children in a two dimensional arrangement.","url":"https://api.flutter.dev/flutter/widgets/SliverGrid-class.html"},{"title":"SliverList","desc":"A sliver that places multiple box children in a linear array along the main axis.","url":"https://api.flutter.dev/flutter/widgets/SliverList-class.html"},{"title":"SliverPadding","desc":"A sliver that applies padding on each side of another sliver.","url":"https://api.flutter.dev/flutter/widgets/SliverPadding-class.html"},{"title":"SliverPersistentHeader","desc":"A sliver whose size varies when the sliver is scrolled to the edge of the viewport opposite the sliver's GrowthDirection.","url":"https://api.flutter.dev/flutter/widgets/SliverPersistentHeader-class.html"},{"title":"SliverToBoxAdapter","desc":"A sliver that contains a single box widget.","url":"https://api.flutter.dev/flutter/widgets/SliverToBoxAdapter-class.html"}]}]},{"title":"Material Components","desc":"Visual, behavioral, and motion-rich widgets implementing the Material Design guidelines.","url":"/docs/development/ui/widgets/material","list":[{"title":"App structure and navigation","list":[{"title":"Appbar","desc":"A Material Design app bar. An app bar consists of a toolbar and potentially other widgets, such as a TabBar and a FlexibleSpaceBar.","url":"https://api.flutter.dev/flutter/material/AppBar-class.html"},{"title":"BottomNavigationBar","desc":"Bottom navigation bars make it easy to explore and switch between top-level views in a single tap. The BottomNavigationBar widget implements this component.","url":"https://api.flutter.dev/flutter/material/BottomNavigationBar-class.html"},{"title":"Drawer","desc":"A Material Design panel that slides in horizontally from the edge of a Scaffold to show navigation links in an application.","url":"https://api.flutter.dev/flutter/material/Drawer-class.html"},{"title":"MaterialApp","desc":"A convenience widget that wraps a number of widgets that are commonly required for applications implementing Material Design.","url":"https://api.flutter.dev/flutter/material/MaterialApp-class.html"},{"title":"Scaffold","desc":"Implements the basic Material Design visual layout structure. This class provides APIs for showing drawers, snack bars, and bottom sheets.","url":"https://api.flutter.dev/flutter/material/Scaffold-class.html"},{"title":"SliverAppBar","desc":"A material design app bar that integrates with a CustomScrollView.","url":"https://api.flutter.dev/flutter/material/SliverAppBar-class.html"},{"title":"TabBar","desc":"A Material Design widget that displays a horizontal row of tabs.","url":"https://api.flutter.dev/flutter/material/TabBar-class.html"},{"title":"TabBarView","desc":"A page view that displays the widget which corresponds to the currently selected tab. Typically used in conjunction with a TabBar.","url":"https://api.flutter.dev/flutter/material/TabBarView-class.html"},{"title":"TabController","desc":"Coordinates tab selection between a TabBar and a TabBarView.","url":"https://api.flutter.dev/flutter/material/TabController-class.html"},{"title":"TabPageSelector","desc":"Displays a row of small circular indicators, one per tab. The selected tab's indicator is highlighted. Often used in conjunction with a TabBarView.","url":"https://api.flutter.dev/flutter/material/TabPageSelector-class.html"},{"title":"WidgetsApp","desc":"A convenience class that wraps a number of widgets that are commonly required for an application.","url":"https://api.flutter.dev/flutter/widgets/WidgetsApp-class.html"}]},{"title":"Buttons","list":[{"title":"DropdownButton","desc":"Shows the currently selected item and an arrow that opens a menu for selecting another item.","url":"https://api.flutter.dev/flutter/material/DropdownButton-class.html"},{"title":"ElevatedButton","desc":"A Material Design elevated button. A filled button whose material elevates when pressed.","url":"https://api.flutter.dev/flutter/material/ElevatedButton-class.html"},{"title":"FloatingActionButton","desc":"A floating action button is a circular icon button that hovers over content to promote a primary action in the application. Floating action buttons are most commonly used in the Scaffold.floatingActionButton field.","url":"https://api.flutter.dev/flutter/material/FloatingActionButton-class.html"},{"title":"IconButton","desc":"An icon button is a picture printed on a Material widget that reacts to touches by filling with color (ink).","url":"https://api.flutter.dev/flutter/material/IconButton-class.html"},{"title":"OutlinedButton","desc":"A Material Design outlined button, essentially a TextButton with an outlined border.","url":"https://api.flutter.dev/flutter/material/OutlinedButton-class.html"},{"title":"PopupMenuButton","desc":"Displays a menu when pressed and calls onSelected when the menu is dismissed because an item was selected.","url":"https://api.flutter.dev/flutter/material/PopupMenuButton-class.html"},{"title":"TextButton","desc":"A Material Design text button. A simple flat button without a border outline.","url":"https://api.flutter.dev/flutter/material/TextButton-class.html"}]},{"title":"Input and selections","list":[{"title":"Checkbox","desc":"Checkboxes allow the user to select multiple options from a set. The Checkbox widget implements this component.","url":"https://api.flutter.dev/flutter/material/Checkbox-class.html"},{"title":"Date & Time Pickers","desc":"Date pickers use a dialog window to select a single date on mobile. Time pickers use a dialog to select a single time (in the hours:minutes format) on mobile.","url":"https://api.flutter.dev/flutter/material/showDatePicker.html"},{"title":"Radio","desc":"Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive selection if you think that the user needs to see all available options side-by-side. ","url":"https://api.flutter.dev/flutter/material/Radio-class.html"},{"title":"Slider","desc":"Sliders let users select from a range of values by moving the slider thumb. ","url":"https://api.flutter.dev/flutter/material/Slider-class.html"},{"title":"Switch","desc":"On/off switches toggle the state of a single settings option. The Switch widget implements this component.","url":"https://api.flutter.dev/flutter/material/Switch-class.html"},{"title":"TextField","desc":"Touching a text field places the cursor and displays the keyboard. The TextField widget implements this component.","url":"https://api.flutter.dev/flutter/material/TextField-class.html"}]},{"title":"Dialogs, alerts, and panels","list":[{"title":"AlertDialog","desc":"Alerts are urgent interruptions requiring acknowledgement that inform the user about a situation. The AlertDialog widget implements this component.","url":"https://api.flutter.dev/flutter/material/AlertDialog-class.html"},{"title":"BottomSheet","desc":"Bottom sheets slide up from the bottom of the screen to reveal more content. You can call showBottomSheet() to implement a persistent bottom sheet or showModalBottomSheet() to implement a modal bottom sheet.","url":"https://api.flutter.dev/flutter/material/BottomSheet-class.html"},{"title":"ExpansionPanel","desc":"Expansion panels contain creation flows and allow lightweight editing of an element. The ExpansionPanel widget implements this component.","url":"https://api.flutter.dev/flutter/material/ExpansionPanel-class.html"},{"title":"SimpleDialog","desc":"Simple dialogs can provide additional details or actions about a list item. For example they can display avatars icons clarifying subtext or orthogonal actions (such as adding an account). ","url":"https://api.flutter.dev/flutter/material/SimpleDialog-class.html"},{"title":"SnackBar","desc":"A lightweight message with an optional action which briefly displays at the bottom of the screen.","url":"https://api.flutter.dev/flutter/material/SnackBar-class.html"}]},{"title":"Information displays","list":[{"title":"Card","desc":"A Material Design card. A card has slightly rounded corners and a shadow.","url":"https://api.flutter.dev/flutter/material/Card-class.html"},{"title":"Chip","desc":"A Material Design chip. Chips represent complex entities in small blocks, such as a contact.","url":"https://api.flutter.dev/flutter/material/Chip-class.html"},{"title":"CircularProgressIndicator","desc":"A material design circular progress indicator, which spins to indicate that the application is busy.","url":"https://api.flutter.dev/flutter/material/CircularProgressIndicator-class.html"},{"title":"DataTable","desc":"Data tables display sets of raw data. They usually appear in desktop enterprise products. The DataTable widget implements this component.","url":"https://api.flutter.dev/flutter/material/DataTable-class.html"},{"title":"GridView","desc":"A grid list consists of a repeated pattern of cells arrayed in a vertical and horizontal layout. The GridView widget implements this component.","url":"https://api.flutter.dev/flutter/widgets/GridView-class.html"},{"title":"Icon","desc":"A Material Design icon.","url":"https://api.flutter.dev/flutter/widgets/Icon-class.html"},{"title":"Image","desc":"A widget that displays an image.","url":"https://api.flutter.dev/flutter/widgets/Image-class.html"},{"title":"LinearProgressIndicator","desc":"A material design linear progress indicator, also known as a progress bar.","url":"https://api.flutter.dev/flutter/material/LinearProgressIndicator-class.html"},{"title":"Tooltip","desc":"Tooltips provide text labels that help explain the function of a button or other user interface action. Wrap the button in a Tooltip widget to show a label when the widget long pressed (or when the user takes some other appropriate action).","url":"https://api.flutter.dev/flutter/material/Tooltip-class.html"}]},{"title":"Layout","list":[{"title":"Divider","desc":"A one logical pixel thick horizontal line, with padding on either side.","url":"https://api.flutter.dev/flutter/material/Divider-class.html"},{"title":"ListTile","desc":"A single fixed-height row that typically contains some text as well as a leading or trailing icon.","url":"https://api.flutter.dev/flutter/material/ListTile-class.html"},{"title":"Stepper","desc":"A Material Design stepper widget that displays progress through a sequence of steps.","url":"https://api.flutter.dev/flutter/material/Stepper-class.html"}]}]},{"title":"Painting and effects","desc":"These widgets apply visual effects to the children without changing their layout, size, or position.","url":"/docs/development/ui/widgets/painting","list":[{"title":"BackdropFilter","desc":"A widget that applies a filter to the existing painted content and then paints a child. This effect is relatively expensive, especially if the filter is non-local, such as a blur.","url":"https://api.flutter.dev/flutter/widgets/BackdropFilter-class.html"},{"title":"ClipOval","desc":"A widget that clips its child using an oval.","url":"https://api.flutter.dev/flutter/widgets/ClipOval-class.html"},{"title":"ClipPath","desc":"A widget that clips its child using a path.","url":"https://api.flutter.dev/flutter/widgets/ClipPath-class.html"},{"title":"ClipRect","desc":"A widget that clips its child using a rectangle.","url":"https://api.flutter.dev/flutter/widgets/ClipRect-class.html"},{"title":"CustomPaint","desc":"A widget that provides a canvas on which to draw during the paint phase.","url":"https://api.flutter.dev/flutter/widgets/CustomPaint-class.html"},{"title":"DecoratedBox","desc":"A widget that paints a Decoration either before or after its child paints.","url":"https://api.flutter.dev/flutter/widgets/DecoratedBox-class.html"},{"title":"FractionalTranslation","desc":"A widget that applies a translation expressed as a fraction of the box's size before painting its child.","url":"https://api.flutter.dev/flutter/widgets/FractionalTranslation-class.html"},{"title":"Opacity","desc":"A widget that makes its child partially transparent.","url":"https://api.flutter.dev/flutter/widgets/Opacity-class.html"},{"title":"RotatedBox","desc":"A widget that rotates its child by a integral number of quarter turns.","url":"https://api.flutter.dev/flutter/widgets/RotatedBox-class.html"},{"title":"Transform","desc":"A widget that applies a transformation before painting its child.","url":"https://api.flutter.dev/flutter/widgets/Transform-class.html"}]},{"title":"Scrolling","desc":"Scroll multiple widgets as children of the parent.","url":"/docs/development/ui/widgets/scrolling","list":[{"title":"CustomScrollView","desc":"A ScrollView that creates custom scroll effects using slivers.","url":"https://api.flutter.dev/flutter/widgets/CustomScrollView-class.html"},{"title":"DraggableScrollableSheet","desc":"A container for a Scrollable that responds to drag gestures by resizing the scrollable until a limit is reached, and then scrolling.","url":"https://api.flutter.dev/flutter/widgets/DraggableScrollableSheet-class.html"},{"title":"GridView","desc":"A grid list consists of a repeated pattern of cells arrayed in a vertical and horizontal layout. The GridView widget implements this component.","url":"https://api.flutter.dev/flutter/widgets/GridView-class.html"},{"title":"ListView","desc":"A scrollable, linear list of widgets. ListView is the most commonly used scrolling widget. It displays its children one after another in the scroll direction. In the cross axis, the children are required to fill the ListView.","url":"https://api.flutter.dev/flutter/widgets/ListView-class.html"},{"title":"NestedScrollView","desc":"A scrolling view inside of which can be nested other scrolling views, with their scroll positions being intrinsically linked.","url":"https://api.flutter.dev/flutter/widgets/NestedScrollView-class.html"},{"title":"NotificationListener","desc":"A widget that listens for Notifications bubbling up the tree.","url":"https://api.flutter.dev/flutter/widgets/NotificationListener-class.html"},{"title":"PageView","desc":"A scrollable list that works page by page.","url":"https://api.flutter.dev/flutter/widgets/PageView-class.html"},{"title":"RefreshIndicator","desc":"A Material Design pull-to-refresh wrapper for scrollables.","url":"https://api.flutter.dev/flutter/material/RefreshIndicator-class.html"},{"title":"ReorderableListView","desc":"A list whose items the user can interactively reorder by dragging.","url":"https://api.flutter.dev/flutter/material/ReorderableListView-class.html"},{"title":"ScrollConfiguration","desc":"Controls how Scrollable widgets behave in a subtree.","url":"https://api.flutter.dev/flutter/widgets/ScrollConfiguration-class.html"},{"title":"Scrollable","desc":"Scrollable implements the interaction model for a scrollable widget, including gesture recognition, but does not have an opinion about how the viewport, which actually displays the children, is constructed.","url":"https://api.flutter.dev/flutter/widgets/Scrollable-class.html"},{"title":"Scrollbar","desc":"A Material Design scrollbar. A scrollbar indicates which portion of a Scrollable widget is actually visible.","url":"https://api.flutter.dev/flutter/material/Scrollbar-class.html"},{"title":"SingleChildScrollView","desc":"A box in which a single widget can be scrolled. This widget is useful when you have a single box that will normally be entirely visible, for example a clock face in a time picker, but you need to make sure it can be scrolled if the container gets too small in one axis (the scroll direction).","url":"https://api.flutter.dev/flutter/widgets/SingleChildScrollView-class.html"}]},{"title":"Styling","desc":"Manage the theme of your app, makes your app responsive to screen sizes, or add padding.","url":"/docs/development/ui/widgets/styling","list":[{"title":"MediaQuery","desc":"Establishes a subtree in which media queries resolve to the given data.","url":"https://api.flutter.dev/flutter/widgets/MediaQuery-class.html"},{"title":"Padding","desc":"A widget that insets its child by the given padding.","url":"https://api.flutter.dev/flutter/widgets/Padding-class.html"},{"title":"Theme","desc":"Applies a theme to descendant widgets. A theme describes the colors and typographic choices of an application.","url":"https://api.flutter.dev/flutter/material/Theme-class.html"}]},{"title":"Text","desc":"Display and style text.","url":"/docs/development/ui/widgets/text","list":[{"title":"DefaultTextStyle","desc":"The text style to apply to descendant Text widgets without explicit style.","url":"https://api.flutter.dev/flutter/widgets/DefaultTextStyle-class.html"},{"title":"RichText","desc":"The RichText widget displays text that uses multiple different styles. The text to display is described using a tree of TextSpan objects, each of which has an associated style that is used for that subtree. The text might break across multiple lines or might all be displayed on the same line depending on the layout constraints.","url":"https://api.flutter.dev/flutter/widgets/RichText-class.html"},{"title":"Text","desc":"A run of text with a single style.","url":"https://api.flutter.dev/flutter/widgets/Text-class.html"}]}],"total":195}; 4 | } -------------------------------------------------------------------------------- /app/lib/model/IconFontIcons.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/widgets.dart'; 2 | 3 | class IconFontIcons { 4 | static const IconData iconRotateRight = IconData(0xe9b3,fontFamily:'IconFontIcons'); 5 | static const IconData iconHeartFill = IconData(0xe8b3,fontFamily:'IconFontIcons'); 6 | static const IconData iconMinusSquare = IconData(0xe7b3,fontFamily:'IconFontIcons'); 7 | static const IconData iconRotateLeft = IconData(0xe9b2,fontFamily:'IconFontIcons'); 8 | static const IconData iconYUANCircleFill = IconData(0xe8b2,fontFamily:'IconFontIcons'); 9 | static const IconData iconDetail = IconData(0xe7b2,fontFamily:'IconFontIcons'); 10 | static const IconData iconSubnode = IconData(0xe9b1,fontFamily:'IconFontIcons'); 11 | static const IconData iconTrademarkCircleFil = IconData(0xe8b1,fontFamily:'IconFontIcons'); 12 | static const IconData iconCodelibrary = IconData(0xe7b1,fontFamily:'IconFontIcons'); 13 | static const IconData iconMergeCells = IconData(0xe9b0,fontFamily:'IconFontIcons'); 14 | static const IconData iconTimeCircleFill = IconData(0xe8b0,fontFamily:'IconFontIcons'); 15 | static const IconData iconControl = IconData(0xe7b0,fontFamily:'IconFontIcons'); 16 | static const IconData iconDeletecolumn = IconData(0xe9af,fontFamily:'IconFontIcons'); 17 | static const IconData iconWarningCircleFill = IconData(0xe8af,fontFamily:'IconFontIcons'); 18 | static const IconData iconPlaySquare = IconData(0xe7af,fontFamily:'IconFontIcons'); 19 | static const IconData iconExpand = IconData(0xe9ae,fontFamily:'IconFontIcons'); 20 | static const IconData iconStopFill = IconData(0xe8ae,fontFamily:'IconFontIcons'); 21 | static const IconData iconLeftSquare = IconData(0xe7ae,fontFamily:'IconFontIcons'); 22 | static const IconData iconCollapse = IconData(0xe9ad,fontFamily:'IconFontIcons'); 23 | static const IconData iconSmileFill = IconData(0xe8ad,fontFamily:'IconFontIcons'); 24 | static const IconData iconLayout = IconData(0xe7ad,fontFamily:'IconFontIcons'); 25 | static const IconData iconClear = IconData(0xe9ac,fontFamily:'IconFontIcons'); 26 | static const IconData iconPoundCircleFill = IconData(0xe8ac,fontFamily:'IconFontIcons'); 27 | static const IconData iconDownSquare = IconData(0xe7ac,fontFamily:'IconFontIcons'); 28 | static const IconData iconEyeClose = IconData(0xe9ab,fontFamily:'IconFontIcons'); 29 | static const IconData iconPlayCircleFill = IconData(0xe8ab,fontFamily:'IconFontIcons'); 30 | static const IconData iconCloseSquare = IconData(0xe7ab,fontFamily:'IconFontIcons'); 31 | static const IconData iconEyecloseFill = IconData(0xe9aa,fontFamily:'IconFontIcons'); 32 | static const IconData iconMehFill = IconData(0xe8aa,fontFamily:'IconFontIcons'); 33 | static const IconData iconAppstore = IconData(0xe7aa,fontFamily:'IconFontIcons'); 34 | static const IconData iconPlus = IconData(0xe9a9,fontFamily:'IconFontIcons'); 35 | static const IconData iconPoweroffCircleFill = IconData(0xe8a9,fontFamily:'IconFontIcons'); 36 | static const IconData iconImport = IconData(0xe7a9,fontFamily:'IconFontIcons'); 37 | static const IconData iconWoman = IconData(0xe9a8,fontFamily:'IconFontIcons'); 38 | static const IconData iconDollarCircleFill = IconData(0xe8a8,fontFamily:'IconFontIcons'); 39 | static const IconData iconSave = IconData(0xe7a8,fontFamily:'IconFontIcons'); 40 | static const IconData iconSwapLeft = IconData(0xe9a7,fontFamily:'IconFontIcons'); 41 | static const IconData iconCompassFill = IconData(0xe8a7,fontFamily:'IconFontIcons'); 42 | static const IconData iconExport = IconData(0xe7a7,fontFamily:'IconFontIcons'); 43 | static const IconData iconSwapRight = IconData(0xe9a6,fontFamily:'IconFontIcons'); 44 | static const IconData iconCICircleFill = IconData(0xe8a6,fontFamily:'IconFontIcons'); 45 | static const IconData iconEditSquare = IconData(0xe7a6,fontFamily:'IconFontIcons'); 46 | static const IconData iconStepForward = IconData(0xe9a5,fontFamily:'IconFontIcons'); 47 | static const IconData iconCopyrightCircleFil = IconData(0xe8a5,fontFamily:'IconFontIcons'); 48 | static const IconData iconLocation = IconData(0xe7a5,fontFamily:'IconFontIcons'); 49 | static const IconData iconStepBackward = IconData(0xe9a4,fontFamily:'IconFontIcons'); 50 | static const IconData iconFrownFill = IconData(0xe8a4,fontFamily:'IconFontIcons'); 51 | static const IconData iconEye = IconData(0xe7a4,fontFamily:'IconFontIcons'); 52 | static const IconData iconLogin = IconData(0xe9a3,fontFamily:'IconFontIcons'); 53 | static const IconData iconEUROCircleFill = IconData(0xe8a3,fontFamily:'IconFontIcons'); 54 | static const IconData iconSetting = IconData(0xe7a3,fontFamily:'IconFontIcons'); 55 | static const IconData iconRetweet = IconData(0xe9a2,fontFamily:'IconFontIcons'); 56 | static const IconData iconQuestionCircleFill = IconData(0xe8a2,fontFamily:'IconFontIcons'); 57 | static const IconData iconPiechart = IconData(0xe7a2,fontFamily:'IconFontIcons'); 58 | static const IconData iconSearch = IconData(0xe9a1,fontFamily:'IconFontIcons'); 59 | static const IconData iconPlusCircleFill = IconData(0xe8a1,fontFamily:'IconFontIcons'); 60 | static const IconData iconLogout = IconData(0xe7a1,fontFamily:'IconFontIcons'); 61 | static const IconData iconFastForward = IconData(0xe9a0,fontFamily:'IconFontIcons'); 62 | static const IconData iconRightCircleFill = IconData(0xe8a0,fontFamily:'IconFontIcons'); 63 | static const IconData iconPoweroff = IconData(0xe7a0,fontFamily:'IconFontIcons'); 64 | static const IconData iconForward = IconData(0xe99f,fontFamily:'IconFontIcons'); 65 | static const IconData iconUpCircleFill = IconData(0xe89f,fontFamily:'IconFontIcons'); 66 | static const IconData iconIssuesclose = IconData(0xe79f,fontFamily:'IconFontIcons'); 67 | static const IconData iconFastBackward = IconData(0xe99e,fontFamily:'IconFontIcons'); 68 | static const IconData iconInfoCircleFill = IconData(0xe89e,fontFamily:'IconFontIcons'); 69 | static const IconData iconDashboard = IconData(0xe79e,fontFamily:'IconFontIcons'); 70 | static const IconData iconCaretLeft = IconData(0xe99d,fontFamily:'IconFontIcons'); 71 | static const IconData iconCloseCircleFill = IconData(0xe89d,fontFamily:'IconFontIcons'); 72 | static const IconData iconMessage = IconData(0xe79d,fontFamily:'IconFontIcons'); 73 | static const IconData iconCaretRight = IconData(0xe99c,fontFamily:'IconFontIcons'); 74 | static const IconData iconMinusCircleFill = IconData(0xe89c,fontFamily:'IconFontIcons'); 75 | static const IconData iconReloadtime = IconData(0xe79c,fontFamily:'IconFontIcons'); 76 | static const IconData iconCaretUp = IconData(0xe99b,fontFamily:'IconFontIcons'); 77 | static const IconData iconDownCircleFill = IconData(0xe89b,fontFamily:'IconFontIcons'); 78 | static const IconData iconReload = IconData(0xe79b,fontFamily:'IconFontIcons'); 79 | static const IconData iconBackward = IconData(0xe99a,fontFamily:'IconFontIcons'); 80 | static const IconData iconLeftCircleFill = IconData(0xe89a,fontFamily:'IconFontIcons'); 81 | static const IconData iconRedo = IconData(0xe79a,fontFamily:'IconFontIcons'); 82 | static const IconData iconCaretDown = IconData(0xe999,fontFamily:'IconFontIcons'); 83 | static const IconData iconCheckCircleFill = IconData(0xe899,fontFamily:'IconFontIcons'); 84 | static const IconData iconUndo = IconData(0xe799,fontFamily:'IconFontIcons'); 85 | static const IconData iconAppstoreadd = IconData(0xe998,fontFamily:'IconFontIcons'); 86 | static const IconData iconThunderbolt = IconData(0xe898,fontFamily:'IconFontIcons'); 87 | static const IconData iconTransaction = IconData(0xe798,fontFamily:'IconFontIcons'); 88 | static const IconData iconWhatsapp = IconData(0xe997,fontFamily:'IconFontIcons'); 89 | static const IconData iconFire = IconData(0xe897,fontFamily:'IconFontIcons'); 90 | static const IconData iconSync = IconData(0xe797,fontFamily:'IconFontIcons'); 91 | static const IconData iconSwitchuser = IconData(0xe996,fontFamily:'IconFontIcons'); 92 | static const IconData iconStop = IconData(0xe896,fontFamily:'IconFontIcons'); 93 | static const IconData iconWarningCircle = IconData(0xe796,fontFamily:'IconFontIcons'); 94 | static const IconData iconVideocameraadd = IconData(0xe995,fontFamily:'IconFontIcons'); 95 | static const IconData iconGift = IconData(0xe895,fontFamily:'IconFontIcons'); 96 | static const IconData iconUpCircle = IconData(0xe795,fontFamily:'IconFontIcons'); 97 | static const IconData iconShortcutFill = IconData(0xe994,fontFamily:'IconFontIcons'); 98 | static const IconData iconDesktop = IconData(0xe894,fontFamily:'IconFontIcons'); 99 | static const IconData iconYUAN = IconData(0xe794,fontFamily:'IconFontIcons'); 100 | static const IconData iconVerified = IconData(0xe993,fontFamily:'IconFontIcons'); 101 | static const IconData iconDrag = IconData(0xe893,fontFamily:'IconFontIcons'); 102 | static const IconData iconEarth = IconData(0xe793,fontFamily:'IconFontIcons'); 103 | static const IconData iconSignalFill = IconData(0xe992,fontFamily:'IconFontIcons'); 104 | static const IconData iconCrown = IconData(0xe892,fontFamily:'IconFontIcons'); 105 | static const IconData iconTimeout = IconData(0xe792,fontFamily:'IconFontIcons'); 106 | static const IconData iconComment = IconData(0xe991,fontFamily:'IconFontIcons'); 107 | static const IconData iconBgColors = IconData(0xe891,fontFamily:'IconFontIcons'); 108 | static const IconData iconTimeCircle = IconData(0xe791,fontFamily:'IconFontIcons'); 109 | static const IconData iconAudiostatic = IconData(0xe990,fontFamily:'IconFontIcons'); 110 | static const IconData iconPause = IconData(0xe890,fontFamily:'IconFontIcons'); 111 | static const IconData iconTrademark = IconData(0xe790,fontFamily:'IconFontIcons'); 112 | static const IconData iconBug = IconData(0xe98f,fontFamily:'IconFontIcons'); 113 | static const IconData iconSmallDash = IconData(0xe88f,fontFamily:'IconFontIcons'); 114 | static const IconData iconSmile = IconData(0xe78f,fontFamily:'IconFontIcons'); 115 | static const IconData iconBugFill = IconData(0xe98e,fontFamily:'IconFontIcons'); 116 | static const IconData iconRollback = IconData(0xe88e,fontFamily:'IconFontIcons'); 117 | static const IconData iconRightCircle = IconData(0xe78e,fontFamily:'IconFontIcons'); 118 | static const IconData iconRobotFill = IconData(0xe98d,fontFamily:'IconFontIcons'); 119 | static const IconData iconQuestion = IconData(0xe88d,fontFamily:'IconFontIcons'); 120 | static const IconData iconPound = IconData(0xe78d,fontFamily:'IconFontIcons'); 121 | static const IconData iconZoomin = IconData(0xe98c,fontFamily:'IconFontIcons'); 122 | static const IconData iconMinus = IconData(0xe88c,fontFamily:'IconFontIcons'); 123 | static const IconData iconQuestionCircle = IconData(0xe78c,fontFamily:'IconFontIcons'); 124 | static const IconData iconRobot = IconData(0xe98b,fontFamily:'IconFontIcons'); 125 | static const IconData iconLine = IconData(0xe88b,fontFamily:'IconFontIcons'); 126 | static const IconData iconPlayCircle = IconData(0xe78b,fontFamily:'IconFontIcons'); 127 | static const IconData iconAudioFill = IconData(0xe98a,fontFamily:'IconFontIcons'); 128 | static const IconData iconEnter = IconData(0xe88a,fontFamily:'IconFontIcons'); 129 | static const IconData iconPlusCircle = IconData(0xe78a,fontFamily:'IconFontIcons'); 130 | static const IconData iconAudio = IconData(0xe989,fontFamily:'IconFontIcons'); 131 | static const IconData iconClose = IconData(0xe889,fontFamily:'IconFontIcons'); 132 | static const IconData iconMeh = IconData(0xe789,fontFamily:'IconFontIcons'); 133 | static const IconData iconApartment = IconData(0xe988,fontFamily:'IconFontIcons'); 134 | static const IconData iconDash = IconData(0xe888,fontFamily:'IconFontIcons'); 135 | static const IconData iconMinusCircle = IconData(0xe788,fontFamily:'IconFontIcons'); 136 | static const IconData iconZoomout = IconData(0xe987,fontFamily:'IconFontIcons'); 137 | static const IconData iconEllipsis = IconData(0xe887,fontFamily:'IconFontIcons'); 138 | static const IconData iconCopyright = IconData(0xe787,fontFamily:'IconFontIcons'); 139 | static const IconData iconZhihuSquareFill = IconData(0xe986,fontFamily:'IconFontIcons'); 140 | static const IconData iconCheck = IconData(0xe886,fontFamily:'IconFontIcons'); 141 | static const IconData iconEURO = IconData(0xe786,fontFamily:'IconFontIcons'); 142 | static const IconData iconWeiboSquareFill = IconData(0xe985,fontFamily:'IconFontIcons'); 143 | static const IconData iconColumnWidth = IconData(0xe885,fontFamily:'IconFontIcons'); 144 | static const IconData iconDownCircle = IconData(0xe785,fontFamily:'IconFontIcons'); 145 | static const IconData iconTaobaoSquareFill = IconData(0xe984,fontFamily:'IconFontIcons'); 146 | static const IconData iconCode = IconData(0xe884,fontFamily:'IconFontIcons'); 147 | static const IconData iconLeftCircle = IconData(0xe784,fontFamily:'IconFontIcons'); 148 | static const IconData iconSlackSquareFill = IconData(0xe983,fontFamily:'IconFontIcons'); 149 | static const IconData iconItalic = IconData(0xe883,fontFamily:'IconFontIcons'); 150 | static const IconData iconInfoCircle = IconData(0xe783,fontFamily:'IconFontIcons'); 151 | static const IconData iconSketchSquareFill = IconData(0xe982,fontFamily:'IconFontIcons'); 152 | static const IconData iconNumber = IconData(0xe882,fontFamily:'IconFontIcons'); 153 | static const IconData iconFrown = IconData(0xe782,fontFamily:'IconFontIcons'); 154 | static const IconData iconTwitterSquareFill = IconData(0xe981,fontFamily:'IconFontIcons'); 155 | static const IconData iconUnderline = IconData(0xe881,fontFamily:'IconFontIcons'); 156 | static const IconData iconCloseCircle = IconData(0xe781,fontFamily:'IconFontIcons'); 157 | static const IconData iconRedditSquareFill = IconData(0xe980,fontFamily:'IconFontIcons'); 158 | static const IconData iconStrikethrough = IconData(0xe880,fontFamily:'IconFontIcons'); 159 | static const IconData iconCompass = IconData(0xe780,fontFamily:'IconFontIcons'); 160 | static const IconData iconQQSquareFill = IconData(0xe97f,fontFamily:'IconFontIcons'); 161 | static const IconData iconLineHeight = IconData(0xe87f,fontFamily:'IconFontIcons'); 162 | static const IconData iconDollar = IconData(0xe77f,fontFamily:'IconFontIcons'); 163 | static const IconData iconLinkedinFill = IconData(0xe97e,fontFamily:'IconFontIcons'); 164 | static const IconData iconInfomation = IconData(0xe87e,fontFamily:'IconFontIcons'); 165 | static const IconData iconCI = IconData(0xe77e,fontFamily:'IconFontIcons'); 166 | static const IconData iconMediumSquareFill = IconData(0xe97d,fontFamily:'IconFontIcons'); 167 | static const IconData iconFontSize = IconData(0xe87d,fontFamily:'IconFontIcons'); 168 | static const IconData iconCheckCircle = IconData(0xe77d,fontFamily:'IconFontIcons'); 169 | static const IconData iconIESquareFill = IconData(0xe97c,fontFamily:'IconFontIcons'); 170 | static const IconData iconExclaimination = IconData(0xe87c,fontFamily:'IconFontIcons'); 171 | static const IconData iconInstagramFill = IconData(0xe97b,fontFamily:'IconFontIcons'); 172 | static const IconData iconFontColors = IconData(0xe87b,fontFamily:'IconFontIcons'); 173 | static const IconData iconGoogleSquareFill = IconData(0xe97a,fontFamily:'IconFontIcons'); 174 | static const IconData iconBold = IconData(0xe87a,fontFamily:'IconFontIcons'); 175 | static const IconData iconGoogleplusSquareF = IconData(0xe979,fontFamily:'IconFontIcons'); 176 | static const IconData iconPicLeft = IconData(0xe879,fontFamily:'IconFontIcons'); 177 | static const IconData iconFacebookFill = IconData(0xe978,fontFamily:'IconFontIcons'); 178 | static const IconData iconPicRight = IconData(0xe878,fontFamily:'IconFontIcons'); 179 | static const IconData iconDropboxSquareFill = IconData(0xe977,fontFamily:'IconFontIcons'); 180 | static const IconData iconPicCenter = IconData(0xe877,fontFamily:'IconFontIcons'); 181 | static const IconData iconDribbbleSquareFill = IconData(0xe976,fontFamily:'IconFontIcons'); 182 | static const IconData iconAlignLeft = IconData(0xe876,fontFamily:'IconFontIcons'); 183 | static const IconData iconCodepenSquareFill = IconData(0xe975,fontFamily:'IconFontIcons'); 184 | static const IconData iconAlignCenter = IconData(0xe875,fontFamily:'IconFontIcons'); 185 | static const IconData iconAmazonSquareFill = IconData(0xe974,fontFamily:'IconFontIcons'); 186 | static const IconData iconAlignRight = IconData(0xe874,fontFamily:'IconFontIcons'); 187 | static const IconData iconBehanceSquareFill = IconData(0xe973,fontFamily:'IconFontIcons'); 188 | static const IconData iconOrderedlist = IconData(0xe873,fontFamily:'IconFontIcons'); 189 | static const IconData iconCodeSandboxSquareF = IconData(0xe972,fontFamily:'IconFontIcons'); 190 | static const IconData iconUnorderedlist = IconData(0xe872,fontFamily:'IconFontIcons'); 191 | static const IconData iconDingtalkSquareFill = IconData(0xe971,fontFamily:'IconFontIcons'); 192 | static const IconData iconMenu = IconData(0xe871,fontFamily:'IconFontIcons'); 193 | static const IconData iconAlipaySquareFill = IconData(0xe970,fontFamily:'IconFontIcons'); 194 | static const IconData iconOutdent = IconData(0xe870,fontFamily:'IconFontIcons'); 195 | static const IconData iconRedditCircleFill = IconData(0xe96f,fontFamily:'IconFontIcons'); 196 | static const IconData iconIndent = IconData(0xe86f,fontFamily:'IconFontIcons'); 197 | static const IconData iconZhihuCircleFill = IconData(0xe96e,fontFamily:'IconFontIcons'); 198 | static const IconData iconRise = IconData(0xe86e,fontFamily:'IconFontIcons'); 199 | static const IconData iconWeiboCircleFill = IconData(0xe96d,fontFamily:'IconFontIcons'); 200 | static const IconData iconStock = IconData(0xe86d,fontFamily:'IconFontIcons'); 201 | static const IconData iconTaobaoCircleFill = IconData(0xe96c,fontFamily:'IconFontIcons'); 202 | static const IconData iconSwap = IconData(0xe86c,fontFamily:'IconFontIcons'); 203 | static const IconData iconTwitterCircleFill = IconData(0xe96b,fontFamily:'IconFontIcons'); 204 | static const IconData iconFall = IconData(0xe86b,fontFamily:'IconFontIcons'); 205 | static const IconData iconSlackCircleFill = IconData(0xe96a,fontFamily:'IconFontIcons'); 206 | static const IconData iconSortAscending = IconData(0xe86a,fontFamily:'IconFontIcons'); 207 | static const IconData iconSketchCircleFill = IconData(0xe969,fontFamily:'IconFontIcons'); 208 | static const IconData iconSortDescending = IconData(0xe869,fontFamily:'IconFontIcons'); 209 | static const IconData iconDingtalkCircleFill = IconData(0xe968,fontFamily:'IconFontIcons'); 210 | static const IconData iconDownload = IconData(0xe868,fontFamily:'IconFontIcons'); 211 | static const IconData iconGoogleCircleFill = IconData(0xe967,fontFamily:'IconFontIcons'); 212 | static const IconData iconVerticalAlignTop = IconData(0xe867,fontFamily:'IconFontIcons'); 213 | static const IconData iconIECircleFill = IconData(0xe966,fontFamily:'IconFontIcons'); 214 | static const IconData iconTotop = IconData(0xe866,fontFamily:'IconFontIcons'); 215 | static const IconData iconQQCircleFill = IconData(0xe965,fontFamily:'IconFontIcons'); 216 | static const IconData iconVerticalAlignMiddl = IconData(0xe865,fontFamily:'IconFontIcons'); 217 | static const IconData iconMediumCircleFill = IconData(0xe964,fontFamily:'IconFontIcons'); 218 | static const IconData iconVerticalAlignBotto = IconData(0xe864,fontFamily:'IconFontIcons'); 219 | static const IconData iconGoogleplusCircleF = IconData(0xe963,fontFamily:'IconFontIcons'); 220 | static const IconData iconColumHeight = IconData(0xe863,fontFamily:'IconFontIcons'); 221 | static const IconData iconDribbbleCircleFill = IconData(0xe962,fontFamily:'IconFontIcons'); 222 | static const IconData iconUpload = IconData(0xe862,fontFamily:'IconFontIcons'); 223 | static const IconData iconGithubFill = IconData(0xe961,fontFamily:'IconFontIcons'); 224 | static const IconData iconArrowdown = IconData(0xe861,fontFamily:'IconFontIcons'); 225 | static const IconData iconDropboxCircleFill = IconData(0xe960,fontFamily:'IconFontIcons'); 226 | static const IconData iconArrowleft = IconData(0xe860,fontFamily:'IconFontIcons'); 227 | static const IconData iconCodeSandboxCircleF = IconData(0xe95f,fontFamily:'IconFontIcons'); 228 | static const IconData iconArrowup = IconData(0xe85f,fontFamily:'IconFontIcons'); 229 | static const IconData iconCodepenCircleFill = IconData(0xe95e,fontFamily:'IconFontIcons'); 230 | static const IconData iconArrowright = IconData(0xe85e,fontFamily:'IconFontIcons'); 231 | static const IconData iconAmazonCircleFill = IconData(0xe95d,fontFamily:'IconFontIcons'); 232 | static const IconData iconDoubleright = IconData(0xe85d,fontFamily:'IconFontIcons'); 233 | static const IconData iconBehanceCircleFill = IconData(0xe95c,fontFamily:'IconFontIcons'); 234 | static const IconData iconDoubleleft = IconData(0xe85c,fontFamily:'IconFontIcons'); 235 | static const IconData iconAliwangwangFill = IconData(0xe95b,fontFamily:'IconFontIcons'); 236 | static const IconData iconFullscreenExit = IconData(0xe85b,fontFamily:'IconFontIcons'); 237 | static const IconData iconAlipayCircleFill = IconData(0xe95a,fontFamily:'IconFontIcons'); 238 | static const IconData iconFullscreen = IconData(0xe85a,fontFamily:'IconFontIcons'); 239 | static const IconData iconChromeFill = IconData(0xe959,fontFamily:'IconFontIcons'); 240 | static const IconData iconDown = IconData(0xe859,fontFamily:'IconFontIcons'); 241 | static const IconData iconWechatFill = IconData(0xe958,fontFamily:'IconFontIcons'); 242 | static const IconData iconUp = IconData(0xe858,fontFamily:'IconFontIcons'); 243 | static const IconData iconYahooFill = IconData(0xe957,fontFamily:'IconFontIcons'); 244 | static const IconData iconLeft = IconData(0xe857,fontFamily:'IconFontIcons'); 245 | static const IconData iconYoutubeFill = IconData(0xe956,fontFamily:'IconFontIcons'); 246 | static const IconData iconRight = IconData(0xe856,fontFamily:'IconFontIcons'); 247 | static const IconData iconYuqueFill = IconData(0xe955,fontFamily:'IconFontIcons'); 248 | static const IconData iconVerticalleft = IconData(0xe855,fontFamily:'IconFontIcons'); 249 | static const IconData iconWeibo = IconData(0xe954,fontFamily:'IconFontIcons'); 250 | static const IconData iconVerticalright = IconData(0xe854,fontFamily:'IconFontIcons'); 251 | static const IconData iconSkypeFill = IconData(0xe953,fontFamily:'IconFontIcons'); 252 | static const IconData iconArrawsalt = IconData(0xe853,fontFamily:'IconFontIcons'); 253 | static const IconData iconTwitter = IconData(0xe952,fontFamily:'IconFontIcons'); 254 | static const IconData iconShrink = IconData(0xe852,fontFamily:'IconFontIcons'); 255 | static const IconData iconQQ = IconData(0xe951,fontFamily:'IconFontIcons'); 256 | static const IconData iconFork = IconData(0xe851,fontFamily:'IconFontIcons'); 257 | static const IconData iconWindowsFill = IconData(0xe950,fontFamily:'IconFontIcons'); 258 | static const IconData iconBranches = IconData(0xe850,fontFamily:'IconFontIcons'); 259 | static const IconData iconHTMLFill = IconData(0xe94f,fontFamily:'IconFontIcons'); 260 | static const IconData iconShare = IconData(0xe84f,fontFamily:'IconFontIcons'); 261 | static const IconData iconAppleFill = IconData(0xe94e,fontFamily:'IconFontIcons'); 262 | static const IconData iconMr = IconData(0xe84e,fontFamily:'IconFontIcons'); 263 | static const IconData iconAndroidFill = IconData(0xe94d,fontFamily:'IconFontIcons'); 264 | static const IconData iconScissor = IconData(0xe84d,fontFamily:'IconFontIcons'); 265 | static const IconData iconDingtalk = IconData(0xe94c,fontFamily:'IconFontIcons'); 266 | static const IconData iconTags = IconData(0xe84c,fontFamily:'IconFontIcons'); 267 | static const IconData iconDropbox = IconData(0xe94b,fontFamily:'IconFontIcons'); 268 | static const IconData iconWrench = IconData(0xe84b,fontFamily:'IconFontIcons'); 269 | static const IconData iconGitlabFill = IconData(0xe94a,fontFamily:'IconFontIcons'); 270 | static const IconData iconTag = IconData(0xe84a,fontFamily:'IconFontIcons'); 271 | static const IconData iconYoutube = IconData(0xe949,fontFamily:'IconFontIcons'); 272 | static const IconData iconShake = IconData(0xe849,fontFamily:'IconFontIcons'); 273 | static const IconData iconYuque = IconData(0xe948,fontFamily:'IconFontIcons'); 274 | static const IconData iconPhone = IconData(0xe848,fontFamily:'IconFontIcons'); 275 | static const IconData iconWindows = IconData(0xe947,fontFamily:'IconFontIcons'); 276 | static const IconData iconPushpin = IconData(0xe847,fontFamily:'IconFontIcons'); 277 | static const IconData iconReddit = IconData(0xe946,fontFamily:'IconFontIcons'); 278 | static const IconData iconPercentage = IconData(0xe846,fontFamily:'IconFontIcons'); 279 | static const IconData iconInstagram = IconData(0xe945,fontFamily:'IconFontIcons'); 280 | static const IconData iconMan = IconData(0xe845,fontFamily:'IconFontIcons'); 281 | static const IconData iconDribbble = IconData(0xe944,fontFamily:'IconFontIcons'); 282 | static const IconData iconLink = IconData(0xe844,fontFamily:'IconFontIcons'); 283 | static const IconData iconGitlab = IconData(0xe943,fontFamily:'IconFontIcons'); 284 | static const IconData iconMonitor = IconData(0xe843,fontFamily:'IconFontIcons'); 285 | static const IconData iconSketch = IconData(0xe942,fontFamily:'IconFontIcons'); 286 | static const IconData iconHighlight = IconData(0xe842,fontFamily:'IconFontIcons'); 287 | static const IconData iconAndroid = IconData(0xe941,fontFamily:'IconFontIcons'); 288 | static const IconData iconDisconnect = IconData(0xe841,fontFamily:'IconFontIcons'); 289 | static const IconData iconApple = IconData(0xe940,fontFamily:'IconFontIcons'); 290 | static const IconData iconApi = IconData(0xe840,fontFamily:'IconFontIcons'); 291 | static const IconData iconAliwangwang = IconData(0xe93f,fontFamily:'IconFontIcons'); 292 | static const IconData iconKey = IconData(0xe83f,fontFamily:'IconFontIcons'); 293 | static const IconData iconCodepen = IconData(0xe93e,fontFamily:'IconFontIcons'); 294 | static const IconData iconEdit = IconData(0xe83e,fontFamily:'IconFontIcons'); 295 | static const IconData iconChrome = IconData(0xe93d,fontFamily:'IconFontIcons'); 296 | static const IconData iconAttachment = IconData(0xe83d,fontFamily:'IconFontIcons'); 297 | static const IconData iconCodeSandbox = IconData(0xe93c,fontFamily:'IconFontIcons'); 298 | static const IconData iconWifi = IconData(0xe83c,fontFamily:'IconFontIcons'); 299 | static const IconData iconSkype = IconData(0xe93b,fontFamily:'IconFontIcons'); 300 | static const IconData iconHeatmap = IconData(0xe83b,fontFamily:'IconFontIcons'); 301 | static const IconData iconFacebook = IconData(0xe93a,fontFamily:'IconFontIcons'); 302 | static const IconData iconGold = IconData(0xe83a,fontFamily:'IconFontIcons'); 303 | static const IconData iconYahoo = IconData(0xe939,fontFamily:'IconFontIcons'); 304 | static const IconData iconStar = IconData(0xe839,fontFamily:'IconFontIcons'); 305 | static const IconData iconLinkedin = IconData(0xe938,fontFamily:'IconFontIcons'); 306 | static const IconData iconError = IconData(0xe838,fontFamily:'IconFontIcons'); 307 | static const IconData iconHTML = IconData(0xe937,fontFamily:'IconFontIcons'); 308 | static const IconData iconBlock = IconData(0xe837,fontFamily:'IconFontIcons'); 309 | static const IconData iconZhihu = IconData(0xe936,fontFamily:'IconFontIcons'); 310 | static const IconData iconHeart = IconData(0xe836,fontFamily:'IconFontIcons'); 311 | static const IconData iconTaobao = IconData(0xe935,fontFamily:'IconFontIcons'); 312 | static const IconData iconCreditcard = IconData(0xe835,fontFamily:'IconFontIcons'); 313 | static const IconData iconAlipay = IconData(0xe934,fontFamily:'IconFontIcons'); 314 | static const IconData iconIdcard = IconData(0xe834,fontFamily:'IconFontIcons'); 315 | static const IconData iconSlack = IconData(0xe933,fontFamily:'IconFontIcons'); 316 | static const IconData iconTable = IconData(0xe833,fontFamily:'IconFontIcons'); 317 | static const IconData iconAmazon = IconData(0xe932,fontFamily:'IconFontIcons'); 318 | static const IconData iconMail = IconData(0xe832,fontFamily:'IconFontIcons'); 319 | static const IconData iconIE = IconData(0xe931,fontFamily:'IconFontIcons'); 320 | static const IconData iconImage = IconData(0xe831,fontFamily:'IconFontIcons'); 321 | static const IconData iconGoogle = IconData(0xe930,fontFamily:'IconFontIcons'); 322 | static const IconData iconFund = IconData(0xe830,fontFamily:'IconFontIcons'); 323 | static const IconData iconMedium = IconData(0xe92f,fontFamily:'IconFontIcons'); 324 | static const IconData iconQrcode = IconData(0xe82f,fontFamily:'IconFontIcons'); 325 | static const IconData iconGoogleplus = IconData(0xe92e,fontFamily:'IconFontIcons'); 326 | static const IconData iconRadarchart = IconData(0xe82e,fontFamily:'IconFontIcons'); 327 | static const IconData iconBehance = IconData(0xe92d,fontFamily:'IconFontIcons'); 328 | static const IconData iconSound = IconData(0xe82d,fontFamily:'IconFontIcons'); 329 | static const IconData iconAntCloud = IconData(0xe92c,fontFamily:'IconFontIcons'); 330 | static const IconData iconNotification = IconData(0xe82c,fontFamily:'IconFontIcons'); 331 | static const IconData iconAntdesign = IconData(0xe92b,fontFamily:'IconFontIcons'); 332 | static const IconData iconVideo = IconData(0xe82b,fontFamily:'IconFontIcons'); 333 | static const IconData iconAlibabacloud = IconData(0xe92a,fontFamily:'IconFontIcons'); 334 | static const IconData iconCloudSync = IconData(0xe82a,fontFamily:'IconFontIcons'); 335 | static const IconData iconAlibaba = IconData(0xe929,fontFamily:'IconFontIcons'); 336 | static const IconData iconCloudDownload = IconData(0xe829,fontFamily:'IconFontIcons'); 337 | static const IconData iconSlidersFill = IconData(0xe928,fontFamily:'IconFontIcons'); 338 | static const IconData iconCloud = IconData(0xe828,fontFamily:'IconFontIcons'); 339 | static const IconData iconBoxplotFill = IconData(0xe927,fontFamily:'IconFontIcons'); 340 | static const IconData iconCloudUpload = IconData(0xe827,fontFamily:'IconFontIcons'); 341 | static const IconData iconBuildFill = IconData(0xe926,fontFamily:'IconFontIcons'); 342 | static const IconData iconCloudServer = IconData(0xe826,fontFamily:'IconFontIcons'); 343 | static const IconData iconGoldenFill = IconData(0xe925,fontFamily:'IconFontIcons'); 344 | static const IconData iconRead = IconData(0xe825,fontFamily:'IconFontIcons'); 345 | static const IconData iconUSBFill = IconData(0xe924,fontFamily:'IconFontIcons'); 346 | static const IconData iconPrinter = IconData(0xe824,fontFamily:'IconFontIcons'); 347 | static const IconData iconSettingFill = IconData(0xe923,fontFamily:'IconFontIcons'); 348 | static const IconData iconCar = IconData(0xe823,fontFamily:'IconFontIcons'); 349 | static const IconData iconShopFill = IconData(0xe922,fontFamily:'IconFontIcons'); 350 | static const IconData iconGateway = IconData(0xe822,fontFamily:'IconFontIcons'); 351 | static const IconData iconPrinterFill = IconData(0xe921,fontFamily:'IconFontIcons'); 352 | static const IconData iconCluster = IconData(0xe821,fontFamily:'IconFontIcons'); 353 | static const IconData iconCarFill = IconData(0xe920,fontFamily:'IconFontIcons'); 354 | static const IconData iconCamera = IconData(0xe820,fontFamily:'IconFontIcons'); 355 | static const IconData iconMailFill = IconData(0xe91f,fontFamily:'IconFontIcons'); 356 | static const IconData iconBarcode = IconData(0xe81f,fontFamily:'IconFontIcons'); 357 | static const IconData iconCrownFill = IconData(0xe91e,fontFamily:'IconFontIcons'); 358 | static const IconData iconLaptop = IconData(0xe81e,fontFamily:'IconFontIcons'); 359 | static const IconData iconErrorFill = IconData(0xe91d,fontFamily:'IconFontIcons'); 360 | static const IconData iconSliders = IconData(0xe81d,fontFamily:'IconFontIcons'); 361 | static const IconData iconCameraFill = IconData(0xe91c,fontFamily:'IconFontIcons'); 362 | static const IconData iconBuild = IconData(0xe81c,fontFamily:'IconFontIcons'); 363 | static const IconData iconBankFill = IconData(0xe91b,fontFamily:'IconFontIcons'); 364 | static const IconData iconBoxplot = IconData(0xe81b,fontFamily:'IconFontIcons'); 365 | static const IconData iconTagsFill = IconData(0xe91a,fontFamily:'IconFontIcons'); 366 | static const IconData iconSelect = IconData(0xe81a,fontFamily:'IconFontIcons'); 367 | static const IconData iconWrenchFill = IconData(0xe919,fontFamily:'IconFontIcons'); 368 | static const IconData iconScan = IconData(0xe819,fontFamily:'IconFontIcons'); 369 | static const IconData iconTagFill = IconData(0xe918,fontFamily:'IconFontIcons'); 370 | static const IconData iconCalendar = IconData(0xe818,fontFamily:'IconFontIcons'); 371 | static const IconData iconThunderboltFill = IconData(0xe917,fontFamily:'IconFontIcons'); 372 | static const IconData iconCalendarCheck = IconData(0xe817,fontFamily:'IconFontIcons'); 373 | static const IconData iconRocketFill = IconData(0xe916,fontFamily:'IconFontIcons'); 374 | static const IconData iconCarryout = IconData(0xe816,fontFamily:'IconFontIcons'); 375 | static const IconData iconPushpinFill = IconData(0xe915,fontFamily:'IconFontIcons'); 376 | static const IconData iconContacts = IconData(0xe815,fontFamily:'IconFontIcons'); 377 | static const IconData iconEditFill = IconData(0xe914,fontFamily:'IconFontIcons'); 378 | static const IconData iconAccountbook = IconData(0xe814,fontFamily:'IconFontIcons'); 379 | static const IconData iconPhoneFill = IconData(0xe913,fontFamily:'IconFontIcons'); 380 | static const IconData iconDeploymentunit = IconData(0xe813,fontFamily:'IconFontIcons'); 381 | static const IconData iconHighlightFill = IconData(0xe912,fontFamily:'IconFontIcons'); 382 | static const IconData iconFolderAdd = IconData(0xe812,fontFamily:'IconFontIcons'); 383 | static const IconData iconApiFill = IconData(0xe911,fontFamily:'IconFontIcons'); 384 | static const IconData iconFolderOpen = IconData(0xe811,fontFamily:'IconFontIcons'); 385 | static const IconData iconAlertFill = IconData(0xe910,fontFamily:'IconFontIcons'); 386 | static const IconData iconFolder = IconData(0xe810,fontFamily:'IconFontIcons'); 387 | static const IconData iconUnlockFill = IconData(0xe90f,fontFamily:'IconFontIcons'); 388 | static const IconData iconShopping = IconData(0xe80f,fontFamily:'IconFontIcons'); 389 | static const IconData iconStarFill = IconData(0xe90e,fontFamily:'IconFontIcons'); 390 | static const IconData iconRocket = IconData(0xe80e,fontFamily:'IconFontIcons'); 391 | static const IconData iconUnlikeFill = IconData(0xe90d,fontFamily:'IconFontIcons'); 392 | static const IconData iconShop = IconData(0xe80d,fontFamily:'IconFontIcons'); 393 | static const IconData iconLockFill = IconData(0xe90c,fontFamily:'IconFontIcons'); 394 | static const IconData iconMedicinebox = IconData(0xe80c,fontFamily:'IconFontIcons'); 395 | static const IconData iconLikeFill = IconData(0xe90b,fontFamily:'IconFontIcons'); 396 | static const IconData iconMoneycollect = IconData(0xe80b,fontFamily:'IconFontIcons'); 397 | static const IconData iconEyeFill = IconData(0xe90a,fontFamily:'IconFontIcons'); 398 | static const IconData iconFlag = IconData(0xe80a,fontFamily:'IconFontIcons'); 399 | static const IconData iconExperimentFill = IconData(0xe909,fontFamily:'IconFontIcons'); 400 | static const IconData iconCustomerservice = IconData(0xe809,fontFamily:'IconFontIcons'); 401 | static const IconData iconCustomerserviceFill = IconData(0xe908,fontFamily:'IconFontIcons'); 402 | static const IconData iconLock = IconData(0xe808,fontFamily:'IconFontIcons'); 403 | static const IconData iconCloudFill = IconData(0xe907,fontFamily:'IconFontIcons'); 404 | static const IconData iconUnlock = IconData(0xe807,fontFamily:'IconFontIcons'); 405 | static const IconData iconLocationFill = IconData(0xe906,fontFamily:'IconFontIcons'); 406 | static const IconData iconUnlike = IconData(0xe806,fontFamily:'IconFontIcons'); 407 | static const IconData iconTrophyFill = IconData(0xe905,fontFamily:'IconFontIcons'); 408 | static const IconData iconLike = IconData(0xe805,fontFamily:'IconFontIcons'); 409 | static const IconData iconHomeFill = IconData(0xe904,fontFamily:'IconFontIcons'); 410 | static const IconData iconFunnelplot = IconData(0xe804,fontFamily:'IconFontIcons'); 411 | static const IconData iconHourglassFill = IconData(0xe903,fontFamily:'IconFontIcons'); 412 | static const IconData iconFilter = IconData(0xe803,fontFamily:'IconFontIcons'); 413 | static const IconData iconGiftFill = IconData(0xe902,fontFamily:'IconFontIcons'); 414 | static const IconData iconBank = IconData(0xe802,fontFamily:'IconFontIcons'); 415 | static const IconData iconFunnelplotFill = IconData(0xe901,fontFamily:'IconFontIcons'); 416 | static const IconData iconHome = IconData(0xe801,fontFamily:'IconFontIcons'); 417 | static const IconData iconFireFill = IconData(0xe900,fontFamily:'IconFontIcons'); 418 | static const IconData iconSkin = IconData(0xe800,fontFamily:'IconFontIcons'); 419 | static const IconData iconFilterFill = IconData(0xe8ff,fontFamily:'IconFontIcons'); 420 | static const IconData iconUSB = IconData(0xe7ff,fontFamily:'IconFontIcons'); 421 | static const IconData iconBellFill = IconData(0xe8fe,fontFamily:'IconFontIcons'); 422 | static const IconData iconRest = IconData(0xe7fe,fontFamily:'IconFontIcons'); 423 | static const IconData iconBulbFill = IconData(0xe8fd,fontFamily:'IconFontIcons'); 424 | static const IconData iconTrophy = IconData(0xe7fd,fontFamily:'IconFontIcons'); 425 | static const IconData iconSoundFill = IconData(0xe8fc,fontFamily:'IconFontIcons'); 426 | static const IconData iconBell = IconData(0xe7fc,fontFamily:'IconFontIcons'); 427 | static const IconData iconVideoFill = IconData(0xe8fb,fontFamily:'IconFontIcons'); 428 | static const IconData iconExperiment = IconData(0xe7fb,fontFamily:'IconFontIcons'); 429 | static const IconData iconSkinFill = IconData(0xe8fa,fontFamily:'IconFontIcons'); 430 | static const IconData iconBulb = IconData(0xe7fa,fontFamily:'IconFontIcons'); 431 | static const IconData iconShoppingFill = IconData(0xe8f9,fontFamily:'IconFontIcons'); 432 | static const IconData iconHourglass = IconData(0xe7f9,fontFamily:'IconFontIcons'); 433 | static const IconData iconRestFill = IconData(0xe8f8,fontFamily:'IconFontIcons'); 434 | static const IconData iconDelete = IconData(0xe7f8,fontFamily:'IconFontIcons'); 435 | static const IconData iconMedicineboxFill = IconData(0xe8f7,fontFamily:'IconFontIcons'); 436 | static const IconData iconAlert = IconData(0xe7f7,fontFamily:'IconFontIcons'); 437 | static const IconData iconMoneycollectFill = IconData(0xe8f6,fontFamily:'IconFontIcons'); 438 | static const IconData iconInsurance = IconData(0xe7f6,fontFamily:'IconFontIcons'); 439 | static const IconData iconFlagFill = IconData(0xe8f5,fontFamily:'IconFontIcons'); 440 | static const IconData iconSafetycertificate = IconData(0xe7f5,fontFamily:'IconFontIcons'); 441 | static const IconData iconNotificationFill = IconData(0xe8f4,fontFamily:'IconFontIcons'); 442 | static const IconData iconPropertysafety = IconData(0xe7f4,fontFamily:'IconFontIcons'); 443 | static const IconData iconDeleteFill = IconData(0xe8f3,fontFamily:'IconFontIcons'); 444 | static const IconData iconSecurityscan = IconData(0xe7f3,fontFamily:'IconFontIcons'); 445 | static const IconData iconContactsFill = IconData(0xe8f2,fontFamily:'IconFontIcons'); 446 | static const IconData iconBatchfolding = IconData(0xe7f2,fontFamily:'IconFontIcons'); 447 | static const IconData iconReadFill = IconData(0xe8f1,fontFamily:'IconFontIcons'); 448 | static const IconData iconDiff = IconData(0xe7f1,fontFamily:'IconFontIcons'); 449 | static const IconData iconFundFill = IconData(0xe8f0,fontFamily:'IconFontIcons'); 450 | static const IconData iconAudit = IconData(0xe7f0,fontFamily:'IconFontIcons'); 451 | static const IconData iconCreditcardFill = IconData(0xe8ef,fontFamily:'IconFontIcons'); 452 | static const IconData iconSnippets = IconData(0xe7ef,fontFamily:'IconFontIcons'); 453 | static const IconData iconIdcardFill = IconData(0xe8ee,fontFamily:'IconFontIcons'); 454 | static const IconData iconFileCopy = IconData(0xe7ee,fontFamily:'IconFontIcons'); 455 | static const IconData iconImageFill = IconData(0xe8ed,fontFamily:'IconFontIcons'); 456 | static const IconData iconFileText = IconData(0xe7ed,fontFamily:'IconFontIcons'); 457 | static const IconData iconCalendarCheckFill = IconData(0xe8ec,fontFamily:'IconFontIcons'); 458 | static const IconData iconFileZip = IconData(0xe7ec,fontFamily:'IconFontIcons'); 459 | static const IconData iconSeverFill = IconData(0xe8eb,fontFamily:'IconFontIcons'); 460 | static const IconData iconFile = IconData(0xe7eb,fontFamily:'IconFontIcons'); 461 | static const IconData iconContainerFill = IconData(0xe8ea,fontFamily:'IconFontIcons'); 462 | static const IconData iconFileWord = IconData(0xe7ea,fontFamily:'IconFontIcons'); 463 | static const IconData iconDatabaseFill = IconData(0xe8e9,fontFamily:'IconFontIcons'); 464 | static const IconData iconFilePpt = IconData(0xe7e9,fontFamily:'IconFontIcons'); 465 | static const IconData iconFolderOpenFill = IconData(0xe8e8,fontFamily:'IconFontIcons'); 466 | static const IconData iconFileUnknown = IconData(0xe7e8,fontFamily:'IconFontIcons'); 467 | static const IconData iconFolderFill = IconData(0xe8e7,fontFamily:'IconFontIcons'); 468 | static const IconData iconFileMarkdown = IconData(0xe7e7,fontFamily:'IconFontIcons'); 469 | static const IconData iconFolderAddFill = IconData(0xe8e6,fontFamily:'IconFontIcons'); 470 | static const IconData iconFileImage = IconData(0xe7e6,fontFamily:'IconFontIcons'); 471 | static const IconData iconReconciliationFill = IconData(0xe8e5,fontFamily:'IconFontIcons'); 472 | static const IconData iconFilePdf = IconData(0xe7e5,fontFamily:'IconFontIcons'); 473 | static const IconData iconBatchfoldingFill = IconData(0xe8e4,fontFamily:'IconFontIcons'); 474 | static const IconData iconFileExclamation = IconData(0xe7e4,fontFamily:'IconFontIcons'); 475 | static const IconData iconSnippetsFill = IconData(0xe8e3,fontFamily:'IconFontIcons'); 476 | static const IconData iconFileExcel = IconData(0xe7e3,fontFamily:'IconFontIcons'); 477 | static const IconData iconFileCopyFill = IconData(0xe8e2,fontFamily:'IconFontIcons'); 478 | static const IconData iconFileAdd = IconData(0xe7e2,fontFamily:'IconFontIcons'); 479 | static const IconData iconDiffFill = IconData(0xe8e1,fontFamily:'IconFontIcons'); 480 | static const IconData iconFileprotect = IconData(0xe7e1,fontFamily:'IconFontIcons'); 481 | static const IconData iconFileImageFill = IconData(0xe8e0,fontFamily:'IconFontIcons'); 482 | static const IconData iconSolution = IconData(0xe7e0,fontFamily:'IconFontIcons'); 483 | static const IconData iconFilePdfFill = IconData(0xe8df,fontFamily:'IconFontIcons'); 484 | static const IconData iconFilesearch = IconData(0xe7df,fontFamily:'IconFontIcons'); 485 | static const IconData iconFileZipFill = IconData(0xe8de,fontFamily:'IconFontIcons'); 486 | static const IconData iconFilesync = IconData(0xe7de,fontFamily:'IconFontIcons'); 487 | static const IconData iconFileWordFill = IconData(0xe8dd,fontFamily:'IconFontIcons'); 488 | static const IconData iconFileException = IconData(0xe7dd,fontFamily:'IconFontIcons'); 489 | static const IconData iconFileUnknownFill = IconData(0xe8dc,fontFamily:'IconFontIcons'); 490 | static const IconData iconReconciliation = IconData(0xe7dc,fontFamily:'IconFontIcons'); 491 | static const IconData iconFilePptFill = IconData(0xe8db,fontFamily:'IconFontIcons'); 492 | static const IconData iconFiledone = IconData(0xe7db,fontFamily:'IconFontIcons'); 493 | static const IconData iconFileTextFill = IconData(0xe8da,fontFamily:'IconFontIcons'); 494 | static const IconData iconBook = IconData(0xe7da,fontFamily:'IconFontIcons'); 495 | static const IconData iconFileMarkdownFill = IconData(0xe8d9,fontFamily:'IconFontIcons'); 496 | static const IconData iconRedenvelope = IconData(0xe7d9,fontFamily:'IconFontIcons'); 497 | static const IconData iconFileExcelFill = IconData(0xe8d8,fontFamily:'IconFontIcons'); 498 | static const IconData iconTablet = IconData(0xe7d8,fontFamily:'IconFontIcons'); 499 | static const IconData iconFileFill = IconData(0xe8d7,fontFamily:'IconFontIcons'); 500 | static const IconData iconMobile = IconData(0xe7d7,fontFamily:'IconFontIcons'); 501 | static const IconData iconFileAddFill = IconData(0xe8d6,fontFamily:'IconFontIcons'); 502 | static const IconData iconSever = IconData(0xe7d6,fontFamily:'IconFontIcons'); 503 | static const IconData iconFileExclamationFil = IconData(0xe8d5,fontFamily:'IconFontIcons'); 504 | static const IconData iconDatabase = IconData(0xe7d5,fontFamily:'IconFontIcons'); 505 | static const IconData iconUngroup = IconData(0xe9d4,fontFamily:'IconFontIcons'); 506 | static const IconData iconSecurityscanFill = IconData(0xe8d4,fontFamily:'IconFontIcons'); 507 | static const IconData iconContainer = IconData(0xe7d4,fontFamily:'IconFontIcons'); 508 | static const IconData iconShortcut = IconData(0xe9d3,fontFamily:'IconFontIcons'); 509 | static const IconData iconInsuranceFill = IconData(0xe8d3,fontFamily:'IconFontIcons'); 510 | static const IconData iconPointmap = IconData(0xe7d3,fontFamily:'IconFontIcons'); 511 | static const IconData iconView = IconData(0xe9d2,fontFamily:'IconFontIcons'); 512 | static const IconData iconPropertysafetyFill = IconData(0xe8d2,fontFamily:'IconFontIcons'); 513 | static const IconData iconBarchart = IconData(0xe7d2,fontFamily:'IconFontIcons'); 514 | static const IconData iconReport = IconData(0xe9d1,fontFamily:'IconFontIcons'); 515 | static const IconData iconSafetycertificateF = IconData(0xe8d1,fontFamily:'IconFontIcons'); 516 | static const IconData iconLinechart = IconData(0xe7d1,fontFamily:'IconFontIcons'); 517 | static const IconData iconSend = IconData(0xe9d0,fontFamily:'IconFontIcons'); 518 | static const IconData iconRedenvelopeFill = IconData(0xe8d0,fontFamily:'IconFontIcons'); 519 | static const IconData iconAreachart = IconData(0xe7d0,fontFamily:'IconFontIcons'); 520 | static const IconData iconGroup = IconData(0xe9cf,fontFamily:'IconFontIcons'); 521 | static const IconData iconBookFill = IconData(0xe8cf,fontFamily:'IconFontIcons'); 522 | static const IconData iconTeam = IconData(0xe7cf,fontFamily:'IconFontIcons'); 523 | static const IconData iconFileGIF = IconData(0xe9ce,fontFamily:'IconFontIcons'); 524 | static const IconData iconTabletFill = IconData(0xe8ce,fontFamily:'IconFontIcons'); 525 | static const IconData iconUser = IconData(0xe7ce,fontFamily:'IconFontIcons'); 526 | static const IconData iconFolderView = IconData(0xe9cd,fontFamily:'IconFontIcons'); 527 | static const IconData iconMobileFill = IconData(0xe8cd,fontFamily:'IconFontIcons'); 528 | static const IconData iconAddteam = IconData(0xe7cd,fontFamily:'IconFontIcons'); 529 | static const IconData iconExpend = IconData(0xe9cc,fontFamily:'IconFontIcons'); 530 | static const IconData iconAppstoreFill = IconData(0xe8cc,fontFamily:'IconFontIcons'); 531 | static const IconData iconDeleteuser = IconData(0xe7cc,fontFamily:'IconFontIcons'); 532 | static const IconData iconCompress = IconData(0xe9cb,fontFamily:'IconFontIcons'); 533 | static const IconData iconLayoutFill = IconData(0xe8cb,fontFamily:'IconFontIcons'); 534 | static const IconData iconDeleteteam = IconData(0xe7cb,fontFamily:'IconFontIcons'); 535 | static const IconData iconAim = IconData(0xe9ca,fontFamily:'IconFontIcons'); 536 | static const IconData iconControlFill = IconData(0xe8ca,fontFamily:'IconFontIcons'); 537 | static const IconData iconAdduser = IconData(0xe7ca,fontFamily:'IconFontIcons'); 538 | static const IconData iconIconTest = IconData(0xe9c9,fontFamily:'IconFontIcons'); 539 | static const IconData iconWalletFill = IconData(0xe8c9,fontFamily:'IconFontIcons'); 540 | static const IconData iconRadiusSetting = IconData(0xe7c9,fontFamily:'IconFontIcons'); 541 | static const IconData iconConsoleSQL = IconData(0xe9c8,fontFamily:'IconFontIcons'); 542 | static const IconData iconSaveFill = IconData(0xe8c8,fontFamily:'IconFontIcons'); 543 | static const IconData iconRadiusUpright = IconData(0xe7c8,fontFamily:'IconFontIcons'); 544 | static const IconData iconFieldBinary = IconData(0xe9c7,fontFamily:'IconFontIcons'); 545 | static const IconData iconDetailFill = IconData(0xe8c7,fontFamily:'IconFontIcons'); 546 | static const IconData iconRadiusUpleft = IconData(0xe7c7,fontFamily:'IconFontIcons'); 547 | static const IconData iconStoredprocedure = IconData(0xe9c6,fontFamily:'IconFontIcons'); 548 | static const IconData iconProjectFill = IconData(0xe8c6,fontFamily:'IconFontIcons'); 549 | static const IconData iconRadiusBottomright = IconData(0xe7c6,fontFamily:'IconFontIcons'); 550 | static const IconData iconIndex = IconData(0xe9c5,fontFamily:'IconFontIcons'); 551 | static const IconData iconInterationFill = IconData(0xe8c5,fontFamily:'IconFontIcons'); 552 | static const IconData iconRadiusBottomleft = IconData(0xe7c5,fontFamily:'IconFontIcons'); 553 | static const IconData iconPartition = IconData(0xe9c4,fontFamily:'IconFontIcons'); 554 | static const IconData iconCalculatorFill = IconData(0xe8c4,fontFamily:'IconFontIcons'); 555 | static const IconData iconBorderHorizontal = IconData(0xe7c4,fontFamily:'IconFontIcons'); 556 | static const IconData iconGIF = IconData(0xe9c3,fontFamily:'IconFontIcons'); 557 | static const IconData iconCalendarFill = IconData(0xe8c3,fontFamily:'IconFontIcons'); 558 | static const IconData iconBorderVerticle = IconData(0xe7c3,fontFamily:'IconFontIcons'); 559 | static const IconData iconFieldTime = IconData(0xe9c2,fontFamily:'IconFontIcons'); 560 | static const IconData iconCarryoutFill = IconData(0xe8c2,fontFamily:'IconFontIcons'); 561 | static const IconData iconBorderInner = IconData(0xe7c2,fontFamily:'IconFontIcons'); 562 | static const IconData iconFunction = IconData(0xe9c1,fontFamily:'IconFontIcons'); 563 | static const IconData iconAccountbookFill = IconData(0xe8c1,fontFamily:'IconFontIcons'); 564 | static const IconData iconBorderRight = IconData(0xe7c1,fontFamily:'IconFontIcons'); 565 | static const IconData iconFieldString = IconData(0xe9c0,fontFamily:'IconFontIcons'); 566 | static const IconData iconPlusSquareFill = IconData(0xe8c0,fontFamily:'IconFontIcons'); 567 | static const IconData iconBorderLeft = IconData(0xe7c0,fontFamily:'IconFontIcons'); 568 | static const IconData iconFieldNumber = IconData(0xe9bf,fontFamily:'IconFontIcons'); 569 | static const IconData iconRightSquareFill = IconData(0xe8bf,fontFamily:'IconFontIcons'); 570 | static const IconData iconBorderBottom = IconData(0xe7bf,fontFamily:'IconFontIcons'); 571 | static const IconData iconSisternode = IconData(0xe9be,fontFamily:'IconFontIcons'); 572 | static const IconData iconUpSquareFill = IconData(0xe8be,fontFamily:'IconFontIcons'); 573 | static const IconData iconBorderTop = IconData(0xe7be,fontFamily:'IconFontIcons'); 574 | static const IconData iconDeleterow = IconData(0xe9bd,fontFamily:'IconFontIcons'); 575 | static const IconData iconPlaySquareFill = IconData(0xe8bd,fontFamily:'IconFontIcons'); 576 | static const IconData iconBorderOuter = IconData(0xe7bd,fontFamily:'IconFontIcons'); 577 | static const IconData iconTranslate = IconData(0xe9bc,fontFamily:'IconFontIcons'); 578 | static const IconData iconLeftSquareFill = IconData(0xe8bc,fontFamily:'IconFontIcons'); 579 | static const IconData iconBorder = IconData(0xe7bc,fontFamily:'IconFontIcons'); 580 | static const IconData iconInsertrowleft = IconData(0xe9bb,fontFamily:'IconFontIcons'); 581 | static const IconData iconCodelibraryFill = IconData(0xe8bb,fontFamily:'IconFontIcons'); 582 | static const IconData iconCheckSquare = IconData(0xe7bb,fontFamily:'IconFontIcons'); 583 | static const IconData iconFormatpainterFill = IconData(0xe9ba,fontFamily:'IconFontIcons'); 584 | static const IconData iconCloseSquareFill = IconData(0xe8ba,fontFamily:'IconFontIcons'); 585 | static const IconData iconInteration = IconData(0xe7ba,fontFamily:'IconFontIcons'); 586 | static const IconData iconInsertrowright = IconData(0xe9b9,fontFamily:'IconFontIcons'); 587 | static const IconData iconMinusSquareFill = IconData(0xe8b9,fontFamily:'IconFontIcons'); 588 | static const IconData iconCalculator = IconData(0xe7b9,fontFamily:'IconFontIcons'); 589 | static const IconData iconFormatpainter = IconData(0xe9b8,fontFamily:'IconFontIcons'); 590 | static const IconData iconDownSquareFill = IconData(0xe8b8,fontFamily:'IconFontIcons'); 591 | static const IconData iconUpSquare = IconData(0xe7b8,fontFamily:'IconFontIcons'); 592 | static const IconData iconSolitCells = IconData(0xe9b7,fontFamily:'IconFontIcons'); 593 | static const IconData iconCheckSquareFill = IconData(0xe8b7,fontFamily:'IconFontIcons'); 594 | static const IconData iconWallet = IconData(0xe7b7,fontFamily:'IconFontIcons'); 595 | static const IconData iconTable1 = IconData(0xe9b6,fontFamily:'IconFontIcons'); 596 | static const IconData iconMessageFill = IconData(0xe8b6,fontFamily:'IconFontIcons'); 597 | static const IconData iconProject = IconData(0xe7b6,fontFamily:'IconFontIcons'); 598 | static const IconData iconInsertrowabove = IconData(0xe9b5,fontFamily:'IconFontIcons'); 599 | static const IconData iconDashboardFill = IconData(0xe8b5,fontFamily:'IconFontIcons'); 600 | static const IconData iconRightSquare = IconData(0xe7b5,fontFamily:'IconFontIcons'); 601 | static const IconData iconInsertrowbelow = IconData(0xe9b4,fontFamily:'IconFontIcons'); 602 | static const IconData iconPiechartCircleFil = IconData(0xe8b4,fontFamily:'IconFontIcons'); 603 | static const IconData iconPlusSquare = IconData(0xe7b4,fontFamily:'IconFontIcons'); 604 | } --------------------------------------------------------------------------------