From 4d6e1f4029e18cbabc490cbc4e0ee399e7e1f9a9 Mon Sep 17 00:00:00 2001 From: AWeiLoveAndroid <2497727771@qq.com> Date: Tue, 21 Aug 2018 17:36:01 +0800 Subject: [PATCH 01/97] =?UTF-8?q?Update=20Flutter=E7=9A=84=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E4=B8=8E=E5=8E=9F=E7=94=9F=E4=BA=A4=E4=BA=92=E7=9A=84?= =?UTF-8?q?=E4=B8=80=E4=BA=9B=E5=B8=B8=E7=94=A8=E5=BA=93.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\270\200\344\272\233\345\270\270\347\224\250\345\272\223.md" | 1 + 1 file changed, 1 insertion(+) diff --git "a/readme/Flutter\347\232\204\351\234\200\350\246\201\344\270\216\345\216\237\347\224\237\344\272\244\344\272\222\347\232\204\344\270\200\344\272\233\345\270\270\347\224\250\345\272\223.md" "b/readme/Flutter\347\232\204\351\234\200\350\246\201\344\270\216\345\216\237\347\224\237\344\272\244\344\272\222\347\232\204\344\270\200\344\272\233\345\270\270\347\224\250\345\272\223.md" index d8518df..207152d 100644 --- "a/readme/Flutter\347\232\204\351\234\200\350\246\201\344\270\216\345\216\237\347\224\237\344\272\244\344\272\222\347\232\204\344\270\200\344\272\233\345\270\270\347\224\250\345\272\223.md" +++ "b/readme/Flutter\347\232\204\351\234\200\350\246\201\344\270\216\345\216\237\347\224\237\344\272\244\344\272\222\347\232\204\344\270\200\344\272\233\345\270\270\347\224\250\345\272\223.md" @@ -201,6 +201,7 @@ flutter_html_textview|0.2.6|https://pub.dartlang.org/packages/flutter_html_textv 库名|版本号|链接|描述 -|-|-|- +flutter_markdown|0.1.3|https://github.com/flutter/flutter_markdown|官方的MarkDown库,它支持原始MarkDown格式,但没有内联Html格式。 markdown|2.0.0|https://pub.dartlang.org/packages/markdown|用Dart编写的便携式Markdown库。它可以在客户端和服务器上将Markdown解析为HTML。 html2md|0.1.7|https://pub.dartlang.org/packages/html2md|将html转换为Dart中的MarkDown. From 432c367f63ce60d800ab1141af59b45ea81c55e3 Mon Sep 17 00:00:00 2001 From: lzw <2497727771@qq.com> Date: Wed, 12 Sep 2018 17:58:55 +0800 Subject: [PATCH 02/97] update --- ...267\344\272\214\347\273\264\347\240\201.jpg" | Bin 0 -> 41355 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "pics/\345\205\254\344\274\227\345\217\267\344\272\214\347\273\264\347\240\201.jpg" diff --git "a/pics/\345\205\254\344\274\227\345\217\267\344\272\214\347\273\264\347\240\201.jpg" "b/pics/\345\205\254\344\274\227\345\217\267\344\272\214\347\273\264\347\240\201.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..d35a112171f0151f17ece30fa657e8d2df2dae68 GIT binary patch literal 41355 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 Date: Wed, 12 Sep 2018 18:01:44 +0800 Subject: [PATCH 03/97] Update README.md --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 6cbfbf5..5752ddc 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,17 @@ ![赞赏](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/donation.png?raw=true) +---- + +# 联系我 + +> 欢迎关注我的微信:`wei_xing_tian_xia` + +> 我的微信公众号也开通了,欢迎大家关注:`Flutter那些事`,扫码就可以关注了。 + +![我的微信公众号](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg?raw=true) + + ---- # Licence From 9045663960ad71bfb8c568ce7f9d996fd26e9402 Mon Sep 17 00:00:00 2001 From: AWeiLoveAndroid <2497727771@qq.com> Date: Sun, 16 Sep 2018 12:52:00 +0800 Subject: [PATCH 04/97] Create readme.md --- code_plugins/readme.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 code_plugins/readme.md diff --git a/code_plugins/readme.md b/code_plugins/readme.md new file mode 100644 index 0000000..8317a00 --- /dev/null +++ b/code_plugins/readme.md @@ -0,0 +1,25 @@ +# 使用说明 + +### 一、对于AS或者IDEA用户来说,只需要下载settings.jar就可以了。 + +> **注意事项:** + +``` + 1.不要对该文件进行任何修改,如果改坏了导入不进去或者导入之后无法正常使用,请重新下载settings.jar就可以了。 + 2.导入之后,如果发现快捷键无法正常使用,请看看你的AS或者IDEA的代码提示匹配设置是否正常。 + + 设置模糊匹配的步骤: + 点击菜单栏File --> Settings --> Editor --> General --> Code Completion --> + 在 Case sensitive completion 后面的选项改成NONE:进行模糊匹配。(First Letter:根据首字母进行匹配) +``` + +### 二、对于VSCode用户来说,请下载`dart.json`文件,然后复制到`C:\Users\Administrator\AppData\Roaming\Code\User\snippets`目录里面即可,如已经存在,请替换就OK。 + + +### 三、关于mac用户导入setting.jar出现的问题: + +---- + +更多精彩请打开微信搜索并关注公众号 `Flutter那些事`,或者扫描一下二维码关注公众号。 + +![](https://github.com/AweiLoveAndroid/Flutter-learning/raw/master/pics/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg?raw=true) From 75ad82664b9dd222925242a1d00ce86e9fe32f8e Mon Sep 17 00:00:00 2001 From: AWeiLoveAndroid <2497727771@qq.com> Date: Mon, 17 Sep 2018 10:19:37 +0800 Subject: [PATCH 05/97] update --- code_plugins/dart.json | 142 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 code_plugins/dart.json diff --git a/code_plugins/dart.json b/code_plugins/dart.json new file mode 100644 index 0000000..0a2dcc0 --- /dev/null +++ b/code_plugins/dart.json @@ -0,0 +1,142 @@ +{ + // Place your snippets for dart here. Each snippet is defined under a snippet name and has a prefix, body and + // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are: + // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the + // same ids are connected. + // Example: + // "Print to console": { + // "prefix": "log", + // "body": [ + // "console.log('$1');", + // "$2" + // ], + // "description": "Log output to console" + // }, + + "创建AnimatedBuilder": { + "prefix": "bab", + "body": [ + "new AnimatedBuilder(", + " animation: $1,", + " child: $1,", + " builder: (BuildContext context, Widget child) {", + " return Container();", + " },", + "),", + ], + "description": "创建AnimatedBuilder" + }, + "创建Build()方法": { + "prefix": "bu", + "body": [ + "@override", + "Widget build(BuildContext context) {", + " return $1;", + "}", + ], + "description": "创建Build()方法" + }, + "创建FutureBuilder": { + "prefix": "bufb", + "body": [ + "new FutureBuilder(", + " future: $1,", + " initialData: $1,", + " builder: (BuildContext context, AsyncSnapshot snapshot) {", + " return $1;", + " },", + ");", + ], + "description": "创建FutureBuilder" + }, + "创建LayoutBuilder": { + "prefix": "bulb", + "body": [ + "new LayoutBuilder(", + " builder: (BuildContext context, BoxConstraints constraints) {", + " return $1;", + " },", + ");", + ], + "description": "创建LayoutBuilder" + }, + "创建OrientationBuilder": { + "prefix": "buob", + "body": [ + "new OrientationBuilder(", + " builder: (BuildContext context, Orientation orientation) {", + " return Container();", + " },", + ");", + ], + "description": "创建OrientationBuilder" + }, + "创建StatefulBuilder": { + "prefix": "bustf", + "body": [ + "new StatefulBuilder(", + " builder: (BuildContext context, setState) {", + " return $1;", + " },", + ");", + ], + "description": "创建StatefulBuilder" + }, + "创建StreamBuilder": { + "prefix": "bustr", + "body": [ + "new StreamBuilder(", + " stream: $1,", + " initialData: $2,", + " builder: (BuildContext context, AsyncSnapshot snapshot) {", + " return $3;", + " },", + ");", + ], + "description": "创建StreamBuilder" + }, + "创建GridView.count": { + "prefix": "gv", + "body": [ + "new GridView.count(", + " // 创建几列", + " crossAxisCount: $1,", + " // Axis.horizontal表示横向滑动,scrollDirection: Axis.vertical表示纵向滑动", + " scrollDirection: Axis.vertical,", + " // 列之间的间距", + " crossAxisSpacing: $2,", + " // 行之间的间距", + " mainAxisSpacing: $3,", + " // 默认false 是否根据子孩子的宽高自动包裹item自身", + " shrinkWrap: false,", + " // true表示数据倒序排列 false表示顺序排列", + " reverse: false,", + " // 子孩子的比例", + " childAspectRatio: $4,", + " // 设置子孩子item,这里传入子孩子控件", + " children: $5,", + ");", + ], + "description": "创建GridView.count" + }, + "创建 Inherited": { + "prefix": "inh", + "body": [ + "class $1 extends InheritedWidget {", + " $1({Key key, this.child}) : super(key: key, child: child);", + "", + " final Widget child;", + "", + " static $1 of(BuildContext context) {", + " return (context.inheritFromWidgetOfExactType($1)as $1);", + " }", + "", + " @override", + " bool updateShouldNotify( $1 oldWidget) {", + " return true;", + " }", + "}", + ], + "description": "创建 Inherited" + }, +} \ No newline at end of file From b08d6d4cfd8886c4f6ee3cc11a5ff411a516e173 Mon Sep 17 00:00:00 2001 From: AWeiLoveAndroid <2497727771@qq.com> Date: Tue, 18 Sep 2018 00:06:17 +0800 Subject: [PATCH 06/97] update --- ...241\346\235\277\350\256\276\347\275\256.png" | Bin 0 -> 90647 bytes ...241\346\235\277\345\255\227\346\256\265.png" | Bin 0 -> 26547 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 "pics/Dart\347\232\204\346\250\241\346\235\277\350\256\276\347\275\256.png" create mode 100644 "pics/Dart\347\274\226\350\276\221\346\250\241\346\235\277\345\255\227\346\256\265.png" diff --git "a/pics/Dart\347\232\204\346\250\241\346\235\277\350\256\276\347\275\256.png" "b/pics/Dart\347\232\204\346\250\241\346\235\277\350\256\276\347\275\256.png" new file mode 100644 index 0000000000000000000000000000000000000000..bd5f8b06cf77615c0caacf6bae5d002d20e86da9 GIT binary patch literal 90647 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�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%0DHbK`_56xHS) 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 literal 0 HcmV?d00001 diff --git "a/pics/Dart\347\274\226\350\276\221\346\250\241\346\235\277\345\255\227\346\256\265.png" "b/pics/Dart\347\274\226\350\276\221\346\250\241\346\235\277\345\255\227\346\256\265.png" new file mode 100644 index 0000000000000000000000000000000000000000..15ea387dfd756ff7d7f502f699d3117c66c6c829 GIT binary patch literal 26547 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%0Dm<9j!3z0%| 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 LeMp76b=dy_QOO`U literal 0 HcmV?d00001 From 03ede2f34a294b98c4c9ab65c374f362e80a0ff8 Mon Sep 17 00:00:00 2001 From: AWeiLoveAndroid <2497727771@qq.com> Date: Tue, 18 Sep 2018 00:09:40 +0800 Subject: [PATCH 07/97] update --- code_plugins/readme.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/code_plugins/readme.md b/code_plugins/readme.md index 8317a00..13da3c3 100644 --- a/code_plugins/readme.md +++ b/code_plugins/readme.md @@ -1,3 +1,13 @@ +# 关于AS里面Dart模板的一些说明: + +> Dart模板基本组成部分 + +![Dart模板设置](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/Dart%E7%9A%84%E6%A8%A1%E6%9D%BF%E8%AE%BE%E7%BD%AE.png?raw=true) + +> Dart编辑模板字段 + +![Dart编辑模板字段](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/Dart%E7%BC%96%E8%BE%91%E6%A8%A1%E6%9D%BF%E5%AD%97%E6%AE%B5.png?raw=true) + # 使用说明 ### 一、对于AS或者IDEA用户来说,只需要下载settings.jar就可以了。 @@ -18,6 +28,8 @@ ### 三、关于mac用户导入setting.jar出现的问题: +**欢迎使用mac的朋友们都来帮忙完善** + ---- 更多精彩请打开微信搜索并关注公众号 `Flutter那些事`,或者扫描一下二维码关注公众号。 From b1df9209cfc52c6d98b99e37d8064584cdd09392 Mon Sep 17 00:00:00 2001 From: lzw <2497727771@qq.com> Date: Mon, 24 Sep 2018 01:51:26 +0800 Subject: [PATCH 08/97] update readme --- README-CN.md | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 110 +++++++++++++++++++++++++-------------------- pics/logo.png | Bin 0 -> 53334 bytes 3 files changed, 183 insertions(+), 47 deletions(-) create mode 100644 README-CN.md create mode 100644 pics/logo.png diff --git a/README-CN.md b/README-CN.md new file mode 100644 index 0000000..5752ddc --- /dev/null +++ b/README-CN.md @@ -0,0 +1,120 @@ +# Flutter-learning + +# 介绍 + +> 这个库主要是一些Flutter学习资料,个人总结,项目示例代码。如果你想快速学习Flutter,欢迎查看这个库,对你很有帮助的。喜欢的话就给个`Star`,谢谢。欢迎大家多提意见,帮忙完善这个库。如果有问题,欢迎提issue + +---- + +# 目录结构: + +## 一、自己总结的Flutter有关资料 + +* #### [Flutter基础全面详解](https://www.jianshu.com/p/2c9867e737a1) + +* #### [Flutter从配置安装到填坑指南详解](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E4%BB%8E%E9%85%8D%E7%BD%AE%E5%AE%89%E8%A3%85%E5%88%B0%E5%A1%AB%E5%9D%91%E6%8C%87%E5%8D%97%E8%AF%A6%E8%A7%A3.md) + +* #### [Flutter和原生Android控件对比](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8C%E5%8E%9F%E7%94%9FAndroid%E6%8E%A7%E4%BB%B6%E5%AF%B9%E6%AF%94.md) + +* #### [Dart语法](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Dart%E8%AF%AD%E6%B3%95.md) + +* #### [Flutter的需要与原生交互的一些常用库](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E7%9A%84%E9%9C%80%E8%A6%81%E4%B8%8E%E5%8E%9F%E7%94%9F%E4%BA%A4%E4%BA%92%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E5%BA%93.md) + +* #### [Flutter和react native的对比](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8Creact%20native%E7%9A%84%E5%AF%B9%E6%AF%94.md) + +* #### [yarn,nodejs,npm,Flutter有关命令](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/yarn%EF%BC%8Cnodejs%EF%BC%8Cnpm%EF%BC%8CFlutter%E6%9C%89%E5%85%B3%E5%91%BD%E4%BB%A4.md) + +* #### [我模仿Flutter中文官网写的一个本地的html页面,同时将官网的一些**未翻译的英文**页面**翻译**成了中文。](https://github.com/AweiLoveAndroid/FlutterWebsiteCN_Mine) + +* #### :+1: [Flutter代码模板插件,适用于AS以及IDEA](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/code_plugins) + +## 二、相关示例代码和项目实战 + +* #### [Flutter相关demo示例代码](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/flutter-demo) + + +* #### [Dart语法详解相关示例代码](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/dart_demo/test) + +* #### [自己封装的一个线性渐变工具类FractionalOffsetUtil.dart](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/projects/flutter-demo/util/FractionalOffsetUtil.dart) + +## 三、Flutter相关学习文档 + +* #### [Flutter相关译文](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E7%9B%B8%E5%85%B3%E8%AF%91%E6%96%87.md) + +* #### [Flutter有关博客详解](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E6%9C%89%E5%85%B3%E5%8D%9A%E5%AE%A2%E8%AE%B2%E8%A7%A3.md) + +* #### Flutter和其他平台的对比 + + * ##### [Android开发者快速上手Flutter参考知识点](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E8%AF%91%E6%96%87/Android%E5%BC%80%E5%8F%91%E8%80%85%E5%8F%82%E8%80%83.md) + + * ##### [Flutter和web开发的对比]() + + * ##### [Flutter和React Native的对比]() + +## 四、Flutter、Dart有关网站 + +#### ★ Flutter有关网站 + +##### :arrow_right: [Flutter官方文档 https://flutter.io/docs/](https://flutter.io/docs/) 官方主页,英文版。 + +##### :arrow_right: [Flutter中文版 http://doc.flutter-dev.cn/](http://doc.flutter-dev.cn/) 网友自制的中文网,翻译更新的比较快,基本跟官网同步,但是翻译的只有一部分。 + +##### :arrow_right: [Flutter中文网 https://flutterchina.club/](https://flutterchina.club/) 网友自制的中文网,内容翻译的比较多,但是内容还比较老,还没来得及更新最新内容。 + +##### :arrow_right: [Flutter中文官网 https://flutter-io.cn/](https://flutter-io.cn/) 官方的中文网,最新出来的,资料齐全,视频、博客、文档、最新咨询都有。 + +##### :arrow_right: [Flutter Github地址 https://github.com/flutter/flutter](https://github.com/flutter/flutter) + +#### ★ Dart有关网站 + +##### :arrow_right: [开源代码下载库 https://pub.dartlang.org/](https://pub.dartlang.org/) 三方库都可以在这里下载。 + +##### :arrow_right: [Dart语言官方主页 https://www.dartlang.org/](https://www.dartlang.org/) 官方主页,英文版。 + +##### :arrow_right: [国内最大的Dart语言中文社区 http://www.cndartlang.com/](http://www.cndartlang.com/) 这个网站有Flutter和Dart的学习资料,很全面。 + +##### :arrow_right: [Dart中文主页 https://www.dart-china.org/](https://www.dart-china.org/) Dart语言中文社区。 + +##### :arrow_right: [dart-pad Github地址 https://github.com/dart-lang/dart-pad](https://github.com/dart-lang/dart-pad) Dart语言的在线编辑器的源码。 + +##### :arrow_right: [DartPad在线编辑器 https://dartpad.dartlang.org/](https://dartpad.dartlang.org/) Dart语言的在线编辑器 + +---- + +# 赞赏 + +如果这个库对您有很大帮助,您愿意支持这个项目的进一步开发和这个项目的持续维护。你可以扫描下面的二维码,让我喝一杯咖啡或啤酒。非常感谢您的捐赠。谢谢! + +![赞赏](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/donation.png?raw=true) + + +---- + +# 联系我 + +> 欢迎关注我的微信:`wei_xing_tian_xia` + +> 我的微信公众号也开通了,欢迎大家关注:`Flutter那些事`,扫码就可以关注了。 + +![我的微信公众号](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg?raw=true) + + +---- + +# Licence + +``` +Copyright 2018,AWeiLoveAndroid,阿韦 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +``` diff --git a/README.md b/README.md index 5752ddc..1797dc0 100644 --- a/README.md +++ b/README.md @@ -1,103 +1,119 @@ # Flutter-learning -# 介绍 +README [English](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README.md)|[中文版请点击这里](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README-CN.md) -> 这个库主要是一些Flutter学习资料,个人总结,项目示例代码。如果你想快速学习Flutter,欢迎查看这个库,对你很有帮助的。喜欢的话就给个`Star`,谢谢。欢迎大家多提意见,帮忙完善这个库。如果有问题,欢迎提issue +[logo](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/logo.png?raw=true) + +# Introductions + +> This library is a collection of Flutter learning resources , summaries, and sample codes. If you want to learn Flutter quickly, check out this library, because this library is very helpful for you. If you like, you can give a `star`.Thank you! Welcome to comment and help improve this library. If you have any questions, please pull issue. + +![](https://img.shields.io/badge/platform-android-lightgreen.svg)![](https://img.shields.io/badge/platform-ios-lightgreen.svg) ---- -# 目录结构: +# Catalog -## 一、自己总结的Flutter有关资料 +## 1、Flutter Resources -* #### [Flutter基础全面详解](https://www.jianshu.com/p/2c9867e737a1) +* #### [Flutter basis](https://www.jianshu.com/p/2c9867e737a1) -* #### [Flutter从配置安装到填坑指南详解](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E4%BB%8E%E9%85%8D%E7%BD%AE%E5%AE%89%E8%A3%85%E5%88%B0%E5%A1%AB%E5%9D%91%E6%8C%87%E5%8D%97%E8%AF%A6%E8%A7%A3.md) +* #### [Flutter tools,install and wtf problems](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E4%BB%8E%E9%85%8D%E7%BD%AE%E5%AE%89%E8%A3%85%E5%88%B0%E5%A1%AB%E5%9D%91%E6%8C%87%E5%8D%97%E8%AF%A6%E8%A7%A3.md) -* #### [Flutter和原生Android控件对比](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8C%E5%8E%9F%E7%94%9FAndroid%E6%8E%A7%E4%BB%B6%E5%AF%B9%E6%AF%94.md) +* #### [Flutter widgets VS Android widgets](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8C%E5%8E%9F%E7%94%9FAndroid%E6%8E%A7%E4%BB%B6%E5%AF%B9%E6%AF%94.md) -* #### [Dart语法](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Dart%E8%AF%AD%E6%B3%95.md) +* #### [Dart languages](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Dart%E8%AF%AD%E6%B3%95.md) -* #### [Flutter的需要与原生交互的一些常用库](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E7%9A%84%E9%9C%80%E8%A6%81%E4%B8%8E%E5%8E%9F%E7%94%9F%E4%BA%A4%E4%BA%92%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E5%BA%93.md) +* #### [Widely used libraries in Flutter](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E7%9A%84%E9%9C%80%E8%A6%81%E4%B8%8E%E5%8E%9F%E7%94%9F%E4%BA%A4%E4%BA%92%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E5%BA%93.md) -* #### [Flutter和react native的对比](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8Creact%20native%E7%9A%84%E5%AF%B9%E6%AF%94.md) +* #### [Flutter widgets VS react native widgets](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8Creact%20native%E7%9A%84%E5%AF%B9%E6%AF%94.md) -* #### [yarn,nodejs,npm,Flutter有关命令](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/yarn%EF%BC%8Cnodejs%EF%BC%8Cnpm%EF%BC%8CFlutter%E6%9C%89%E5%85%B3%E5%91%BD%E4%BB%A4.md) +* #### [Commands of yarn,nodejs,npm & Flutter](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/yarn%EF%BC%8Cnodejs%EF%BC%8Cnpm%EF%BC%8CFlutter%E6%9C%89%E5%85%B3%E5%91%BD%E4%BB%A4.md) -* #### [我模仿Flutter中文官网写的一个本地的html页面,同时将官网的一些**未翻译的英文**页面**翻译**成了中文。](https://github.com/AweiLoveAndroid/FlutterWebsiteCN_Mine) +* #### [Flutter Chinese Website, written by me(Imitate flutter.io)](https://github.com/AweiLoveAndroid/FlutterWebsiteCN_Mine) -* #### :+1: [Flutter代码模板插件,适用于AS以及IDEA](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/code_plugins) +* #### :+1: [Flutter code template plugin for Android Studio, IDEA & VSCode](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/code_plugins) -## 二、相关示例代码和项目实战 +## 2、Sample codes and projects -* #### [Flutter相关demo示例代码](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/flutter-demo) +* #### [Flutter demo codes](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/flutter-demo) -* #### [Dart语法详解相关示例代码](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/dart_demo/test) +* #### [Dart grammar codes](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/dart_demo/test) -* #### [自己封装的一个线性渐变工具类FractionalOffsetUtil.dart](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/projects/flutter-demo/util/FractionalOffsetUtil.dart) +* #### [FractionalOffsetUtil.dart](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/projects/flutter-demo/util/FractionalOffsetUtil.dart) -## 三、Flutter相关学习文档 +## 3、Flutter documents -* #### [Flutter相关译文](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E7%9B%B8%E5%85%B3%E8%AF%91%E6%96%87.md) +* #### [Flutter translations](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E7%9B%B8%E5%85%B3%E8%AF%91%E6%96%87.md) -* #### [Flutter有关博客详解](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E6%9C%89%E5%85%B3%E5%8D%9A%E5%AE%A2%E8%AE%B2%E8%A7%A3.md) +* #### [Flutter blogs](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E6%9C%89%E5%85%B3%E5%8D%9A%E5%AE%A2%E8%AE%B2%E8%A7%A3.md) -* #### Flutter和其他平台的对比 +* #### Comparison of Flutter and other platforms - * ##### [Android开发者快速上手Flutter参考知识点](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E8%AF%91%E6%96%87/Android%E5%BC%80%E5%8F%91%E8%80%85%E5%8F%82%E8%80%83.md) + * ##### [Flutter for Android developers](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E8%AF%91%E6%96%87/Android%E5%BC%80%E5%8F%91%E8%80%85%E5%8F%82%E8%80%83.md) - * ##### [Flutter和web开发的对比]() + * ##### [Flutter for Android developers]() - * ##### [Flutter和React Native的对比]() + * ##### [Flutter for React Native developers]() -## 四、Flutter、Dart有关网站 +## 4、Websites for Flutter & Dart -#### ★ Flutter有关网站 +#### ★ About Flutter Websites -##### :arrow_right: [Flutter官方文档 https://flutter.io/docs/](https://flutter.io/docs/) 官方主页,英文版。 +##### :arrow_right: [Flutter Website https://flutter.io/docs/](https://flutter.io/docs/) +Official website,English language. -##### :arrow_right: [Flutter中文版 http://doc.flutter-dev.cn/](http://doc.flutter-dev.cn/) 网友自制的中文网,翻译更新的比较快,基本跟官网同步,但是翻译的只有一部分。 +##### :arrow_right: [Flutter Chinese official website https://flutter-io.cn/](https://flutter-io.cn/) +It's new, you can find videos,blogs,docs & codelabs in it.It is very comprehensive. -##### :arrow_right: [Flutter中文网 https://flutterchina.club/](https://flutterchina.club/) 网友自制的中文网,内容翻译的比较多,但是内容还比较老,还没来得及更新最新内容。 +##### :arrow_right: [Flutter Website for China http://doc.flutter-dev.cn/](http://doc.flutter-dev.cn/) +Chinese websites made by Chinese developers. This website is updated faster, and almost sync with the official website, But the translation is rarely. -##### :arrow_right: [Flutter中文官网 https://flutter-io.cn/](https://flutter-io.cn/) 官方的中文网,最新出来的,资料齐全,视频、博客、文档、最新咨询都有。 +##### :arrow_right: [Flutter Website for China https://flutterchina.club/](https://flutterchina.club/) +Chinese websites made by Chinese developers. This website is updated more slowly, but the translation is very comprehensive. -##### :arrow_right: [Flutter Github地址 https://github.com/flutter/flutter](https://github.com/flutter/flutter) -#### ★ Dart有关网站 +##### :arrow_right: [Flutter Github https://github.com/flutter/flutter(https://github.com/flutter/flutter) +Flutter open source code,you can find sources and samples form github. -##### :arrow_right: [开源代码下载库 https://pub.dartlang.org/](https://pub.dartlang.org/) 三方库都可以在这里下载。 +#### ★ About Dart Websites -##### :arrow_right: [Dart语言官方主页 https://www.dartlang.org/](https://www.dartlang.org/) 官方主页,英文版。 +##### :arrow_right: [Dart Open source code libraries https://pub.dartlang.org/](https://pub.dartlang.org/) +You can download Dart libraries here.Also You can upload open source library to `https://pub.dartlang.org`. -##### :arrow_right: [国内最大的Dart语言中文社区 http://www.cndartlang.com/](http://www.cndartlang.com/) 这个网站有Flutter和Dart的学习资料,很全面。 +##### :arrow_right: [Dart website https://www.dartlang.org/](https://www.dartlang.org/) +Official website,English language. -##### :arrow_right: [Dart中文主页 https://www.dart-china.org/](https://www.dart-china.org/) Dart语言中文社区。 +##### :arrow_right: [The largest Dart language Chinese community in China http://www.cndartlang.com/](http://www.cndartlang.com/) +The website contains a lot of learning materials for Flutter and Dart. -##### :arrow_right: [dart-pad Github地址 https://github.com/dart-lang/dart-pad](https://github.com/dart-lang/dart-pad) Dart语言的在线编辑器的源码。 +##### :arrow_right: [Dart website for China https://www.dart-china.org/](https://www.dart-china.org/) +Dart language Chinese community.,it's another website for dart. -##### :arrow_right: [DartPad在线编辑器 https://dartpad.dartlang.org/](https://dartpad.dartlang.org/) Dart语言的在线编辑器 +##### :arrow_right: [dart-pad Github https://github.com/dart-lang/dart-pad](https://github.com/dart-lang/dart-pad) +Source code for the online editor for the Dart language. ----- +##### :arrow_right: [DartPad online editor https://dartpad.dartlang.org/](https://dartpad.dartlang.org/) +Dart language online editor -# 赞赏 +---- -如果这个库对您有很大帮助,您愿意支持这个项目的进一步开发和这个项目的持续维护。你可以扫描下面的二维码,让我喝一杯咖啡或啤酒。非常感谢您的捐赠。谢谢! +# Donation -![赞赏](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/donation.png?raw=true) +> If this library is very helpful to you, you are willing to support the further development of this project and the continuous maintenance of this project. You can scan the following QR code, let me have a cup of coffee or beer. Thank you very much for your donation. Thank you! +![donation](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/donation.png?raw=true) ---- -# 联系我 - -> 欢迎关注我的微信:`wei_xing_tian_xia` +# About me -> 我的微信公众号也开通了,欢迎大家关注:`Flutter那些事`,扫码就可以关注了。 +> Wechat:`wei_xing_tian_xia` -![我的微信公众号](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg?raw=true) +> Wechat public account :`Flutter那些事` , For further information, please scan the QR code below to follow us. +![Wechat public account](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg?raw=true) ---- diff --git a/pics/logo.png b/pics/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5f5ce95cfd3aef475d7839cae4b0bd6bf0d644b9 GIT binary patch literal 53334 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 Date: Mon, 24 Sep 2018 02:02:08 +0800 Subject: [PATCH 09/97] update readme --- README-CN.md | 50 +++++++++++++++++++++++++++++++++++--------------- README.md | 38 +++++++++++++++++++++++--------------- 2 files changed, 58 insertions(+), 30 deletions(-) diff --git a/README-CN.md b/README-CN.md index 5752ddc..95ebd00 100644 --- a/README-CN.md +++ b/README-CN.md @@ -1,5 +1,10 @@ # Flutter-learning +#### README [English](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README.md)|[中文版请点击这里](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README-CN.md) + +![logo](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/logo.png?raw=true) + + # 介绍 > 这个库主要是一些Flutter学习资料,个人总结,项目示例代码。如果你想快速学习Flutter,欢迎查看这个库,对你很有帮助的。喜欢的话就给个`Star`,谢谢。欢迎大家多提意见,帮忙完善这个库。如果有问题,欢迎提issue @@ -28,6 +33,8 @@ * #### :+1: [Flutter代码模板插件,适用于AS以及IDEA](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/code_plugins) +---- + ## 二、相关示例代码和项目实战 * #### [Flutter相关demo示例代码](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/flutter-demo) @@ -37,6 +44,8 @@ * #### [自己封装的一个线性渐变工具类FractionalOffsetUtil.dart](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/projects/flutter-demo/util/FractionalOffsetUtil.dart) +---- + ## 三、Flutter相关学习文档 * #### [Flutter相关译文](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E7%9B%B8%E5%85%B3%E8%AF%91%E6%96%87.md) @@ -51,33 +60,46 @@ * ##### [Flutter和React Native的对比]() +---- + ## 四、Flutter、Dart有关网站 -#### ★ Flutter有关网站 +### ★ Flutter有关网站 -##### :arrow_right: [Flutter官方文档 https://flutter.io/docs/](https://flutter.io/docs/) 官方主页,英文版。 +##### :arrow_right: [Flutter官方文档 https://flutter.io/docs/](https://flutter.io/docs/) +官方主页,英文版。 -##### :arrow_right: [Flutter中文版 http://doc.flutter-dev.cn/](http://doc.flutter-dev.cn/) 网友自制的中文网,翻译更新的比较快,基本跟官网同步,但是翻译的只有一部分。 +##### :arrow_right: [Flutter中文官网 https://flutter-io.cn/](https://flutter-io.cn/) +官方的中文网,最新出来的,资料齐全,视频、博客、文档、最新咨询都有。 -##### :arrow_right: [Flutter中文网 https://flutterchina.club/](https://flutterchina.club/) 网友自制的中文网,内容翻译的比较多,但是内容还比较老,还没来得及更新最新内容。 +##### :arrow_right: [Flutter中文版 http://doc.flutter-dev.cn/](http://doc.flutter-dev.cn/) +网友自制的中文网,翻译更新的比较快,基本跟官网同步,但是翻译的只有一部分。 -##### :arrow_right: [Flutter中文官网 https://flutter-io.cn/](https://flutter-io.cn/) 官方的中文网,最新出来的,资料齐全,视频、博客、文档、最新咨询都有。 +##### :arrow_right: [Flutter中文网 https://flutterchina.club/](https://flutterchina.club/) +网友自制的中文网,内容翻译的比较多,但是内容还比较老,还没来得及更新最新内容。 -##### :arrow_right: [Flutter Github地址 https://github.com/flutter/flutter](https://github.com/flutter/flutter) +##### :arrow_right: [Flutter Github地址 https://github.com/flutter/flutter](https://github.com/flutter/flutter) +Flutter开源库,上面有源码和示例项目。 -#### ★ Dart有关网站 +### ★ Dart有关网站 -##### :arrow_right: [开源代码下载库 https://pub.dartlang.org/](https://pub.dartlang.org/) 三方库都可以在这里下载。 +##### :arrow_right: [开源代码下载库 https://pub.dartlang.org/](https://pub.dartlang.org/) +三方库都可以在这里下载。 -##### :arrow_right: [Dart语言官方主页 https://www.dartlang.org/](https://www.dartlang.org/) 官方主页,英文版。 +##### :arrow_right: [Dart语言官方主页 https://www.dartlang.org/](https://www.dartlang.org/) +官方主页,英文版。 -##### :arrow_right: [国内最大的Dart语言中文社区 http://www.cndartlang.com/](http://www.cndartlang.com/) 这个网站有Flutter和Dart的学习资料,很全面。 +##### :arrow_right: [国内最大的Dart语言中文社区 http://www.cndartlang.com/](http://www.cndartlang.com/) +这个网站有Flutter和Dart的学习资料,很全面。 -##### :arrow_right: [Dart中文主页 https://www.dart-china.org/](https://www.dart-china.org/) Dart语言中文社区。 +##### :arrow_right: [Dart中文主页 https://www.dart-china.org/](https://www.dart-china.org/) +Dart语言中文社区。 -##### :arrow_right: [dart-pad Github地址 https://github.com/dart-lang/dart-pad](https://github.com/dart-lang/dart-pad) Dart语言的在线编辑器的源码。 +##### :arrow_right: [dart-pad Github地址 https://github.com/dart-lang/dart-pad](https://github.com/dart-lang/dart-pad) +Dart语言的在线编辑器的源码。 -##### :arrow_right: [DartPad在线编辑器 https://dartpad.dartlang.org/](https://dartpad.dartlang.org/) Dart语言的在线编辑器 +##### :arrow_right: [DartPad在线编辑器 https://dartpad.dartlang.org/](https://dartpad.dartlang.org/) +Dart语言的在线编辑器 ---- @@ -87,7 +109,6 @@ ![赞赏](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/donation.png?raw=true) - ---- # 联系我 @@ -98,7 +119,6 @@ ![我的微信公众号](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg?raw=true) - ---- # Licence diff --git a/README.md b/README.md index 1797dc0..e91f056 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ # Flutter-learning -README [English](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README.md)|[中文版请点击这里](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README-CN.md) +#### README [English](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README.md)|[中文版请点击这里](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README-CN.md) + + +![logo](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/logo.png?raw=true) -[logo](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/logo.png?raw=true) # Introductions @@ -34,6 +36,8 @@ README [English](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master * #### :+1: [Flutter code template plugin for Android Studio, IDEA & VSCode](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/code_plugins) +---- + ## 2、Sample codes and projects * #### [Flutter demo codes](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/flutter-demo) @@ -43,6 +47,8 @@ README [English](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master * #### [FractionalOffsetUtil.dart](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/projects/flutter-demo/util/FractionalOffsetUtil.dart) +---- + ## 3、Flutter documents * #### [Flutter translations](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E7%9B%B8%E5%85%B3%E8%AF%91%E6%96%87.md) @@ -57,45 +63,47 @@ README [English](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master * ##### [Flutter for React Native developers]() +---- + ## 4、Websites for Flutter & Dart -#### ★ About Flutter Websites +### ★ About Flutter Websites ##### :arrow_right: [Flutter Website https://flutter.io/docs/](https://flutter.io/docs/) -Official website,English language. + Official website,English language. ##### :arrow_right: [Flutter Chinese official website https://flutter-io.cn/](https://flutter-io.cn/) -It's new, you can find videos,blogs,docs & codelabs in it.It is very comprehensive. + It's new, you can find videos,blogs,docs & codelabs in it.It is very comprehensive. ##### :arrow_right: [Flutter Website for China http://doc.flutter-dev.cn/](http://doc.flutter-dev.cn/) -Chinese websites made by Chinese developers. This website is updated faster, and almost sync with the official website, But the translation is rarely. + Chinese websites made by Chinese developers. This website is updated faster, and almost sync with the official website, But the translation is rarely. ##### :arrow_right: [Flutter Website for China https://flutterchina.club/](https://flutterchina.club/) -Chinese websites made by Chinese developers. This website is updated more slowly, but the translation is very comprehensive. + Chinese websites made by Chinese developers. This website is updated more slowly, but the translation is very comprehensive. ##### :arrow_right: [Flutter Github https://github.com/flutter/flutter(https://github.com/flutter/flutter) -Flutter open source code,you can find sources and samples form github. + Flutter open source code,you can find sources and samples form github. -#### ★ About Dart Websites +### ★ About Dart Websites ##### :arrow_right: [Dart Open source code libraries https://pub.dartlang.org/](https://pub.dartlang.org/) -You can download Dart libraries here.Also You can upload open source library to `https://pub.dartlang.org`. + You can download Dart libraries here.Also You can upload open source library to `https://pub.dartlang.org`. ##### :arrow_right: [Dart website https://www.dartlang.org/](https://www.dartlang.org/) -Official website,English language. + Official website,English language. ##### :arrow_right: [The largest Dart language Chinese community in China http://www.cndartlang.com/](http://www.cndartlang.com/) -The website contains a lot of learning materials for Flutter and Dart. + The website contains a lot of learning materials for Flutter and Dart. ##### :arrow_right: [Dart website for China https://www.dart-china.org/](https://www.dart-china.org/) -Dart language Chinese community.,it's another website for dart. + Dart language Chinese community.,it's another website for dart. ##### :arrow_right: [dart-pad Github https://github.com/dart-lang/dart-pad](https://github.com/dart-lang/dart-pad) -Source code for the online editor for the Dart language. + Source code for the online editor for the Dart language. ##### :arrow_right: [DartPad online editor https://dartpad.dartlang.org/](https://dartpad.dartlang.org/) -Dart language online editor + Dart language online editor ---- From 335f6c1e3b9e7e7e342911b9b45ae6cb3fb80d3e Mon Sep 17 00:00:00 2001 From: AWeiLoveAndroid <2497727771@qq.com> Date: Mon, 8 Oct 2018 13:13:13 +0800 Subject: [PATCH 10/97] =?UTF-8?q?Update=20Flutter=E5=92=8C=E5=8E=9F?= =?UTF-8?q?=E7=94=9FAndroid=E6=8E=A7=E4=BB=B6=E5=AF=B9=E6=AF=94.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...16\247\344\273\266\345\257\271\346\257\224.md" | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git "a/readme/Flutter\345\222\214\345\216\237\347\224\237Android\346\216\247\344\273\266\345\257\271\346\257\224.md" "b/readme/Flutter\345\222\214\345\216\237\347\224\237Android\346\216\247\344\273\266\345\257\271\346\257\224.md" index 32d3868..d1e0b38 100644 --- "a/readme/Flutter\345\222\214\345\216\237\347\224\237Android\346\216\247\344\273\266\345\257\271\346\257\224.md" +++ "b/readme/Flutter\345\222\214\345\216\237\347\224\237Android\346\216\247\344\273\266\345\257\271\346\257\224.md" @@ -29,29 +29,30 @@ Image里面的BoxFit参数介绍:(相当于Android的ImageView的scaleType // fill 通过篡改原始宽高比来填充目标box -![](https://flutter.github.io/assets-for-api-docs/painting/box_fit_fill.png) +![](https://flutter.github.io/assets-for-api-docs/assets/painting/box_fit_fill.png) + /// contain 在尽可能大的情况下,仍然将源完全包含在目标框中。 -![](https://flutter.github.io/assets-for-api-docs/painting/box_fit_contain.png) +![](https://flutter.github.io/assets-for-api-docs/assets/painting/box_fit_contain.png) /// cover 尽可能小,同时仍然覆盖整个目标框。 -![](https://flutter.github.io/assets-for-api-docs/painting/box_fit_cover.png) +![](https://flutter.github.io/assets-for-api-docs/assets/painting/box_fit_cover.png) /// fitWidth 确保显示源的全部宽度,而不管这是否意味着源垂直溢出目标框。 -![](https://flutter.github.io/assets-for-api-docs/painting/box_fit_fitWidth.png) +![](https://flutter.github.io/assets-for-api-docs/assets/painting/box_fit_fitWidth.png) /// fitHeight 确保显示源的全部高度,而不管这是否意味着源水平地溢出目标框。 -![](https://flutter.github.io/assets-for-api-docs/painting/box_fit_fitHeight.png) +![](https://flutter.github.io/assets-for-api-docs/assets/painting/box_fit_fitHeight.png) /// none 在目标框中对齐源(默认为居中),并放弃位于框外的源的任何部分。源图像未调整大小。 -![](https://flutter.github.io/assets-for-api-docs/painting/box_fit_none.png) +![](https://flutter.github.io/assets-for-api-docs/assets/painting/box_fit_none.png) /// scaleDown 在目标框中对齐源(默认为居中),如果需要,将源缩小以确保源适合该框。这与contain的内容相同,如果该内容会收缩图像,那么它就是none。 -![](https://flutter.github.io/assets-for-api-docs/painting/box_fit_scaleDown.png) +![](https://flutter.github.io/assets-for-api-docs/assets/painting/box_fit_scaleDown.png) From 5245576eae96503c3709a6fbe5710baf1b545447 Mon Sep 17 00:00:00 2001 From: AWeiLoveAndroid <2497727771@qq.com> Date: Mon, 8 Oct 2018 16:29:11 +0800 Subject: [PATCH 11/97] =?UTF-8?q?Update=20Flutter=E7=9A=84=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E4=B8=8E=E5=8E=9F=E7=94=9F=E4=BA=A4=E4=BA=92=E7=9A=84?= =?UTF-8?q?=E4=B8=80=E4=BA=9B=E5=B8=B8=E7=94=A8=E5=BA=93.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\270\200\344\272\233\345\270\270\347\224\250\345\272\223.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/readme/Flutter\347\232\204\351\234\200\350\246\201\344\270\216\345\216\237\347\224\237\344\272\244\344\272\222\347\232\204\344\270\200\344\272\233\345\270\270\347\224\250\345\272\223.md" "b/readme/Flutter\347\232\204\351\234\200\350\246\201\344\270\216\345\216\237\347\224\237\344\272\244\344\272\222\347\232\204\344\270\200\344\272\233\345\270\270\347\224\250\345\272\223.md" index 207152d..e8be7a2 100644 --- "a/readme/Flutter\347\232\204\351\234\200\350\246\201\344\270\216\345\216\237\347\224\237\344\272\244\344\272\222\347\232\204\344\270\200\344\272\233\345\270\270\347\224\250\345\272\223.md" +++ "b/readme/Flutter\347\232\204\351\234\200\350\246\201\344\270\216\345\216\237\347\224\237\344\272\244\344\272\222\347\232\204\344\270\200\344\272\233\345\270\270\347\224\250\345\272\223.md" @@ -308,7 +308,7 @@ event_bus|0.4.1|https://pub.dartlang.org/packages/event_bus|一个使用Dart流 库名|版本号|链接|描述 -|-|-|- -video_player|0.6.0|https://pub.dartlang.org/packages/video_player|用于在Android和iOS上与其他Flutter窗口小部件一起显示内嵌视频。 +video_player|0.6.5|https://pub.dartlang.org/packages/video_player|Flutter官方的视频库(也可以用于直播),用于在Android和iOS上与其他Flutter窗口小部件一起显示内嵌视频。**支持主流直播流**。该库底层使用的ExoPlayer播放器。更多关于ExoPlayer播放器支持的视频格式资料请看官方文档[ExoPlayer播放器支持的视频格式](https://google.github.io/ExoPlayer/supported-formats.html) video_launcher|0.3.0|https://pub.dartlang.org/packages/video_launcher|视频播放器 flute_music_player|0.0.6|https://pub.dartlang.org/packages/flute_music_player|基于Flutter的材料设计音乐播放器与音频插件播放本地音乐文件. audioplayer|0.5.0|https://pub.dartlang.org/packages/audioplayer|一个播放远程或本地音频文件Flutter音频插件 From c1d90470b41e1e63b9a9e505c1f8e59581bdd2ff Mon Sep 17 00:00:00 2001 From: lzw <2497727771@qq.com> Date: Fri, 16 Nov 2018 18:50:33 +0800 Subject: [PATCH 12/97] update --- .../lib/all_samples/router/readme.md | 12 ++ .../router_all_sample/router_sample1.dart | 52 ++++++++ .../router_all_sample/router_sample2.dart | 52 ++++++++ .../router_all_sample/router_sample3.dart | 65 ++++++++++ .../router_all_sample/router_sample4.dart | 74 ++++++++++++ .../router_all_sample/router_sample5.dart | 111 ++++++++++++++++++ .../{ => router_easy_sample}/demo1.dart | 0 .../{ => router_easy_sample}/demo2.dart | 0 .../{ => router_easy_sample}/demo3.dart | 0 .../{ => router_easy_sample}/demo4.dart | 0 .../{ => router_easy_sample}/router_demo.dart | 0 projects/flutter-demo/lib/readme.md | 13 +- 12 files changed, 373 insertions(+), 6 deletions(-) create mode 100644 projects/flutter-demo/lib/all_samples/router/readme.md create mode 100644 projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample1.dart create mode 100644 projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample2.dart create mode 100644 projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample3.dart create mode 100644 projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample4.dart create mode 100644 projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample5.dart rename projects/flutter-demo/lib/all_samples/router/{ => router_easy_sample}/demo1.dart (100%) rename projects/flutter-demo/lib/all_samples/router/{ => router_easy_sample}/demo2.dart (100%) rename projects/flutter-demo/lib/all_samples/router/{ => router_easy_sample}/demo3.dart (100%) rename projects/flutter-demo/lib/all_samples/router/{ => router_easy_sample}/demo4.dart (100%) rename projects/flutter-demo/lib/all_samples/router/{ => router_easy_sample}/router_demo.dart (100%) diff --git a/projects/flutter-demo/lib/all_samples/router/readme.md b/projects/flutter-demo/lib/all_samples/router/readme.md new file mode 100644 index 0000000..3cef86f --- /dev/null +++ b/projects/flutter-demo/lib/all_samples/router/readme.md @@ -0,0 +1,12 @@ +# 路由使用Demo + + + +> **router_easy_sample** 这个是路由的简单实用。只需要运行`router_demo.dart`即可打开其他4个页面。 + + + +> **router_all_sample** 这个是路由的完整使用示例。这个是**公众号Flutter那些事**文章的完整示例。建议看这个。每一个dart文件都是可以单独运行的。 + + + diff --git a/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample1.dart b/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample1.dart new file mode 100644 index 0000000..a0d8d75 --- /dev/null +++ b/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample1.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; + +// 使用Navigator.push实现发送路由,Navigator.pop返回上一个页面。 +void main() { + runApp( + new MaterialApp( + title: 'Flutter 路由Demo', + theme: new ThemeData(primarySwatch: Colors.blue), + home: new MyHomePage(), + ), + ); +} + +class MyHomePage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return new Scaffold( + appBar: new AppBar(title: new Text('Flutter 路由Demo')), + body: new RaisedButton( + color: Colors.teal, + onPressed: () { + Navigator.push( + context, + new MaterialPageRoute( + builder: (context) => new MyApp(), + ), + ); + }, + child: new Text( + '跳转到下一个页面', + ), + ), + ); + } +} + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return new Scaffold( + appBar: new AppBar( + title: new Text('Flutter 路由Demo'), + ), + body: new RaisedButton( + onPressed: () { + Navigator.pop(context); + }, + child: new Text('返回上一个页面'), + ), + ); + } +} diff --git a/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample2.dart b/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample2.dart new file mode 100644 index 0000000..c4d08da --- /dev/null +++ b/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample2.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; + +// 使用命名路由进行导航 +void main() { + runApp( + new MaterialApp( + title: 'Flutter 路由Demo', + theme: new ThemeData(primarySwatch: Colors.blue), + home: new MyHomePage(), + initialRoute: '/page_one', + routes: { + '/page_one': (context) => new MyHomePage(), + '/jump_page_two': (context) => new MyApp(), + }, + ), + ); +} + +class MyHomePage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return new Scaffold( + appBar: new AppBar(title: new Text('Flutter 路由Demo')), + body: new RaisedButton( + color: Colors.teal, + onPressed: () { + Navigator.pushNamed(context, '/jump_page_two'); + }, + child: new Text( + '跳转到下一个页面', + ), + ), + ); + } +} + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return new Scaffold( + appBar: new AppBar( + title: new Text('Flutter 路由Demo'), + ), + body: new RaisedButton( + onPressed: () { + Navigator.pop(context); + }, + child: new Text('返回上一个页面'), + ), + ); + } +} diff --git a/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample3.dart b/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample3.dart new file mode 100644 index 0000000..65e06ec --- /dev/null +++ b/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample3.dart @@ -0,0 +1,65 @@ +import 'package:flutter/material.dart'; + +// 通过路由将数据传递给另一个页面 +void main() { + runApp( + new MaterialApp( + title: 'Flutter 路由Demo', + theme: new ThemeData(primarySwatch: Colors.blue), + home: new MyHomePage(), + ), + ); +} + +class MyHomePage extends StatelessWidget { + final List datas = ["橘子", "苹果", "香蕉", "柚子"]; + + @override + Widget build(BuildContext context) { + return new Scaffold( + appBar: new AppBar(title: new Text('Flutter 路由Demo')), + body: new RaisedButton( + color: Colors.teal, + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + // 路由跳转 并向新页面传递数组 + builder: (context) => MyApp(data: datas), + ), + ); + }, + child: new Text( + '跳转到下一个页面', + ), + ), + ); + } +} + +class MyApp extends StatelessWidget { + final List data; + + MyApp({Key key, @required this.data}) : super(key: key); + + @override + Widget build(BuildContext context) { + String tempData = ""; + + data.forEach((String data) { + tempData += data; + }); + + return new Scaffold( + appBar: new AppBar( + title: new Text(tempData), + ), + body: new RaisedButton( + onPressed: () { + Navigator.pop(context); + }, + child: new Text('返回上一个页面'), + ), + ); + } +} diff --git a/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample4.dart b/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample4.dart new file mode 100644 index 0000000..cb1a080 --- /dev/null +++ b/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample4.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; + +// 发送路由,并接收从其他页面返回数据 +void main() { + runApp( + MaterialApp( + title: 'Flutter发送路由并返回数据Demo', + home: HomePage(), + ), + ); +} + +// 页面A +class HomePage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text( + 'Flutter发送路由并返回数据Demo', + style: new TextStyle(fontSize: 15), + ), + ), + body: new MyHomePage(), + ); + } +} + +class MyHomePage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return RaisedButton( + color: Colors.teal, + onPressed: () { + _navigateAndDisplaySelection(context); + }, + child: Text('跳转到下一个页面'), + ); + } + + // 封装函数用来发送路由和接收路由返回的数据 + _navigateAndDisplaySelection(BuildContext context) async { + // 获取路由返回的数据 + final result = await Navigator.push( + context, + // 通过路由把数据发给另一个页面 + MaterialPageRoute(builder: (context) => MyApp()), + ); + + // 把收到的数据用SnackBar显示出来 + Scaffold.of(context).showSnackBar(SnackBar(content: Text("$result"))); + } +} + +// 页面B +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text( + "页面2", + style: new TextStyle(fontSize: 15), + ), + ), + body: new RaisedButton( + onPressed: () { + Navigator.pop(context, '这是页面B给页面A发的数据'); + }, + child: Text('点击返回到页面A'), + ), + ); + } +} diff --git a/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample5.dart b/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample5.dart new file mode 100644 index 0000000..578e3e8 --- /dev/null +++ b/projects/flutter-demo/lib/all_samples/router/router_all_sample/router_sample5.dart @@ -0,0 +1,111 @@ +import 'package:flutter/material.dart'; + +// 发送路由并接收返回的数据 +void main() { + runApp( + MaterialApp( + title: 'Flutter发送路由并返回数据Demo', + home: HomePage(), + ), + ); +} + +// 页面A +// 我们去掉MyHomePage 直接在body属性里面声明具体组件,看看效果 +class HomePage extends StatelessWidget { + // 要发送出去的数据源 + final List datas = ["橘子", "苹果", "香蕉", "柚子"]; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text( + 'Flutter发送路由并返回数据Demo', + style: new TextStyle(fontSize: 15), + ), + ), + body: new RaisedButton( + color: Colors.teal, + onPressed: () { + _navigateAndDisplaySelection(context); + }, + child: Text('跳转到下一个页面'), + ), + ); + } + + // 封装函数用来发送路由和接收路由返回的数据 + _navigateAndDisplaySelection(BuildContext context) async { + // 获取路由返回的数据 + final result = await Navigator.push( + context, + // 通过路由把数据发给另一个页面 + MaterialPageRoute(builder: (context) => MyApp(data: datas)), + ); + + // 把收到的数据用SnackBar显示出来 + Scaffold.of(context).showSnackBar(SnackBar(content: Text("$result"))); + } +} + +// 页面A +//class MyHomePage extends StatelessWidget { +// // 要发送出去的数据源 +// final List datas = ["橘子", "苹果", "香蕉", "柚子"]; +// +// @override +// Widget build(BuildContext context) { +// return RaisedButton( +// color: Colors.teal, +// onPressed: () { +// _navigateAndDisplaySelection(context); +// }, +// child: Text('跳转到下一个页面'), +// ); +// } +// +// // 封装函数用来发送路由和接收路由返回的数据 +// _navigateAndDisplaySelection(BuildContext context) async { +// // 获取路由返回的数据 +// final result = await Navigator.push( +// context, +// // 通过路由把数据发给另一个页面 +// MaterialPageRoute(builder: (context) => MyApp(data: datas)), +// ); +// +// // 把收到的数据用SnackBar显示出来 +// Scaffold.of(context).showSnackBar(SnackBar(content: Text("$result"))); +// } +//} + +// 页面B +class MyApp extends StatelessWidget { + final List data; + + MyApp({Key key, @required this.data}) : super(key: key); + + @override + Widget build(BuildContext context) { + String tempData = ""; + + data.forEach((String data) { + tempData += data; + }); + + return Scaffold( + appBar: AppBar( + title: Text( + "来自于页面A的数据:$tempData", + style: new TextStyle(fontSize: 15), + ), + ), + body: new RaisedButton( + onPressed: () { + Navigator.pop(context, 'Tips:页面B返回的数据'); + }, + child: Text('点击返回并传递数据给页面A'), + ), + ); + } +} diff --git a/projects/flutter-demo/lib/all_samples/router/demo1.dart b/projects/flutter-demo/lib/all_samples/router/router_easy_sample/demo1.dart similarity index 100% rename from projects/flutter-demo/lib/all_samples/router/demo1.dart rename to projects/flutter-demo/lib/all_samples/router/router_easy_sample/demo1.dart diff --git a/projects/flutter-demo/lib/all_samples/router/demo2.dart b/projects/flutter-demo/lib/all_samples/router/router_easy_sample/demo2.dart similarity index 100% rename from projects/flutter-demo/lib/all_samples/router/demo2.dart rename to projects/flutter-demo/lib/all_samples/router/router_easy_sample/demo2.dart diff --git a/projects/flutter-demo/lib/all_samples/router/demo3.dart b/projects/flutter-demo/lib/all_samples/router/router_easy_sample/demo3.dart similarity index 100% rename from projects/flutter-demo/lib/all_samples/router/demo3.dart rename to projects/flutter-demo/lib/all_samples/router/router_easy_sample/demo3.dart diff --git a/projects/flutter-demo/lib/all_samples/router/demo4.dart b/projects/flutter-demo/lib/all_samples/router/router_easy_sample/demo4.dart similarity index 100% rename from projects/flutter-demo/lib/all_samples/router/demo4.dart rename to projects/flutter-demo/lib/all_samples/router/router_easy_sample/demo4.dart diff --git a/projects/flutter-demo/lib/all_samples/router/router_demo.dart b/projects/flutter-demo/lib/all_samples/router/router_easy_sample/router_demo.dart similarity index 100% rename from projects/flutter-demo/lib/all_samples/router/router_demo.dart rename to projects/flutter-demo/lib/all_samples/router/router_easy_sample/router_demo.dart diff --git a/projects/flutter-demo/lib/readme.md b/projects/flutter-demo/lib/readme.md index a5f845d..14769aa 100644 --- a/projects/flutter-demo/lib/readme.md +++ b/projects/flutter-demo/lib/readme.md @@ -2,12 +2,13 @@ ### 1、`all_samples`是一个小项目,选中`main_page`,只要右键选择`run`,就可以运行这个小项目了。 -``` -打开`main_page` 是 首页,点击它里面的3个按钮,分别跳到`normal_page`页面,`router`目录,`list`目录: -normal_page 是创建工程时的默认页面 -list 表示ListView的各种用法的demo。 -router 是 路由的使用demo,主要演示页面如何跳转和返回。 -``` + +打开`all_samples/main_page` 是首页,点击它里面的3个按钮,分别跳到`normal_page`页面,`router`目录,`list`目录: + +`normal_page.dart` 是创建Flutter工程时自动创建的页面,我只是改了一个名字。 +`all_samples/list` 这个文件夹 表示ListView的各种用法的demo。 +`all_samples/router` 这个文件夹是 路由的使用demo,主要演示页面如何跳转和返回。 + ### 2、其他的Dart文件基本都是一些控件的使用,想看哪个效果,右键`run`就可以运行了,后期会逐渐整理到`all_samples`目录里面。 From 0295520a911f3b2afbf5092e5273d7dbb8568b78 Mon Sep 17 00:00:00 2001 From: lzw <2497727771@qq.com> Date: Fri, 16 Nov 2018 18:52:32 +0800 Subject: [PATCH 13/97] update --- projects/readme.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 projects/readme.md diff --git a/projects/readme.md b/projects/readme.md new file mode 100644 index 0000000..78b25b3 --- /dev/null +++ b/projects/readme.md @@ -0,0 +1,7 @@ +# 文件夹说明 + + + +`flutter_demo` 是flutter使用的相关Demo + +`dart_demo` 是 Dart使用的相关Demo \ No newline at end of file From 181e5eccb99ac5b1b71e2adc1cbcd4e01e0bb681 Mon Sep 17 00:00:00 2001 From: lzw <2497727771@qq.com> Date: Sun, 18 Nov 2018 15:34:28 +0800 Subject: [PATCH 14/97] update --- README-CN.md | 140 ------------------------------------------------ README-EN.md | 148 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 137 ++++++++++++++++++++++++++--------------------- 3 files changed, 225 insertions(+), 200 deletions(-) delete mode 100644 README-CN.md create mode 100644 README-EN.md diff --git a/README-CN.md b/README-CN.md deleted file mode 100644 index 95ebd00..0000000 --- a/README-CN.md +++ /dev/null @@ -1,140 +0,0 @@ -# Flutter-learning - -#### README [English](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README.md)|[中文版请点击这里](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README-CN.md) - -![logo](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/logo.png?raw=true) - - -# 介绍 - -> 这个库主要是一些Flutter学习资料,个人总结,项目示例代码。如果你想快速学习Flutter,欢迎查看这个库,对你很有帮助的。喜欢的话就给个`Star`,谢谢。欢迎大家多提意见,帮忙完善这个库。如果有问题,欢迎提issue - ----- - -# 目录结构: - -## 一、自己总结的Flutter有关资料 - -* #### [Flutter基础全面详解](https://www.jianshu.com/p/2c9867e737a1) - -* #### [Flutter从配置安装到填坑指南详解](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E4%BB%8E%E9%85%8D%E7%BD%AE%E5%AE%89%E8%A3%85%E5%88%B0%E5%A1%AB%E5%9D%91%E6%8C%87%E5%8D%97%E8%AF%A6%E8%A7%A3.md) - -* #### [Flutter和原生Android控件对比](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8C%E5%8E%9F%E7%94%9FAndroid%E6%8E%A7%E4%BB%B6%E5%AF%B9%E6%AF%94.md) - -* #### [Dart语法](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Dart%E8%AF%AD%E6%B3%95.md) - -* #### [Flutter的需要与原生交互的一些常用库](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E7%9A%84%E9%9C%80%E8%A6%81%E4%B8%8E%E5%8E%9F%E7%94%9F%E4%BA%A4%E4%BA%92%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E5%BA%93.md) - -* #### [Flutter和react native的对比](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8Creact%20native%E7%9A%84%E5%AF%B9%E6%AF%94.md) - -* #### [yarn,nodejs,npm,Flutter有关命令](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/yarn%EF%BC%8Cnodejs%EF%BC%8Cnpm%EF%BC%8CFlutter%E6%9C%89%E5%85%B3%E5%91%BD%E4%BB%A4.md) - -* #### [我模仿Flutter中文官网写的一个本地的html页面,同时将官网的一些**未翻译的英文**页面**翻译**成了中文。](https://github.com/AweiLoveAndroid/FlutterWebsiteCN_Mine) - -* #### :+1: [Flutter代码模板插件,适用于AS以及IDEA](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/code_plugins) - ----- - -## 二、相关示例代码和项目实战 - -* #### [Flutter相关demo示例代码](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/flutter-demo) - - -* #### [Dart语法详解相关示例代码](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/dart_demo/test) - -* #### [自己封装的一个线性渐变工具类FractionalOffsetUtil.dart](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/projects/flutter-demo/util/FractionalOffsetUtil.dart) - ----- - -## 三、Flutter相关学习文档 - -* #### [Flutter相关译文](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E7%9B%B8%E5%85%B3%E8%AF%91%E6%96%87.md) - -* #### [Flutter有关博客详解](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E6%9C%89%E5%85%B3%E5%8D%9A%E5%AE%A2%E8%AE%B2%E8%A7%A3.md) - -* #### Flutter和其他平台的对比 - - * ##### [Android开发者快速上手Flutter参考知识点](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E8%AF%91%E6%96%87/Android%E5%BC%80%E5%8F%91%E8%80%85%E5%8F%82%E8%80%83.md) - - * ##### [Flutter和web开发的对比]() - - * ##### [Flutter和React Native的对比]() - ----- - -## 四、Flutter、Dart有关网站 - -### ★ Flutter有关网站 - -##### :arrow_right: [Flutter官方文档 https://flutter.io/docs/](https://flutter.io/docs/) -官方主页,英文版。 - -##### :arrow_right: [Flutter中文官网 https://flutter-io.cn/](https://flutter-io.cn/) -官方的中文网,最新出来的,资料齐全,视频、博客、文档、最新咨询都有。 - -##### :arrow_right: [Flutter中文版 http://doc.flutter-dev.cn/](http://doc.flutter-dev.cn/) -网友自制的中文网,翻译更新的比较快,基本跟官网同步,但是翻译的只有一部分。 - -##### :arrow_right: [Flutter中文网 https://flutterchina.club/](https://flutterchina.club/) -网友自制的中文网,内容翻译的比较多,但是内容还比较老,还没来得及更新最新内容。 - -##### :arrow_right: [Flutter Github地址 https://github.com/flutter/flutter](https://github.com/flutter/flutter) -Flutter开源库,上面有源码和示例项目。 - -### ★ Dart有关网站 - -##### :arrow_right: [开源代码下载库 https://pub.dartlang.org/](https://pub.dartlang.org/) -三方库都可以在这里下载。 - -##### :arrow_right: [Dart语言官方主页 https://www.dartlang.org/](https://www.dartlang.org/) -官方主页,英文版。 - -##### :arrow_right: [国内最大的Dart语言中文社区 http://www.cndartlang.com/](http://www.cndartlang.com/) -这个网站有Flutter和Dart的学习资料,很全面。 - -##### :arrow_right: [Dart中文主页 https://www.dart-china.org/](https://www.dart-china.org/) -Dart语言中文社区。 - -##### :arrow_right: [dart-pad Github地址 https://github.com/dart-lang/dart-pad](https://github.com/dart-lang/dart-pad) -Dart语言的在线编辑器的源码。 - -##### :arrow_right: [DartPad在线编辑器 https://dartpad.dartlang.org/](https://dartpad.dartlang.org/) -Dart语言的在线编辑器 - ----- - -# 赞赏 - -如果这个库对您有很大帮助,您愿意支持这个项目的进一步开发和这个项目的持续维护。你可以扫描下面的二维码,让我喝一杯咖啡或啤酒。非常感谢您的捐赠。谢谢! - -![赞赏](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/donation.png?raw=true) - ----- - -# 联系我 - -> 欢迎关注我的微信:`wei_xing_tian_xia` - -> 我的微信公众号也开通了,欢迎大家关注:`Flutter那些事`,扫码就可以关注了。 - -![我的微信公众号](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg?raw=true) - ----- - -# Licence - -``` -Copyright 2018,AWeiLoveAndroid,阿韦 - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -``` diff --git a/README-EN.md b/README-EN.md new file mode 100644 index 0000000..96f4693 --- /dev/null +++ b/README-EN.md @@ -0,0 +1,148 @@ +# Flutter-learning + +#### README [English](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README.md)|[中文版请点击这里](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README-CN.md) + + +![logo](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/logo.png?raw=true) + + +# Introductions + +> This library is a collection of Flutter learning resources , summaries, and sample codes. If you want to learn Flutter quickly, check out this library, because this library is very helpful for you. If you like, you can give a `star`.Thank you! Welcome to comment and help improve this library. If you have any questions, please pull issue. + +![](https://img.shields.io/badge/platform-android-lightgreen.svg)![](https://img.shields.io/badge/platform-ios-lightgreen.svg) + +---- + +# Catalog + +## 1、Flutter Resources + +* #### [Flutter basis](https://www.jianshu.com/p/2c9867e737a1) + +* #### [Flutter tools,install and wtf problems](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E4%BB%8E%E9%85%8D%E7%BD%AE%E5%AE%89%E8%A3%85%E5%88%B0%E5%A1%AB%E5%9D%91%E6%8C%87%E5%8D%97%E8%AF%A6%E8%A7%A3.md) + +* #### [Flutter widgets VS Android widgets](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8C%E5%8E%9F%E7%94%9FAndroid%E6%8E%A7%E4%BB%B6%E5%AF%B9%E6%AF%94.md) + +* #### [Dart languages](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Dart%E8%AF%AD%E6%B3%95.md) + +* #### [Widely used libraries in Flutter](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E7%9A%84%E9%9C%80%E8%A6%81%E4%B8%8E%E5%8E%9F%E7%94%9F%E4%BA%A4%E4%BA%92%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E5%BA%93.md) + +* #### [Flutter widgets VS react native widgets](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8Creact%20native%E7%9A%84%E5%AF%B9%E6%AF%94.md) + +* #### [Commands of yarn,nodejs,npm & Flutter](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/yarn%EF%BC%8Cnodejs%EF%BC%8Cnpm%EF%BC%8CFlutter%E6%9C%89%E5%85%B3%E5%91%BD%E4%BB%A4.md) + +* #### [Flutter Chinese Website, written by me(Imitate flutter.io)](https://github.com/AweiLoveAndroid/FlutterWebsiteCN_Mine) + +* #### :+1: [Flutter code template plugin for Android Studio, IDEA & VSCode](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/code_plugins) + +---- + +## 2、Sample codes and projects + +* #### [Flutter demo codes](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/flutter-demo) + + +* #### [Dart grammar codes](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/dart_demo/test) + +* #### [FractionalOffsetUtil.dart](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/projects/flutter-demo/util/FractionalOffsetUtil.dart) + +---- + +## 3、Flutter documents + +* #### [Flutter translations](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E7%9B%B8%E5%85%B3%E8%AF%91%E6%96%87.md) + +* #### [Flutter blogs](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E6%9C%89%E5%85%B3%E5%8D%9A%E5%AE%A2%E8%AE%B2%E8%A7%A3.md) + +* #### Comparison of Flutter and other platforms + + * ##### [Flutter for Android developers](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E8%AF%91%E6%96%87/Android%E5%BC%80%E5%8F%91%E8%80%85%E5%8F%82%E8%80%83.md) + + * ##### [Flutter for Android developers]() + + * ##### [Flutter for React Native developers]() + +---- + +## 4、Websites for Flutter & Dart + +### ★ About Flutter Websites + +##### :arrow_right: [Flutter Website https://flutter.io/docs/](https://flutter.io/docs/) + Official website,English language. + +##### :arrow_right: [Flutter Chinese official website https://flutter-io.cn/](https://flutter-io.cn/) + It's new, you can find videos,blogs,docs & codelabs in it.It is very comprehensive. + +##### :arrow_right: [Flutter Website for China http://doc.flutter-dev.cn/](http://doc.flutter-dev.cn/) + Chinese websites made by Chinese developers. This website is updated faster, and almost sync with the official website, But the translation is rarely. + +##### :arrow_right: [Flutter Website for China https://flutterchina.club/](https://flutterchina.club/) + Chinese websites made by Chinese developers. This website is updated more slowly, but the translation is very comprehensive. + + +##### :arrow_right: [Flutter Github https://github.com/flutter/flutter(https://github.com/flutter/flutter) + Flutter open source code,you can find sources and samples form github. + +### ★ About Dart Websites + +##### :arrow_right: [Dart Open source code libraries https://pub.dartlang.org/](https://pub.dartlang.org/) + You can download Dart libraries here.Also You can upload open source library to `https://pub.dartlang.org`. + +##### :arrow_right: [Dart website https://www.dartlang.org/](https://www.dartlang.org/) + Official website,English language. + +##### :arrow_right: [The largest Dart language Chinese community in China http://www.cndartlang.com/](http://www.cndartlang.com/) + The website contains a lot of learning materials for Flutter and Dart. + +##### :arrow_right: [Dart website for China https://www.dart-china.org/](https://www.dart-china.org/) + Dart language Chinese community.,it's another website for dart. + +##### :arrow_right: [dart-pad Github https://github.com/dart-lang/dart-pad](https://github.com/dart-lang/dart-pad) + Source code for the online editor for the Dart language. + +##### :arrow_right: [DartPad online editor https://dartpad.dartlang.org/](https://dartpad.dartlang.org/) + Dart language online editor + +---- + +# Donation + +> If this library is very helpful to you, you are willing to support the further development of this project and the continuous maintenance of this project. You can scan the following QR code, let me have a cup of coffee or beer. Thank you very much for your donation. Thank you! + +![donation](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/donation.png?raw=true) + +---- + +# About me + +### ● 微信: + +> Search `wei_xing_tian_xia` and add me. + +### ● Wechat public account : + +Search `Flutter那些事` and follow me. For further information, please scan the QR code below to follow us. + +![Wechat public account](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg?raw=true) + +---- + +# Licence + +``` +Copyright 2018,AWeiLoveAndroid,阿韦 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +``` diff --git a/README.md b/README.md index e91f056..60ef295 100644 --- a/README.md +++ b/README.md @@ -1,127 +1,144 @@ # Flutter-learning -#### README [English](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README.md)|[中文版请点击这里](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README-CN.md) +## README +#### [中文版文档](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README.md) | [English Docs](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README-EN.md) ![logo](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/logo.png?raw=true) -# Introductions +# 介绍 -> This library is a collection of Flutter learning resources , summaries, and sample codes. If you want to learn Flutter quickly, check out this library, because this library is very helpful for you. If you like, you can give a `star`.Thank you! Welcome to comment and help improve this library. If you have any questions, please pull issue. - -![](https://img.shields.io/badge/platform-android-lightgreen.svg)![](https://img.shields.io/badge/platform-ios-lightgreen.svg) +> 这个库主要是一些Flutter学习资料,个人总结,项目示例代码。如果你想快速学习Flutter,欢迎查看这个库,对你很有帮助的。喜欢的话就给个`Star`,谢谢。欢迎大家多提意见,帮忙完善这个库。如果有问题,欢迎提issue。**想与我联系请看文档最后的联系方式。感谢大家支持!** ---- -# Catalog +# 目录结构: -## 1、Flutter Resources +## 一、自己总结的Flutter有关资料 -* #### [Flutter basis](https://www.jianshu.com/p/2c9867e737a1) +* #### [Flutter的需要与原生交互的一些常用库](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E7%9A%84%E9%9C%80%E8%A6%81%E4%B8%8E%E5%8E%9F%E7%94%9F%E4%BA%A4%E4%BA%92%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E5%BA%93.md) -* #### [Flutter tools,install and wtf problems](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E4%BB%8E%E9%85%8D%E7%BD%AE%E5%AE%89%E8%A3%85%E5%88%B0%E5%A1%AB%E5%9D%91%E6%8C%87%E5%8D%97%E8%AF%A6%E8%A7%A3.md) +* #### [Flutter基础全面详解](https://www.jianshu.com/p/2c9867e737a1) -* #### [Flutter widgets VS Android widgets](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8C%E5%8E%9F%E7%94%9FAndroid%E6%8E%A7%E4%BB%B6%E5%AF%B9%E6%AF%94.md) +* #### [Flutter从配置安装到填坑指南详解](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E4%BB%8E%E9%85%8D%E7%BD%AE%E5%AE%89%E8%A3%85%E5%88%B0%E5%A1%AB%E5%9D%91%E6%8C%87%E5%8D%97%E8%AF%A6%E8%A7%A3.md) -* #### [Dart languages](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Dart%E8%AF%AD%E6%B3%95.md) +* #### [Flutter和原生Android控件对比](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8C%E5%8E%9F%E7%94%9FAndroid%E6%8E%A7%E4%BB%B6%E5%AF%B9%E6%AF%94.md) -* #### [Widely used libraries in Flutter](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E7%9A%84%E9%9C%80%E8%A6%81%E4%B8%8E%E5%8E%9F%E7%94%9F%E4%BA%A4%E4%BA%92%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E5%BA%93.md) +* #### [Dart语法](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Dart%E8%AF%AD%E6%B3%95.md) -* #### [Flutter widgets VS react native widgets](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8Creact%20native%E7%9A%84%E5%AF%B9%E6%AF%94.md) +* #### [Flutter和react native的对比](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8Creact%20native%E7%9A%84%E5%AF%B9%E6%AF%94.md) -* #### [Commands of yarn,nodejs,npm & Flutter](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/yarn%EF%BC%8Cnodejs%EF%BC%8Cnpm%EF%BC%8CFlutter%E6%9C%89%E5%85%B3%E5%91%BD%E4%BB%A4.md) +* #### [yarn,nodejs,npm,Flutter有关命令](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/yarn%EF%BC%8Cnodejs%EF%BC%8Cnpm%EF%BC%8CFlutter%E6%9C%89%E5%85%B3%E5%91%BD%E4%BB%A4.md) -* #### [Flutter Chinese Website, written by me(Imitate flutter.io)](https://github.com/AweiLoveAndroid/FlutterWebsiteCN_Mine) +* #### [我模仿Flutter中文官网写的一个本地的html页面,同时将官网的一些**未翻译的英文**页面**翻译**成了中文。](https://github.com/AweiLoveAndroid/FlutterWebsiteCN_Mine) -* #### :+1: [Flutter code template plugin for Android Studio, IDEA & VSCode](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/code_plugins) +* #### :+1: [Flutter代码模板插件,适用于AS以及IDEA 以及VSCode](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/code_plugins) ---- -## 2、Sample codes and projects +## 二、相关示例代码和项目实战 -* #### [Flutter demo codes](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/flutter-demo) +* #### :fire: [Flutter相关demo示例代码](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/flutter-demo) -* #### [Dart grammar codes](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/dart_demo/test) +* #### :fire: [Dart语法详解相关示例代码](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/projects/dart_demo/test) -* #### [FractionalOffsetUtil.dart](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/projects/flutter-demo/util/FractionalOffsetUtil.dart) +* #### [自己封装的一个线性渐变工具类FractionalOffsetUtil.dart](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/projects/flutter-demo/util/FractionalOffsetUtil.dart) ---- -## 3、Flutter documents +## 三、Flutter相关学习文档 -* #### [Flutter translations](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E7%9B%B8%E5%85%B3%E8%AF%91%E6%96%87.md) +* #### [Flutter相关译文](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E7%9B%B8%E5%85%B3%E8%AF%91%E6%96%87.md) -* #### [Flutter blogs](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E6%9C%89%E5%85%B3%E5%8D%9A%E5%AE%A2%E8%AE%B2%E8%A7%A3.md) +* #### [Flutter有关博客详解](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/Flutter%E6%9C%89%E5%85%B3%E5%8D%9A%E5%AE%A2%E8%AE%B2%E8%A7%A3.md) -* #### Comparison of Flutter and other platforms +* #### Flutter和其他平台的对比 - * ##### [Flutter for Android developers](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E8%AF%91%E6%96%87/Android%E5%BC%80%E5%8F%91%E8%80%85%E5%8F%82%E8%80%83.md) + * ##### [Android开发者快速上手Flutter参考知识点](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/flutter-learning-doc-resources/%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E8%AF%91%E6%96%87/Android%E5%BC%80%E5%8F%91%E8%80%85%E5%8F%82%E8%80%83.md) - * ##### [Flutter for Android developers]() + * ##### [Flutter和web开发的对比]() - * ##### [Flutter for React Native developers]() + * ##### [Flutter和React Native的对比]() ---- -## 4、Websites for Flutter & Dart - -### ★ About Flutter Websites +## 四、Flutter、Dart有关网站 -##### :arrow_right: [Flutter Website https://flutter.io/docs/](https://flutter.io/docs/) - Official website,English language. +### ★ Flutter有关网站 -##### :arrow_right: [Flutter Chinese official website https://flutter-io.cn/](https://flutter-io.cn/) - It's new, you can find videos,blogs,docs & codelabs in it.It is very comprehensive. +##### :arrow_right: [Flutter官方文档 https://flutter.io/docs/](https://flutter.io/docs/) +官方主页,英文版。 -##### :arrow_right: [Flutter Website for China http://doc.flutter-dev.cn/](http://doc.flutter-dev.cn/) - Chinese websites made by Chinese developers. This website is updated faster, and almost sync with the official website, But the translation is rarely. +##### :arrow_right: [Flutter中文官网 https://flutter-io.cn/](https://flutter-io.cn/) +官方的中文网,最新出来的,资料齐全,视频、博客、文档、最新咨询都有。 -##### :arrow_right: [Flutter Website for China https://flutterchina.club/](https://flutterchina.club/) - Chinese websites made by Chinese developers. This website is updated more slowly, but the translation is very comprehensive. +##### :arrow_right: [Flutter中文版 http://doc.flutter-dev.cn/](http://doc.flutter-dev.cn/) +网友自制的中文网,翻译更新的比较快,基本跟官网同步,但是翻译的只有一部分。 +##### :arrow_right: [Flutter中文网 https://flutterchina.club/](https://flutterchina.club/) +网友自制的中文网,内容翻译的比较多,但是内容还比较老,还没来得及更新最新内容。 -##### :arrow_right: [Flutter Github https://github.com/flutter/flutter(https://github.com/flutter/flutter) - Flutter open source code,you can find sources and samples form github. +##### :arrow_right: [Flutter Github地址 https://github.com/flutter/flutter](https://github.com/flutter/flutter) +Flutter开源库,上面有源码和示例项目。 -### ★ About Dart Websites +### ★ Dart有关网站 -##### :arrow_right: [Dart Open source code libraries https://pub.dartlang.org/](https://pub.dartlang.org/) - You can download Dart libraries here.Also You can upload open source library to `https://pub.dartlang.org`. +##### :arrow_right: [开源代码下载库 https://pub.dartlang.org/](https://pub.dartlang.org/) +三方库都可以在这里下载。 -##### :arrow_right: [Dart website https://www.dartlang.org/](https://www.dartlang.org/) - Official website,English language. +##### :arrow_right: [Dart语言官方主页 https://www.dartlang.org/](https://www.dartlang.org/) +官方主页,英文版。 -##### :arrow_right: [The largest Dart language Chinese community in China http://www.cndartlang.com/](http://www.cndartlang.com/) - The website contains a lot of learning materials for Flutter and Dart. +##### :arrow_right: [国内最大的Dart语言中文社区 http://www.cndartlang.com/](http://www.cndartlang.com/) +这个网站有Flutter和Dart的学习资料,很全面。 -##### :arrow_right: [Dart website for China https://www.dart-china.org/](https://www.dart-china.org/) - Dart language Chinese community.,it's another website for dart. +##### :arrow_right: [Dart中文主页 https://www.dart-china.org/](https://www.dart-china.org/) +Dart语言中文社区。 -##### :arrow_right: [dart-pad Github https://github.com/dart-lang/dart-pad](https://github.com/dart-lang/dart-pad) - Source code for the online editor for the Dart language. +##### :arrow_right: [dart-pad Github地址 https://github.com/dart-lang/dart-pad](https://github.com/dart-lang/dart-pad) +Dart语言的在线编辑器的源码。 -##### :arrow_right: [DartPad online editor https://dartpad.dartlang.org/](https://dartpad.dartlang.org/) - Dart language online editor +##### :arrow_right: [DartPad在线编辑器 https://dartpad.dartlang.org/](https://dartpad.dartlang.org/) +Dart语言的在线编辑器 ---- -# Donation +# 赞赏 -> If this library is very helpful to you, you are willing to support the further development of this project and the continuous maintenance of this project. You can scan the following QR code, let me have a cup of coffee or beer. Thank you very much for your donation. Thank you! +如果这个库对您有很大帮助,您愿意支持这个项目的进一步开发和这个项目的持续维护。你可以扫描下面的二维码,让我喝一杯咖啡或啤酒。非常感谢您的捐赠。谢谢! -![donation](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/donation.png?raw=true) +![赞赏](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/donation.png?raw=true) ---- -# About me +# 联系我 + +### ● 微信: + +> 欢迎关注我的微信:`wei_xing_tian_xia` + +### ● 微信群: + +> 由于大家学习热情太高,**微信群目前不能扫码加入了,麻烦大家想进微信群的朋友们,加我微信拉你进群。** + +### ● 微信公众号: + +> 我的微信公众号也开通了,欢迎大家关注:`Flutter那些事`,扫码就可以关注了,专注于研究Flutter的公众号,最新最全面的系统的Flutter干货总结都在这个公众号,欢迎关注。 + +![我的微信公众号](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg?raw=true) + + +### ● QQ群: + +> 2千人QQ群,**Flutter学习开发交流群,QQ群号:202921297**, 欢迎大家加入。 -> Wechat:`wei_xing_tian_xia` +### ● 个人博客: -> Wechat public account :`Flutter那些事` , For further information, please scan the QR code below to follow us. +[简书博客 AWeiLoveAndroid](https://www.jianshu.com/u/f408bdadacce) -![Wechat public account](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BA%8C%E7%BB%B4%E7%A0%81.jpg?raw=true) +[掘金博客 AWeiLoveAndroid](https://juejin.im/user/5a07c6c0f265da430a501017) ---- From e6aa0d09375817f4e851bd1ae1ec65ef309a80b8 Mon Sep 17 00:00:00 2001 From: AWeiLoveAndroid <2497727771@qq.com> Date: Sat, 24 Nov 2018 15:49:38 +0800 Subject: [PATCH 15/97] Update alert_dialog_demo.dart --- .../all_samples/dialog/alert_dialog_demo.dart | 352 +++++------------- 1 file changed, 102 insertions(+), 250 deletions(-) diff --git a/projects/flutter-demo/lib/all_samples/dialog/alert_dialog_demo.dart b/projects/flutter-demo/lib/all_samples/dialog/alert_dialog_demo.dart index aa123c6..d822d35 100644 --- a/projects/flutter-demo/lib/all_samples/dialog/alert_dialog_demo.dart +++ b/projects/flutter-demo/lib/all_samples/dialog/alert_dialog_demo.dart @@ -1,269 +1,121 @@ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; -class AlertDialogDemo extends StatefulWidget { - @override - _AlertDialogDemoState createState() => new _AlertDialogDemoState(); +import 'alert_dialog_demo.dart'; +import 'simple_dialog_demo.dart'; +import 'snackbar_demo.dart'; + +void main() { + runApp( + new MaterialApp( + title: 'AlertDialogDemo', + theme: new ThemeData( + primarySwatch: Colors.blue, + ), + home: new DialogWidgetsDemo(), + ), + ); } -class _AlertDialogDemoState extends State { +class DialogWidgetsDemo extends StatelessWidget { @override Widget build(BuildContext context) { + List widgets = [ + buildClicks(buildContents('SnackBar的使用'), context, new SnackBarDemo()), + buildClicks( + buildContents('SimpleDialog的使用'), context, new SimpleDialogDemo()), + buildClicks( + buildContents('AlertDialog的使用'), context, new AlertDialogDemo()), + // buildClicks(buildContents('BottomSheet的使用'), context, new SnackBarDemo()), + // buildClicks( + // buildContents('ExpansionPanel的使用'), context, new SnackBarDemo()), + ]; + return new Scaffold( appBar: new AppBar( - title: new Text( - 'AlertDialogDemo', - style: new TextStyle(fontSize: 17.0), - ), - ), - body: new ListView( - children: [ - setBuilders(context, 'AlertDialogDemo', 1, 'AlertDialogDemo1'), -// setBuilders(context, 'AlertDialogDemo', 2, 'AlertDialogDemo2'), -// setBuilders(context, 'AlertDialogDemo', 3, 'AlertDialogDemo3'), - ], + leading: new IconButton( + icon: new Icon(Icons.keyboard_arrow_left), + onPressed: () { + // 返回上一个页面 + Navigator.of(context).pop(); + }), + title: new Text('各种弹窗&提示控件用法'), ), + body: new ListView(children: widgets), ); } -} -Widget setBuilders( - BuildContext context, String contents, int type, String clickMsg) { - // new Builder不能去掉 - return new Builder(builder: (BuildContext context) { - // 必须加上return 不加就报错 - return buildClicks( - buildContents(contents: contents), context, type, clickMsg); - }); -} - -Widget buildClicks( - Widget child, BuildContext context, int type, String clickMsg) { - return new InkWell( - child: child, - onTap: () { - Fluttertoast.showToast( - msg: '点击了 $clickMsg', - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.CENTER); -// 创建SimpleDialog - buildDialogs(context, type); - }, - ); -} + Widget buildClicks(Widget child, BuildContext context, Widget page) { + return new InkWell( + child: child, + onTapDown: (details) { + print('onTapDown'); + Fluttertoast.showToast( + msg: 'onTapDown', + toastLength: Toast.LENGTH_SHORT, + gravity: ToastGravity.BOTTOM); + // 发送路由消息 + Navigator.push(context, + new MaterialPageRoute(builder: (BuildContext context) => page)); + }, + onTap: () { + Fluttertoast.showToast( + msg: 'onTap', + toastLength: Toast.LENGTH_SHORT, + gravity: ToastGravity.BOTTOM); + }, + onLongPress: () { + Fluttertoast.showToast( + msg: 'onLongPress', + toastLength: Toast.LENGTH_SHORT, + gravity: ToastGravity.BOTTOM); + }, + onDoubleTap: () { + Fluttertoast.showToast( + msg: 'onDoubleTap', + toastLength: Toast.LENGTH_SHORT, + gravity: ToastGravity.BOTTOM); + }, + ); + } -Widget buildContents({var contents, Color bgColor}) { - return new Container( - margin: new EdgeInsets.all(5.0), - padding: new EdgeInsets.all(5.0), - alignment: Alignment.center, - constraints: new BoxConstraints.expand(height: 40.0), - decoration: new BoxDecoration( - color: bgColor == null ? Colors.teal[300] : bgColor, - borderRadius: new BorderRadius.all( - //让矩形四个角都变成圆角 - const Radius.circular(8.0), - ), - // 阴影 - boxShadow: [ - new BoxShadow( - color: Colors.teal[100], - offset: new Offset(0.0, 5.0), - blurRadius: 8.0, - ), - new BoxShadow( - color: Colors.grey, - offset: new Offset(0.0, 6.0), - blurRadius: 8.0, + Widget buildContents(var text) { + return new Container( + margin: new EdgeInsets.all(5.0), + padding: new EdgeInsets.all(5.0), + alignment: Alignment.center, + constraints: new BoxConstraints.expand(height: 40.0), + decoration: new BoxDecoration( + color: Colors.teal[300], + borderRadius: new BorderRadius.all( + //让矩形四个角都变成圆角 + const Radius.circular(8.0), ), - ], - ), - child: buildButton(contents), - ); -} - -Widget buildButton(var contents) { - return new Text( - contents, - style: new TextStyle( - color: Colors.white, - fontSize: 16.0, - ), - ); -} - -// 创建AlertDialog -// 这个不能直接写,正确的使用方式:showDialog(builder: (BuildContext context) {}); -// 在builder里面去声明dialog对象 -// 这里封装的type是类型,如果是第一种 就显示默认的风格 -void buildDialogs(BuildContext context, int type) { - showDialog( - context: context, - builder: (BuildContext context) { - if (type == 1) { - return _showAlertDialog1(context, type); - } -// else if (type == 2) { -// return _showAlertDialog2(context, type); -// } -// else if (type == 3) { -// return _showAlertDialog3(context, type); -// } - }, - ); -} - -AlertDialog _showAlertDialog1(BuildContext context, int type) { - AlertDialog alertDialog = new AlertDialog( - title: new Text('标题栏'), -// titlePadding: EdgeInsets.fromLTRB(20.0, 20.0, 20.0, 20.0), -// contentPadding: EdgeInsets.fromLTRB(5.0, 5.0, 5.0, 5.0), -// 路由的名字 当点击dialog和其他页面交互的时候,就可以使用 -// semanticLabel: '/routers_name', - // AlertDialog的内容 - content: new Text('正文部分,简单的文本描述'), - actions: [ - buildClicks( - new Text( - '中立', - style: new TextStyle(color: Colors.pinkAccent), - ), - context, - type, - '中立'), - buildClicks( - new Text( - '取消', - style: new TextStyle(color: Theme.of(context).primaryColorDark), + // 阴影 + boxShadow: [ + new BoxShadow( + color: Colors.teal[100], + offset: new Offset(0.0, 5.0), + blurRadius: 8.0, ), - context, - type, - '取消'), - buildClicks( - new Text( - '确定', - style: new TextStyle(color: Theme.of(context).primaryColor), + new BoxShadow( + color: Colors.grey, + offset: new Offset(0.0, 6.0), + blurRadius: 8.0, ), - context, - type, - '确定'), - ], - ); - return alertDialog; -} - -//AlertDialog _showAlertDialog2(BuildContext context, int type) { -// SimpleDialog simpleDialog = new SimpleDialog( -// title: new Text( -// 'AlertDialog示例2', -// // 标题颜色使用主题色 -// style: new TextStyle(color: Theme.of(context).primaryColor), -// ), -//// titlePadding: EdgeInsets.fromLTRB(20.0, 20.0, 20.0, 20.0), -//// contentPadding: EdgeInsets.fromLTRB(5.0, 5.0, 5.0, 5.0), -// // 路由的名字 当点击dialog和其他页面交互的时候,就可以使用 -//// semanticLabel: /routers_name', -// // children里面是dialog的内容 可以自定义 -// children: [ -// buildClicks(buildContents(contents: 'item1'), context, type, 'item1'), -// buildClicks(buildContents(contents: 'item2'), context, type, 'item2'), -// buildClicks(buildContents(contents: 'item3'), context, type, 'item3'), -// buildClicks(buildContents(contents: 'item4'), context, type, 'item4'), -// buildClicks(buildContents(contents: 'item5'), context, type, 'item5'), -// ], -// ); -// return simpleDialog; -//} -// -//AlertDialog _showAlertDialog3(BuildContext context, int type) { -// SimpleDialog simpleDialog = new SimpleDialog( -// title: new Text( -// 'AlertDialog示例3', -// style: new TextStyle(color: Colors.deepOrange), -// ), -// titlePadding: EdgeInsets.fromLTRB(20.0, 20.0, 20.0, 20.0), -// contentPadding: EdgeInsets.fromLTRB(5.0, 5.0, 5.0, 5.0), -// // 路由的名字 当点击dialog和其他页面交互的时候,就可以使用 -//// semanticLabel: /routers_name', -// // children里面是dialog的内容 可以自定义 -// children: [ -// buildClicks( -// new ListTile( -// leading: new Icon( -// Icons.photo_album, -// color: Colors.redAccent, -// ), -// title: new Text( -// '相册', -// style: new TextStyle(color: Colors.deepOrangeAccent), -// ), -// ), -// context, -// type, -// '相册'), -// buildClicks( -// new ListTile( -// leading: new Icon( -// Icons.add, -// color: Colors.redAccent, -// ), -// title: new Text( -// '添加', -// style: new TextStyle(color: Colors.deepOrangeAccent), -// ), -// ), -// context, -// type, -// '添加'), -// buildClicks( -// new ListTile( -// leading: new Icon( -// Icons.mic, -// color: Colors.redAccent, -// ), -// title: new Text( -// '录音', -// style: new TextStyle(color: Colors.deepOrangeAccent), -// ), -// ), -// context, -// type, -// '录音'), -// buildClicks( -// new ListTile( -// leading: new Icon( -// Icons.mail, -// color: Colors.redAccent, -// ), -// title: new Text( -// '邮件', -// style: new TextStyle(color: Colors.deepOrangeAccent), -// ), -// ), -// context, -// type, -// '邮件'), -// buildClicks( -// new ListTile( -// leading: new Icon( -// Icons.search, -// color: Colors.redAccent, -// ), -// title: new Text( -// '搜索', -// style: new TextStyle(color: Colors.deepOrangeAccent), -// ), -// ), -// context, -// type, -// '搜索'), -// ]); -// return simpleDialog; -//} + ], + ), + child: buildButton(text), + ); + } -void showToast(String msg) { - Fluttertoast.showToast( - msg: '点击了 $msg', - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM); + Widget buildButton(var text) { + return new Text( + text, + style: new TextStyle( + color: Colors.white, + fontSize: 16.0, + ), + ); + } } From 05281d8cea3ffbe2ac618b3a90fe5fd863a33083 Mon Sep 17 00:00:00 2001 From: AWeiLoveAndroid <2497727771@qq.com> Date: Sat, 24 Nov 2018 16:44:19 +0800 Subject: [PATCH 16/97] Update simple_dialog_demo.dart --- .../dialog/simple_dialog_demo.dart | 292 ++++++++---------- 1 file changed, 133 insertions(+), 159 deletions(-) diff --git a/projects/flutter-demo/lib/all_samples/dialog/simple_dialog_demo.dart b/projects/flutter-demo/lib/all_samples/dialog/simple_dialog_demo.dart index cdc835f..d8df898 100644 --- a/projects/flutter-demo/lib/all_samples/dialog/simple_dialog_demo.dart +++ b/projects/flutter-demo/lib/all_samples/dialog/simple_dialog_demo.dart @@ -18,49 +18,32 @@ class _SimpleDialogDemoState extends State { ), body: new ListView( children: [ - setBuilders(context, 'SimpleDialogDemo1', 1, 'SimpleDialogDemo1'), - setBuilders(context, 'SimpleDialogDemo2', 2, 'SimpleDialogDemo2'), - setBuilders(context, 'SimpleDialogDemo3', 3, 'SimpleDialogDemo3'), + buildContents(context, 'SimpleDialog Demo1', 'SimpleDialog Demo1', 1), + buildContents(context, 'SimpleDialog Demo2', 'SimpleDialog Demo2', 2), + buildContents(context, 'SimpleDialog Demo3', 'SimpleDialog Demo3', 3), ], ), ); } } -Widget setBuilders( - BuildContext context, String contents, int type, String clickMsg) { - // new Builder不能去掉 - return new Builder(builder: (BuildContext context) { - // 必须加上return 不加就报错 - return buildClicks( - buildContents(contents: contents), context, type, clickMsg); - }); -} - -Widget buildClicks( - Widget child, BuildContext context, int type, String clickMsg) { +// 主体内容 +Widget buildContents( + BuildContext context, String contents, String title, int type) { return new InkWell( - child: child, -// onTapDown: (details) { -// Fluttertoast.showToast( -// msg: '点击了 $clickMsg', -// toastLength: Toast.LENGTH_SHORT, -// gravity: ToastGravity.BOTTOM); -// // 创建SimpleDialog -// buildDialogs(context, type); -// }, + // 给每一个item一个点击事件 + child: _buildListItemContent(contents: contents), onTap: () { - Fluttertoast.showToast( - msg: '点击了 $clickMsg', - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.CENTER); -// 创建SimpleDialog - buildDialogs(context, type); + print("onTap"); + _showToast('onTap'); + // 点击了item 就会打开 SimpleDialog + buildDialogs(context, title, type); }, ); } -Widget buildContents({var contents, Color bgColor}) { +// ListView的 Item布局内容 +Widget _buildListItemContent({var contents, Color bgColor}) { return new Container( margin: new EdgeInsets.all(5.0), padding: new EdgeInsets.all(5.0), @@ -86,11 +69,11 @@ Widget buildContents({var contents, Color bgColor}) { ), ], ), - child: buildButton(contents), + child: _buildButton(contents), ); } -Widget buildButton(var contents) { +Widget _buildButton(var contents) { return new Text( contents, style: new TextStyle( @@ -100,153 +83,144 @@ Widget buildButton(var contents) { ); } -// 创建SimpleDialog +// 创建 SimpleDialog // 这个不能直接写,正确的使用方式:showDialog(builder: (BuildContext context) {}); // 在builder里面去声明dialog对象 -// 这里封装的type是类型,如果是第一种 就显示默认的风格 -void buildDialogs(BuildContext context, int type) { +void buildDialogs(BuildContext context, String title, int type) { showDialog( context: context, builder: (BuildContext context) { - if (type == 1) { - return _showSimpleDialog1(context, type); - } else if (type == 2) { - return _showSimpleDialog2(context, type); - } else if (type == 3) { - return _showSimpleDialog3(context, type); - } + return showSimpleDialog(context, title, type); }, ); } -SimpleDialog _showSimpleDialog1(BuildContext context, int type) { - SimpleDialog simpleDialog = new SimpleDialog( - // 标题内容 - title: new Text('SimpleDialog示例1'), - // children里面是dialog的内容 可以自定义 - children: [ - buildClicks(new Text('item1'), context, type, 'item1'), - buildClicks(new Text('item2'), context, type, 'item2'), - buildClicks(new Text('item3'), context, type, 'item3'), - buildClicks(new Text('item4'), context, type, 'item4'), - buildClicks(new Text('item5'), context, type, 'item5'), - ], +// 创建 SimpleDialog +// title是SimpleDialog的标题 type是dialog item创建不同的内容 +SimpleDialog showSimpleDialog(BuildContext context, String title, int type) { + Text text = new Text( + title, + style: type == 1 + ? (new TextStyle(color: Theme.of(context).primaryColor)) + : (new TextStyle(color: Colors.deepOrange)), ); - return simpleDialog; -} - -SimpleDialog _showSimpleDialog2(BuildContext context, int type) { SimpleDialog simpleDialog = new SimpleDialog( - title: new Text( - 'SimpleDialog示例2', - // 标题颜色使用主题色 - style: new TextStyle(color: Theme.of(context).primaryColor), - ), -// titlePadding: EdgeInsets.fromLTRB(20.0, 20.0, 20.0, 20.0), -// contentPadding: EdgeInsets.fromLTRB(5.0, 5.0, 5.0, 5.0), - // 路由的名字 当点击dialog和其他页面交互的时候,就可以使用 -// semanticLabel: '/routers_name', - // children里面是dialog的内容 可以自定义 - children: [ - buildClicks(buildContents(contents: 'item1'), context, type, 'item1'), - buildClicks(buildContents(contents: 'item2'), context, type, 'item2'), - buildClicks(buildContents(contents: 'item3'), context, type, 'item3'), - buildClicks(buildContents(contents: 'item4'), context, type, 'item4'), - buildClicks(buildContents(contents: 'item5'), context, type, 'item5'), - ], + title: text, + children: buildDialogItems(type, context), ); return simpleDialog; } -SimpleDialog _showSimpleDialog3(BuildContext context, int type) { - SimpleDialog simpleDialog = new SimpleDialog( - title: new Text( - 'SimpleDialog示例3', - style: new TextStyle(color: Colors.deepOrange), - ), - titlePadding: EdgeInsets.fromLTRB(20.0, 20.0, 20.0, 20.0), - contentPadding: EdgeInsets.fromLTRB(5.0, 5.0, 5.0, 5.0), - // 路由的名字 当点击dialog和其他页面交互的时候,就可以使用 -// semanticLabel: /routers_name', - // children里面是dialog的内容 可以自定义 - children: [ - buildClicks( - new ListTile( - leading: new Icon( - Icons.photo_album, - color: Colors.redAccent, - ), - title: new Text( - '相册', - style: new TextStyle(color: Colors.deepOrangeAccent), - ), +// 3种不同的内容,所以这里定义了3种类型 +List buildDialogItems(int type, BuildContext context) { + List list = null; + // 第一种类型 简单的ListView + if (type == 1) { + list = [ + showDialogItemsClick(new Text('item1'), 'item1', context), + showDialogItemsClick(new Text('item2'), 'item2', context), + showDialogItemsClick(new Text('item3'), 'item3', context), + showDialogItemsClick(new Text('item4'), 'item4', context), + showDialogItemsClick(new Text('item5'), 'item5', context), + ]; + } else if (type == 2) { + list = [ + showDialogItemsClick( + _buildListItemContent(contents: 'item1'), 'item1', context), + showDialogItemsClick( + _buildListItemContent(contents: 'item2'), 'item2', context), + showDialogItemsClick( + _buildListItemContent(contents: 'item3'), 'item3', context), + showDialogItemsClick( + _buildListItemContent(contents: 'item4'), 'item4', context), + showDialogItemsClick( + _buildListItemContent(contents: 'item5'), 'item5', context), + ]; + } else if (type == 3) { + list = [ + showDialogItemsClick( + new ListTile( + leading: new Icon( + Icons.photo_album, + color: Colors.redAccent, ), - context, - type, - '相册'), - buildClicks( - new ListTile( - leading: new Icon( - Icons.add, - color: Colors.redAccent, - ), - title: new Text( - '添加', - style: new TextStyle(color: Colors.deepOrangeAccent), - ), + title: new Text( + '相册', + style: new TextStyle(color: Colors.deepOrangeAccent), ), - context, - type, - '添加'), - buildClicks( - new ListTile( - leading: new Icon( - Icons.mic, - color: Colors.redAccent, - ), - title: new Text( - '录音', - style: new TextStyle(color: Colors.deepOrangeAccent), - ), + ), + '相册', + context), + showDialogItemsClick( + new ListTile( + leading: new Icon( + Icons.add, + color: Colors.redAccent, ), - context, - type, - '录音'), - buildClicks( - new ListTile( - leading: new Icon( - Icons.mail, - color: Colors.redAccent, - ), - title: new Text( - '邮件', - style: new TextStyle(color: Colors.deepOrangeAccent), - ), + title: new Text( + '添加', + style: new TextStyle(color: Colors.deepOrangeAccent), ), - context, - type, - '邮件'), - buildClicks( - new ListTile( - leading: new Icon( - Icons.search, - color: Colors.redAccent, - ), - title: new Text( - '搜索', - style: new TextStyle(color: Colors.deepOrangeAccent), - ), + ), + '添加', + context), + showDialogItemsClick( + new ListTile( + leading: new Icon( + Icons.mic, + color: Colors.redAccent, ), - context, - type, - '搜索'), - ]); - return simpleDialog; + title: new Text( + '录音', + style: new TextStyle(color: Colors.deepOrangeAccent), + ), + ), + '录音', + context), + showDialogItemsClick( + new ListTile( + leading: new Icon( + Icons.mail, + color: Colors.redAccent, + ), + title: new Text( + '邮件', + style: new TextStyle(color: Colors.deepOrangeAccent), + ), + ), + '邮件', + context), + showDialogItemsClick( + new ListTile( + leading: new Icon( + Icons.search, + color: Colors.redAccent, + ), + title: new Text( + '搜索', + style: new TextStyle(color: Colors.deepOrangeAccent), + ), + ), + '搜索', + context), + ]; + } + return list; +} + +// 点击弹窗里面的每一个item时的事件 +// 参数1:要点击的item 参数2:toast的内容 +Widget showDialogItemsClick(Widget child, String msg, BuildContext context) { + return new InkWell( + child: child, + onTap: () { + Navigator.pop(context); + _showToast("关闭了Dialog" + msg); + }, + ); } -void showToast(String msg) { +void _showToast(String msg) { Fluttertoast.showToast( - msg: '点击了 $msg', - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM); + msg: msg, toastLength: Toast.LENGTH_SHORT, gravity: ToastGravity.BOTTOM); } From 85c5729971e8993d3e571361ac53f33b815ade9d Mon Sep 17 00:00:00 2001 From: AWeiLoveAndroid <2497727771@qq.com> Date: Tue, 27 Nov 2018 12:10:48 +0800 Subject: [PATCH 17/97] Update README.md --- README.md | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 60ef295..a1bfbe4 100644 --- a/README.md +++ b/README.md @@ -74,11 +74,11 @@ ##### :arrow_right: [Flutter中文官网 https://flutter-io.cn/](https://flutter-io.cn/) 官方的中文网,最新出来的,资料齐全,视频、博客、文档、最新咨询都有。 -##### :arrow_right: [Flutter中文版 http://doc.flutter-dev.cn/](http://doc.flutter-dev.cn/) -网友自制的中文网,翻译更新的比较快,基本跟官网同步,但是翻译的只有一部分。 +##### :arrow_right: [Flutter中文版 https://www.flutter123.com/](https://www.flutter123.com/) +本人自制的中文网,翻译更新的比较快,基本跟官网同步。 -##### :arrow_right: [Flutter中文网 https://flutterchina.club/](https://flutterchina.club/) -网友自制的中文网,内容翻译的比较多,但是内容还比较老,还没来得及更新最新内容。 +##### :arrow_right: [Flutter中文版 https://www.flutter123.cn](https://www.flutter123.cn/) +本人自制的中文网,翻译更新的比较快,基本跟官网同步。 ##### :arrow_right: [Flutter Github地址 https://github.com/flutter/flutter](https://github.com/flutter/flutter) Flutter开源库,上面有源码和示例项目。 @@ -91,12 +91,6 @@ Flutter开源库,上面有源码和示例项目。 ##### :arrow_right: [Dart语言官方主页 https://www.dartlang.org/](https://www.dartlang.org/) 官方主页,英文版。 -##### :arrow_right: [国内最大的Dart语言中文社区 http://www.cndartlang.com/](http://www.cndartlang.com/) -这个网站有Flutter和Dart的学习资料,很全面。 - -##### :arrow_right: [Dart中文主页 https://www.dart-china.org/](https://www.dart-china.org/) -Dart语言中文社区。 - ##### :arrow_right: [dart-pad Github地址 https://github.com/dart-lang/dart-pad](https://github.com/dart-lang/dart-pad) Dart语言的在线编辑器的源码。 From ebc964d519282189a083941d529227a00ec03c39 Mon Sep 17 00:00:00 2001 From: AWeiLoveAndroid <2497727771@qq.com> Date: Tue, 27 Nov 2018 12:13:02 +0800 Subject: [PATCH 18/97] Update README-EN.md --- README-EN.md | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/README-EN.md b/README-EN.md index 96f4693..bd89f2e 100644 --- a/README-EN.md +++ b/README-EN.md @@ -75,11 +75,11 @@ ##### :arrow_right: [Flutter Chinese official website https://flutter-io.cn/](https://flutter-io.cn/) It's new, you can find videos,blogs,docs & codelabs in it.It is very comprehensive. -##### :arrow_right: [Flutter Website for China http://doc.flutter-dev.cn/](http://doc.flutter-dev.cn/) - Chinese websites made by Chinese developers. This website is updated faster, and almost sync with the official website, But the translation is rarely. +##### :arrow_right: [Flutter Website for China https://www.flutter123.com/](https://www.flutter123.com/) + Chinese websites made by me. This website is updated faster, and almost sync with the official website. -##### :arrow_right: [Flutter Website for China https://flutterchina.club/](https://flutterchina.club/) - Chinese websites made by Chinese developers. This website is updated more slowly, but the translation is very comprehensive. +##### :arrow_right: [Flutter Website for China https://www.flutter123.cn](https://www.flutter123.cn/) + Chinese websites made by me. This website is updated faster, and almost sync with the official website. ##### :arrow_right: [Flutter Github https://github.com/flutter/flutter(https://github.com/flutter/flutter) @@ -93,12 +93,6 @@ ##### :arrow_right: [Dart website https://www.dartlang.org/](https://www.dartlang.org/) Official website,English language. -##### :arrow_right: [The largest Dart language Chinese community in China http://www.cndartlang.com/](http://www.cndartlang.com/) - The website contains a lot of learning materials for Flutter and Dart. - -##### :arrow_right: [Dart website for China https://www.dart-china.org/](https://www.dart-china.org/) - Dart language Chinese community.,it's another website for dart. - ##### :arrow_right: [dart-pad Github https://github.com/dart-lang/dart-pad](https://github.com/dart-lang/dart-pad) Source code for the online editor for the Dart language. From 342da54fd7465b875c313cac4db43db626d1ff7a Mon Sep 17 00:00:00 2001 From: AWeiLoveAndroid <2497727771@qq.com> Date: Tue, 27 Nov 2018 12:13:48 +0800 Subject: [PATCH 19/97] Update README-EN.md --- README-EN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-EN.md b/README-EN.md index bd89f2e..788a130 100644 --- a/README-EN.md +++ b/README-EN.md @@ -1,6 +1,6 @@ # Flutter-learning -#### README [English](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README.md)|[中文版请点击这里](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README-CN.md) +#### README [English](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README-EN.md)|[中文版请点击这里](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/README.md) ![logo](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/pics/logo.png?raw=true) From c49352a20cd4f3382869e7732ed208c679c75fe2 Mon Sep 17 00:00:00 2001 From: lzw <2497727771@qq.com> Date: Thu, 29 Nov 2018 11:41:20 +0800 Subject: [PATCH 20/97] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E5=9B=A0=E7=AC=AC?= =?UTF-8?q?=E4=B8=89=E6=96=B9=E5=BA=93=E5=AF=BC=E8=87=B4=E7=9A=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=85=BC=E5=AE=B9=E6=80=A7bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 +- .../flutter-demo/.idea/codeStyles/Project.xml | 29 + .../inspectionProfiles/Project_Default.xml | 36 ++ .../.idea/libraries/Dart_Packages.xml | 340 ++++++++++++ .../flutter-demo/.idea/libraries/Dart_SDK.xml | 27 + .../.idea/libraries/Flutter_Plugins.xml | 12 + .../flutter-demo/.idea/markdown-navigator.xml | 78 +++ .../markdown-navigator/profiles_settings.xml | 3 + projects/flutter-demo/.idea/misc.xml | 33 ++ projects/flutter-demo/.idea/modules.xml | 8 + projects/flutter-demo/.idea/workspace.xml | 525 ++++++++++++++++++ .../all_samples/dialog/alert_dialog_demo.dart | 14 +- .../lib/all_samples/main_page.dart | 2 +- .../lib/all_samples/normal_page.dart | 2 +- .../router_all_sample/router_sample1.dart | 1 + .../router_easy_sample/router_demo.dart | 27 +- projects/flutter-demo/lib/image_network.dart | 20 +- .../lib/view_demo/thirdlib/Permissions.dart | 4 +- projects/flutter-demo/pubspec.lock | 374 +++++-------- projects/flutter-demo/pubspec.yaml | 7 +- projects/flutter-demo/test/async.dart | 17 +- projects/flutter-demo/test/dart5.dart | 2 +- 22 files changed, 1254 insertions(+), 315 deletions(-) create mode 100644 projects/flutter-demo/.idea/codeStyles/Project.xml create mode 100644 projects/flutter-demo/.idea/inspectionProfiles/Project_Default.xml create mode 100644 projects/flutter-demo/.idea/libraries/Dart_Packages.xml create mode 100644 projects/flutter-demo/.idea/libraries/Dart_SDK.xml create mode 100644 projects/flutter-demo/.idea/libraries/Flutter_Plugins.xml create mode 100644 projects/flutter-demo/.idea/markdown-navigator.xml create mode 100644 projects/flutter-demo/.idea/markdown-navigator/profiles_settings.xml create mode 100644 projects/flutter-demo/.idea/misc.xml create mode 100644 projects/flutter-demo/.idea/modules.xml create mode 100644 projects/flutter-demo/.idea/workspace.xml diff --git a/README.md b/README.md index a1bfbe4..24e5e7e 100644 --- a/README.md +++ b/README.md @@ -17,23 +17,25 @@ ## 一、自己总结的Flutter有关资料 -* #### [Flutter的需要与原生交互的一些常用库](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E7%9A%84%E9%9C%80%E8%A6%81%E4%B8%8E%E5%8E%9F%E7%94%9F%E4%BA%A4%E4%BA%92%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E5%BA%93.md) +* #### :fire: [Flutter的需要与原生交互的一些常用库](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E7%9A%84%E9%9C%80%E8%A6%81%E4%B8%8E%E5%8E%9F%E7%94%9F%E4%BA%A4%E4%BA%92%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E5%BA%93.md) * #### [Flutter基础全面详解](https://www.jianshu.com/p/2c9867e737a1) * #### [Flutter从配置安装到填坑指南详解](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E4%BB%8E%E9%85%8D%E7%BD%AE%E5%AE%89%E8%A3%85%E5%88%B0%E5%A1%AB%E5%9D%91%E6%8C%87%E5%8D%97%E8%AF%A6%E8%A7%A3.md) -* #### [Flutter和原生Android控件对比](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8C%E5%8E%9F%E7%94%9FAndroid%E6%8E%A7%E4%BB%B6%E5%AF%B9%E6%AF%94.md) +* #### :+1: [Flutter代码模板插件,适用于AS以及IDEA 以及VSCode](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/code_plugins) * #### [Dart语法](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Dart%E8%AF%AD%E6%B3%95.md) +* #### [Flutter和原生Android控件对比](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8C%E5%8E%9F%E7%94%9FAndroid%E6%8E%A7%E4%BB%B6%E5%AF%B9%E6%AF%94.md) + * #### [Flutter和react native的对比](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/Flutter%E5%92%8Creact%20native%E7%9A%84%E5%AF%B9%E6%AF%94.md) * #### [yarn,nodejs,npm,Flutter有关命令](https://github.com/AweiLoveAndroid/Flutter-learning/blob/master/readme/yarn%EF%BC%8Cnodejs%EF%BC%8Cnpm%EF%BC%8CFlutter%E6%9C%89%E5%85%B3%E5%91%BD%E4%BB%A4.md) * #### [我模仿Flutter中文官网写的一个本地的html页面,同时将官网的一些**未翻译的英文**页面**翻译**成了中文。](https://github.com/AweiLoveAndroid/FlutterWebsiteCN_Mine) -* #### :+1: [Flutter代码模板插件,适用于AS以及IDEA 以及VSCode](https://github.com/AweiLoveAndroid/Flutter-learning/tree/master/code_plugins) + ---- diff --git a/projects/flutter-demo/.idea/codeStyles/Project.xml b/projects/flutter-demo/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..30aa626 --- /dev/null +++ b/projects/flutter-demo/.idea/codeStyles/Project.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/projects/flutter-demo/.idea/inspectionProfiles/Project_Default.xml b/projects/flutter-demo/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..6560a98 --- /dev/null +++ b/projects/flutter-demo/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,36 @@ + + + + \ No newline at end of file diff --git a/projects/flutter-demo/.idea/libraries/Dart_Packages.xml b/projects/flutter-demo/.idea/libraries/Dart_Packages.xml new file mode 100644 index 0000000..a84d3dc --- /dev/null +++ b/projects/flutter-demo/.idea/libraries/Dart_Packages.xml @@ -0,0 +1,340 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/projects/flutter-demo/.idea/libraries/Dart_SDK.xml b/projects/flutter-demo/.idea/libraries/Dart_SDK.xml new file mode 100644 index 0000000..5cb8b95 --- /dev/null +++ b/projects/flutter-demo/.idea/libraries/Dart_SDK.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/projects/flutter-demo/.idea/libraries/Flutter_Plugins.xml b/projects/flutter-demo/.idea/libraries/Flutter_Plugins.xml new file mode 100644 index 0000000..6f660d6 --- /dev/null +++ b/projects/flutter-demo/.idea/libraries/Flutter_Plugins.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/projects/flutter-demo/.idea/markdown-navigator.xml b/projects/flutter-demo/.idea/markdown-navigator.xml new file mode 100644 index 0000000..7753d6d --- /dev/null +++ b/projects/flutter-demo/.idea/markdown-navigator.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/projects/flutter-demo/.idea/markdown-navigator/profiles_settings.xml b/projects/flutter-demo/.idea/markdown-navigator/profiles_settings.xml new file mode 100644 index 0000000..57927c5 --- /dev/null +++ b/projects/flutter-demo/.idea/markdown-navigator/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/projects/flutter-demo/.idea/misc.xml b/projects/flutter-demo/.idea/misc.xml new file mode 100644 index 0000000..17d4cf5 --- /dev/null +++ b/projects/flutter-demo/.idea/misc.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/projects/flutter-demo/.idea/modules.xml b/projects/flutter-demo/.idea/modules.xml new file mode 100644 index 0000000..09b142c --- /dev/null +++ b/projects/flutter-demo/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/projects/flutter-demo/.idea/workspace.xml b/projects/flutter-demo/.idea/workspace.xml new file mode 100644 index 0000000..f1c2443 --- /dev/null +++ b/projects/flutter-demo/.idea/workspace.xml @@ -0,0 +1,525 @@ + + + + + + + + + + + + + Log + log + new Log + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +