mirror of
https://github.com/alibaba/flutter-go.git
synced 2025-05-17 12:55:57 +08:00
merge master
This commit is contained in:
19
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
19
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
#### What does this PR do?
|
||||
|
||||
[TrelloCard/Issue/Story](LINK_TO_STORY)
|
||||
|
||||
##### Why are we doing this? Any context or related work?
|
||||
|
||||
#### Where should a reviewer start?
|
||||
|
||||
#### Manual testing steps?
|
||||
|
||||
#### Screenshots
|
||||
|
||||
---
|
||||
|
||||
#### Database changes
|
||||
|
||||
#### Deployment instructions
|
||||
|
||||
#### New ENV variables
|
19
.github/pull_request_template.md
vendored
19
.github/pull_request_template.md
vendored
@ -0,0 +1,19 @@
|
||||
#### What does this PR do?
|
||||
|
||||
[TrelloCard/Issue/Story](LINK_TO_STORY)
|
||||
|
||||
##### Why are we doing this? Any context or related work?
|
||||
|
||||
#### Where should a reviewer start?
|
||||
|
||||
#### Manual testing steps?
|
||||
|
||||
#### Screenshots
|
||||
|
||||
---
|
||||
|
||||
#### Database changes
|
||||
|
||||
#### Deployment instructions
|
||||
|
||||
#### New ENV variables
|
||||
|
410
CHANGE-LOG.md
410
CHANGE-LOG.md
@ -1,86 +1,358 @@
|
||||
## 更新日志
|
||||
|
||||
|
||||
#### 8/28/2019
|
||||
- [x] Modify: IsOpen 的移步判断
|
||||
- [x] Update index.md
|
||||
- [x] Update index.dart
|
||||
#### 5/28/2019
|
||||
- [x] change:async master
|
||||
- [x] modfiy:应用商店
|
||||
- [x] Merge pull request #222 from DeckeDeng/develop
|
||||
- [x] add home scaffold
|
||||
#### 8/22/2019
|
||||
- [x] Merge pull request #322 from alibaba/beta
|
||||
- [x] Modify: web view 方法回退
|
||||
- [x] Merge pull request #321 from alibaba/beta
|
||||
- [x] Merge pull request #317 from alibaba/beta
|
||||
- [x] Merge branch 'master' into beta
|
||||
- [x] Update contribute.md
|
||||
#### 8/12/2019
|
||||
- [x] update: doc & tpl
|
||||
- [x] Update tpl.md
|
||||
- [x] Merge pull request #313 from Nealyang/beta
|
||||
- [x] 添加登陆错误提醒
|
||||
#### 3/11/2019
|
||||
- [x] Update README-en.md
|
||||
#### 8/15/2019
|
||||
- [x] update: router path
|
||||
- [x] ci
|
||||
- [x] update: view remote code
|
||||
- [x] 整理文件
|
||||
#### 8/13/2019
|
||||
- [x] Modify
|
||||
- [x] Modfiy:
|
||||
- [x] update: page issue template
|
||||
#### 8/1/2019
|
||||
- [x] merge code
|
||||
#### 7/29/2019
|
||||
- [x] Merge branch 'master' of github.com:alibaba/flutter-go into beta
|
||||
- [x] delete .github no use file
|
||||
- [x] docs(update: pr template):
|
||||
- [x] del: no use file
|
||||
- [x] Merge branch 'master' of github.com:alibaba/flutter-go
|
||||
- [x] docs(add widget about issue):
|
||||
- [x] Merge branch 'temp' into beta
|
||||
- [x] 迁移位置
|
||||
- [x] update: template
|
||||
- [x] update: 处理合并导致的总理2
|
||||
#### 8/7/2019
|
||||
- [x] fix bug
|
||||
- [x] Merge pull request #302 from Nealyang/beta
|
||||
- [x] remove get collection
|
||||
- [x] tep
|
||||
- [x] update: 完成markdown动态更新
|
||||
#### 8/8/2019
|
||||
- [x] remove user appBar
|
||||
- [x] bottomBar 添加个人中心
|
||||
- [x] Merge pull request #309 from DeckeDeng/beta2
|
||||
- [x] ios project.pbxproj
|
||||
- [x] Merge pull request #308 from DeckeDeng/beta2
|
||||
- [x] Merge pull request #304 from Nealyang/beta
|
||||
- [x] 修改 ios 配置文件
|
||||
- [x] update: 临时增加code-review页
|
||||
#### 6/28/2019
|
||||
- [x] Merge pull request #264 from DeckeDeng/beta2
|
||||
- [x] Merge pull request #263 from DeckeDeng/beta2
|
||||
- [x] Merge branch 'beta' into beta2
|
||||
- [x] 消息反馈页面
|
||||
#### 2/1/2019
|
||||
- [x] Merge branch 'develop' of https://github.com/alibaba/flutter-go into develop
|
||||
- [x] feat:android splash
|
||||
- [x] feat:add android splash
|
||||
- [x] Merge pull request #116 from hanxu317317/develop
|
||||
- [x] docs(更新Readme中环境信息):
|
||||
- [x] Merge pull request #115 from hanxu317317/develop
|
||||
- [x] feat(首页欢迎图, 加入第一次访问判断.):
|
||||
- [x] Merge branch 'develop' into sptil
|
||||
- [x] update: ios启动图描述
|
||||
- [x] fix:yaml
|
||||
- [x] fix:
|
||||
- [x] Merge pull request #113 from hanxu317317/develop
|
||||
- [x] fix:mtl buidl apk test
|
||||
- [x] refactor(conflict):
|
||||
- [x] add sp
|
||||
- [x] fix(解决由于flutter 版本问题导致的报错):
|
||||
- [x] fix:back
|
||||
- [x] fix:package err
|
||||
- [x] fix:modify github package name fail and test
|
||||
- [x] fix:build before modify package's name
|
||||
#### 7/12/2019
|
||||
- [x] Merge pull request #279 from Nealyang/beta
|
||||
- [x] add
|
||||
- [x] d
|
||||
#### 8/6/2019
|
||||
- [x] issuse message
|
||||
- [x] Merge pull request #294 from Nealyang/beta
|
||||
- [x] 修改为线上地址
|
||||
- [x] 个人中心、收藏、搜索
|
||||
#### 7/25/2019
|
||||
- [x] Merge branch 'beta' of github.com:alibaba/flutter-go
|
||||
#### 7/23/2019
|
||||
- [x] zefyr
|
||||
#### 7/22/2019
|
||||
- [x] feature:个人设置
|
||||
#### 7/15/2019
|
||||
- [x] appstore 反馈错误
|
||||
- [x] readme错误
|
||||
- [x] 标题错误,跳转错误
|
||||
#### 7/11/2019
|
||||
- [x] update: 迁移新老数据结构与收藏
|
||||
- [x] update: 增加环境配置. 挂载在application静态属性上
|
||||
- [x] update: 修改文章
|
||||
#### 4/8/2019
|
||||
- [x] flutter project switch ios or android by androidstudio
|
||||
- [x] android permission
|
||||
- [x] remove extra files
|
||||
#### 6/18/2019
|
||||
- [x] 推送,ios/android,test
|
||||
#### 6/15/2019
|
||||
- [x] 删除node相关
|
||||
- [x] Merge branch 'develop' of github.com:alibaba/flutter-common-widgets-app into web
|
||||
- [x] update: 完善demo
|
||||
- [x] update: 界面增加title属性
|
||||
- [x] add: cli使用说明
|
||||
#### 6/11/2019
|
||||
- [x] update: 替换markdown包引入方式
|
||||
- [x] add: 加入标准page模板
|
||||
- [x] 加入标准page
|
||||
- [x] 加入初始化demo
|
||||
- [x] 引入三方flutter_markdown gi
|
||||
#### 6/10/2019
|
||||
- [x] Merge pull request #249 from Nealyang/beta
|
||||
- [x] 添加收藏功能
|
||||
- [x] update: 标准化代码.
|
||||
- [x] goCli 完成90%
|
||||
#### 6/4/2019
|
||||
- [x] markdown
|
||||
- [x] 加入初始gocli
|
||||
- [x] add page demo
|
||||
- [x] 增加page的统一入口
|
||||
- [x] add demos packges
|
||||
- [x] Merge pull request #240 from Nealyang/beta
|
||||
- [x] 退出登陆、feedback 测试
|
||||
#### 5/31/2019
|
||||
- [x] 添加个人中心
|
||||
#### 5/30/2019
|
||||
- [x] 首页不刷新
|
||||
- [x] Merge pull request #1 from forever-713/zuston-patch-1
|
||||
- [x] Fix App name error
|
||||
#### 5/29/2019
|
||||
- [x] 添加 github oAuth 认证,添加错误提醒
|
||||
#### 5/23/2019
|
||||
- [x] readme.md
|
||||
- [x] Merge pull request #219 from weikx/develop
|
||||
- [x] Merge pull request #215 from DeckeDeng/develop
|
||||
- [x] delete firstPage
|
||||
- [x] de
|
||||
- [x] Test:测试分支
|
||||
- [x] Merge branch 'develop' of https://github.com/weikx/flutter-go into develop
|
||||
- [x] Change word 'Free' into 'Three'
|
||||
- [x] Chang word 'Free' into 'Three'
|
||||
#### 5/17/2019
|
||||
- [x] Merge pull request #216 from alibaba/master
|
||||
#### 5/14/2019
|
||||
- [x] update version
|
||||
#### 2/3/2019
|
||||
- [x] fix(解决ios报错):
|
||||
- [x] Merge pull request #119 from Nealyang/master
|
||||
- [x] fix:fix code conflic
|
||||
- [x] fix: code conflict
|
||||
- [x] Merge branch 'develop' into master
|
||||
- [x] fix:view code
|
||||
- [x] Merge pull request #118 from alibaba/dev/yisheng
|
||||
#### 5/9/2019
|
||||
- [x] test version
|
||||
#### 5/7/2019
|
||||
- [x] merge origin
|
||||
- [x] add update test
|
||||
- [x] Merge branch 'develop' of github.com:alibaba/flutter-go
|
||||
- [x] cookie 校验
|
||||
- [x] modify home.dart bottom tab
|
||||
- [x] session 验证
|
||||
- [x] merge develop
|
||||
- [x] 登陆
|
||||
- [x] Merge pull request #205 from alibaba/dev/sanl
|
||||
- [x] modify bottom tab
|
||||
- [x] delete ios file
|
||||
- [x] add apk
|
||||
- [x] Login 登陆界面
|
||||
#### 5/6/2019
|
||||
- [x] add login
|
||||
#### 5/1/2019
|
||||
- [x] Modfiy: 改造业内资讯页面
|
||||
#### 4/30/2019
|
||||
- [x] Add:二期开发-重构首页布局
|
||||
- [x] gradle 4.10.2 包添加AndroidX配置
|
||||
#### 2/19/2019
|
||||
- [x] packagename
|
||||
- [x] Merge pull request #148 from alibaba/dev/yisheng
|
||||
- [x] refactor:按照代码规范调整import 文件
|
||||
- [x] update: 规范
|
||||
- [x] Merge pull request #147 from Nealyang/master
|
||||
- [x] fix:修复TabBar demo
|
||||
- [x] Merge pull request #146 from Nealyang/master
|
||||
- [x] refactor: 根据规范重构代码
|
||||
- [x] Merge pull request #145 from alibaba/dev/yisheng
|
||||
- [x] refactor:按照代码规范调整markdow解析
|
||||
- [x] refactor(规范化代码):
|
||||
- [x] Merge pull request #143 from Nealyang/master
|
||||
- [x] refactor:按规范修改代码、注释等
|
||||
- [x] Merge pull request #142 from Nealyang/master
|
||||
- [x] commit
|
||||
- [x] Merge pull request #141 from Nealyang/master
|
||||
- [x] Merge pull request #140 from Nealyang/master
|
||||
- [x] Merge pull request #135 from hanxu317317/develop
|
||||
- [x] Merge branch 'develop' into develop
|
||||
- [x] Merge pull request #139 from Nealyang/master
|
||||
- [x] Merge branch 'develop' of github.com:alibaba/flutter-common-widgets-app
|
||||
- [x] refactor:根据规范,重构代码
|
||||
- [x] modify code comments
|
||||
- [x] Merge pull request #138 from alibaba/dev/yisheng
|
||||
- [x] refactor:按照代码规范调整注释文件
|
||||
#### 4/29/2019
|
||||
- [x] test app store
|
||||
- [x] Merge branch 'master' into dev/sanl
|
||||
- [x] 修改bug
|
||||
#### 4/26/2019
|
||||
- [x] Debug: GoogleService-Info.plist 位置问题 导致错误
|
||||
- [x] change LICENSE date
|
||||
- [x] 变更许可
|
||||
- [x] Merge pull request #189 from alibaba/develop
|
||||
- [x] change License
|
||||
#### 4/22/2019
|
||||
- [x] release apk
|
||||
- [x] Merge pull request #192 from alibaba/dev/yisheng
|
||||
- [x] 格式化
|
||||
- [x] Merge pull request #191 from alibaba/dev/yisheng
|
||||
- [x] Delete:删除 .gradle 文件夹
|
||||
- [x] Merge pull request #188 from alibaba/dev/yisheng
|
||||
#### 4/17/2019
|
||||
- [x] gridView 网格效果 图片流
|
||||
- [x] 添加渐变效果/网络图片覆盖图层渲染/图片填充
|
||||
#### 1/31/2019
|
||||
- [x] Merge pull request #112 from alibaba/dev/yisheng
|
||||
- [x] Debug:canvas 路由问题
|
||||
- [x] Merge pull request #111 from alibaba/dev/yisheng
|
||||
- [x] feat: Canvas 细化各种方法
|
||||
- [x] add file
|
||||
- [x] fix:code
|
||||
- [x] feat(加入启动图, 时间2秒):
|
||||
#### 4/12/2019
|
||||
- [x] update: 修改错字
|
||||
- [x] Merge pull request #180 from alibaba/develop
|
||||
- [x] add: doc roadmap
|
||||
#### 4/1/2019
|
||||
- [x] remove recruit
|
||||
- [x] move recruit
|
||||
#### 3/31/2019
|
||||
- [x] 增加模板
|
||||
- [x] Create pull_request_template.md
|
||||
- [x] Delete .github
|
||||
- [x] Create .github
|
||||
- [x] Merge pull request #173 from alibaba/master
|
||||
#### 2/2/2019
|
||||
- [x] fix: 部分代码添加 mounted
|
||||
- [x] Merge pull request #117 from alibaba/dev/yisheng
|
||||
- [x] fix:修复Canvas组件收藏的bug
|
||||
#### 2/20/2019
|
||||
- [x] 同步文件
|
||||
- [x] Merge pull request #152 from hanxu317317/develop
|
||||
- [x] 更新跳转页方式
|
||||
- [x] modify logo
|
||||
- [x] Merge pull request #149 from hanxu317317/develop
|
||||
- [x] fix(解决返回首页报错的问题):
|
||||
#### 2/11/2019
|
||||
- [x] fix: 部分代码 analysis 解决
|
||||
#### 2019-2-5
|
||||
- [x] 处理因为flutter版本导致的项目运行不起来
|
||||
- [x] 更新readme, 加入开发日志, 与相关说明
|
||||
- [x] 加入 首页欢迎效果图
|
||||
- [x] refactor(整理richText的说明):
|
||||
- [x] 解决一些页面的code演示打不开的问题
|
||||
- [x] add:开发规范
|
||||
- [x] add:版本更新历史链接
|
||||
- [x] Update README.md
|
||||
- [x] add:添加版本号
|
||||
- [x] feat:添加代码开发规范
|
||||
- [x] refactor(update: version & fiexed warns):
|
||||
- [x] fix(solve conflict):
|
||||
- [x] modify:toast and andrid apk label
|
||||
- [x] Add:自动 pr 工具抓取器,抓取两周前至今的,提交数据,并去重
|
||||
- [x] fix:fluttetToast backHome
|
||||
- [x] fix:modified the style of toast && remote files
|
||||
- [x] chore(删除tools/log.json):
|
||||
- [x] 重构文件结构
|
||||
- [x] 关于手册图标更换
|
||||
- [x] 增加demo: CupertinoNavigationBar CupertinoPageRoute CupertinoPageScaffold CupertinoPicker,CupertinoPopupSurface CupertinoTimerPickerDemo
|
||||
- [x] 处理因为flutter版本导致的项目运行不起来
|
||||
- [x] 更新readme, 加入开发日志, 与相关说明
|
||||
- [x] 加入 首页欢迎效果图
|
||||
- [x] refactor(整理richText的说明):
|
||||
- [x] 解决一些页面的code演示打不开的问题
|
||||
- [x] add:开发规范
|
||||
- [x] add:版本更新历史链接
|
||||
- [x] Update README.md
|
||||
- [x] add:添加版本号
|
||||
- [x] feat:添加代码开发规范
|
||||
- [x] refactor(update: version & fiexed warns):
|
||||
- [x] fix(solve conflict):
|
||||
- [x] modify:toast and andrid apk label
|
||||
- [x] Add:自动 pr 工具抓取器,抓取两周前至今的,提交数据,并去重
|
||||
- [x] fix:fluttetToast backHome
|
||||
- [x] fix:modified the style of toast && remote files
|
||||
- [x] chore(删除tools/log.json):
|
||||
- [x] 重构文件结构
|
||||
- [x] 关于手册图标更换
|
||||
- [x] 增加demo: CupertinoNavigationBar CupertinoPageRoute CupertinoPageScaffold CupertinoPicker,CupertinoPopupSurface CupertinoTimerPickerDemo
|
||||
|
||||
|
||||
#### 2019-1-24
|
||||
- [x] 功能:更新小部件的图标
|
||||
- [x] 功能:添加CupertinoTimerPickerDemo
|
||||
- [x] 调试:消除警告
|
||||
- [x] 修复:关于手册图标更换
|
||||
- [x] 添加:文案描述
|
||||
- [x] 添加:CupertinoPicker,CupertinoPopupSurface
|
||||
- [x] 功能:更新小部件的图标
|
||||
- [x] 功能:添加CupertinoTimerPickerDemo
|
||||
- [x] 调试:消除警告
|
||||
- [x] 修复:关于手册图标更换
|
||||
- [x] 添加:文案描述
|
||||
- [x] 添加:CupertinoPicker,CupertinoPopupSurface
|
||||
#### 2019-1-23
|
||||
- [x] 修复: 导航栏home返回报错
|
||||
- [x] 修复:收集错误
|
||||
- [x] 添加:CupertinoNavigationBar CupertinoPageRoute CupertinoPageScaffold
|
||||
- [x] 修复: 导航栏home返回报错
|
||||
- [x] 修复:收集错误
|
||||
- [x] 添加:CupertinoNavigationBar CupertinoPageRoute CupertinoPageScaffold
|
||||
#### 2019-1-22
|
||||
- [x] 功能:在Allsimon拉请求中添加英文简介
|
||||
- [x] 功能:在Allsimon拉请求中添加英文简介
|
||||
#### 2019-1-21
|
||||
- [x] 功能:Cupertino的子项
|
||||
- [x] 功能:Cupertino的子项
|
||||
#### 2019-1-20
|
||||
- [x] 功能:CupertinoSwitch演示
|
||||
- [x] 功能:为搜索列表加入图标
|
||||
- [x] 功能:CupertinoSliverRefreshControl演示
|
||||
- [x] 功能:CupertinoSliverNavigationBar演示
|
||||
- [x] 功能:CupertinoSwitch演示
|
||||
- [x] 功能:为搜索列表加入图标
|
||||
- [x] 功能:CupertinoSliverRefreshControl演示
|
||||
- [x] 功能:CupertinoSliverNavigationBar演示
|
||||
#### 2019-1-18
|
||||
- [x] 更新:SharedPreferences保存数据和android设备布局溢出
|
||||
- [x] 功能:添加CupertinoScrollbar演示
|
||||
- [x] 功能:第四页暂时用欢迎页替代。后期再开发
|
||||
- [x] 更新:SharedPreferences保存数据和android设备布局溢出
|
||||
- [x] 功能:添加CupertinoScrollbar演示
|
||||
- [x] 功能:第四页暂时用欢迎页替代。后期再开发
|
||||
#### 2019-1-17
|
||||
- [x] 添加:+许可证
|
||||
- [x] 添加:+许可证
|
||||
#### 2019-1-16
|
||||
- [x] 转换:将README翻译为En语言环境
|
||||
- [x] 功能:CupertinoScrollbar演示
|
||||
- [x] 转换:将README翻译为En语言环境
|
||||
- [x] 功能:CupertinoScrollbar演示
|
||||
#### 2019-1-14
|
||||
- [x] 添加:增加手册页面
|
||||
- [x] 功能:文字演示
|
||||
- [x] 重构:修改过的图标
|
||||
- [x] 重构:文档,文章,组件收藏,新增webView
|
||||
- [x] 重构:修改过的演示
|
||||
- [x] 重构:代码视图
|
||||
- [x] 更新:版本 和readme.md
|
||||
- [x] 修改:添加代码视图
|
||||
- [x] 功能:添加搜索历史记录板
|
||||
- [x] 修改:列出加标头错误
|
||||
- [x] 添加:增加手册页面
|
||||
- [x] 功能:文字演示
|
||||
- [x] 重构:修改过的图标
|
||||
- [x] 重构:文档,文章,组件收藏,新增webView
|
||||
- [x] 重构:修改过的演示
|
||||
- [x] 重构:代码视图
|
||||
- [x] 更新:版本 和readme.md
|
||||
- [x] 修改:添加代码视图
|
||||
- [x] 功能:添加搜索历史记录板
|
||||
- [x] 修改:列出加标头错误
|
||||
#### 2019-1-15
|
||||
- [x] 功能:welcomepage
|
||||
- [x] 功能:welcomepage
|
||||
#### 2019-1-13
|
||||
- [x] 添加:一些输入描述
|
||||
- [x] 功能:加入GridPaper&SliverGrid
|
||||
- [x] 重构:修改db
|
||||
- [x] 重构:删除数据库 TabBarView
|
||||
- [x] 添加:网格视图
|
||||
- [x] 修改:checkbosListTile 错误
|
||||
- [x] 修改:自动提示文案
|
||||
- [x] 功能:增加免责声明,声明组件,自动弹出,左上角入口
|
||||
- [x] 重构:整理数据库初始逻辑,判断数据库完整性,判断是否存在已知的cat,widget,collection 三张表。
|
||||
- [x] 修复:DialogDemo,无法关闭的问题
|
||||
- [x] 添加:一些输入描述
|
||||
- [x] 功能:加入GridPaper&SliverGrid
|
||||
- [x] 重构:修改db
|
||||
- [x] 重构:删除数据库 TabBarView
|
||||
- [x] 添加:网格视图
|
||||
- [x] 修改:checkbosListTile 错误
|
||||
- [x] 修改:自动提示文案
|
||||
- [x] 功能:增加免责声明,声明组件,自动弹出,左上角入口
|
||||
- [x] 重构:整理数据库初始逻辑,判断数据库完整性,判断是否存在已知的cat,widget,collection 三张表。
|
||||
- [x] 修复:DialogDemo,无法关闭的问题
|
||||
#### 2019-1-12
|
||||
- [x] 修复:icon没有,但内容有的,组件,给补充了icon
|
||||
- [x] 修改:1.整理文件 2.修正分析
|
||||
- [x] 更新:flutter_rookie_book => flutter_go
|
||||
- [x] 更新:更新SearchInput文件名=> search_input
|
||||
- [x] 修改:文件名称的大小写规范
|
||||
- [x] 修改:修正bottomNavigationBar iconButton警告
|
||||
- [x] 修复:icon没有,但内容有的,组件,给补充了icon
|
||||
- [x] 修改:1.整理文件 2.修正分析
|
||||
- [x] 更新:flutter_rookie_book => flutter_go
|
||||
- [x] 更新:更新SearchInput文件名=> search_input
|
||||
- [x] 修改:文件名称的大小写规范
|
||||
- [x] 修改:修正bottomNavigationBar iconButton警告
|
||||
|
76
CODE_OF_CONDUCT.md
Normal file
76
CODE_OF_CONDUCT.md
Normal file
@ -0,0 +1,76 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to making participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
||||
level of experience, education, socio-economic status, nationality, personal
|
||||
appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community. Examples of
|
||||
representing a project or community include using an official project e-mail
|
||||
address, posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event. Representation of a project may be
|
||||
further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting the project team at zhu.yan@alibaba-inc.com. All
|
||||
complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. The project team is
|
||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||
Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see
|
||||
https://www.contributor-covenant.org/faq
|
1
CONTRIBUTING.md
Normal file
1
CONTRIBUTING.md
Normal file
@ -0,0 +1 @@
|
||||
[Flutter Go 共建](https://github.com/alibaba/flutter-go/blob/master/docs/contribute.md)
|
@ -80,8 +80,8 @@ Language: [English](https://github.com/alibaba/flutter-go/blob/master/README-en.
|
||||
### android正式版,下载地址:
|
||||
|
||||
- 华为市场已上线,华为应用市场搜索 "Fluttergo"或者直接[点击下载](https://appstore.huawei.com/search/fluttergo)
|
||||
- [直接 apk 文件下载](https://github.com/alibaba/flutter-go/releases/download/0.0.5/app-release.apk)
|
||||
<img src="https://img.alicdn.com/tfs/TB1LbEYarys3KVjSZFnXXXFzpXa-378-380.jpg" width=200>
|
||||
- [直接 apk 文件下载](https://github.com/alibaba/flutter-go/blob/master/android/app/release/app-release.apk)
|
||||
|
||||
|
||||
### iphone正式版,下载地址:
|
||||
|
||||
|
@ -9,7 +9,6 @@ import 'dart:async';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
|
||||
const disclaimerText1 =
|
||||
'\r\r\r\r\r\r本APP属于个人的非赢利性开源项目,以供开源社区使用,凡本APP转载的所有的文章 、图片、音频、视频文件等资料的版权归版权所有人所有,本APP采用的非本站原创文章及图片等内容无法一一和版权者联系,如果本网所选内容的文章作者及编辑认为其作品不宜上网供大家浏览,或不应无偿使用请及时用电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。';
|
||||
const disclaimerText2 =
|
||||
@ -23,6 +22,7 @@ class DisclaimerMsg extends StatefulWidget {
|
||||
DisclaimerMsgState createState() => DisclaimerMsgState();
|
||||
}
|
||||
|
||||
|
||||
class DisclaimerMsgState extends State<DisclaimerMsg> {
|
||||
Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
|
||||
Future<bool> _unKnow;
|
||||
@ -33,11 +33,14 @@ class DisclaimerMsgState extends State<DisclaimerMsg> {
|
||||
void refs(bool value) async {
|
||||
final SharedPreferences prefs = await _prefs;
|
||||
final bool unKnow = value;
|
||||
_valBool = value;
|
||||
_readed = value;
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
_unKnow = prefs.setBool("disclaimer::Boolean", unKnow).then((bool success) {
|
||||
return unKnow;
|
||||
});
|
||||
_unKnow =
|
||||
prefs.setBool("disclaimer::Boolean", unKnow).then((bool success) {
|
||||
return unKnow;
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -60,110 +63,14 @@ class DisclaimerMsgState extends State<DisclaimerMsg> {
|
||||
context: context,
|
||||
barrierDismissible: false, // user must tap button!
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
//title: Text('免责声明'),
|
||||
content: SingleChildScrollView(
|
||||
child: ListBody(
|
||||
children: <Widget>[
|
||||
Container(
|
||||
padding: EdgeInsets.fromLTRB(5.0, 5.0, 10.0, 10.0),
|
||||
//width: 100,
|
||||
height: 35,
|
||||
child: Text('免责声明',
|
||||
style: TextStyle(
|
||||
fontSize: 18, fontWeight: FontWeight.w700)),
|
||||
decoration: BoxDecoration(
|
||||
//color: Colors.blue,
|
||||
image: DecorationImage(
|
||||
fit: BoxFit.fitWidth,
|
||||
image: AssetImage('assets/images/paimaiLogo.png')),
|
||||
borderRadius: BorderRadius.all(
|
||||
Radius.circular(10.0),
|
||||
),
|
||||
//alignment: Alignment.bottomRight,
|
||||
)),
|
||||
SizedBox(height: 20),
|
||||
Text(disclaimerText1),
|
||||
Text(disclaimerText2),
|
||||
],
|
||||
),
|
||||
),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: new BorderRadius.circular(20.0)), // 圆角
|
||||
|
||||
actions: <Widget>[
|
||||
new Container(
|
||||
width: 250,
|
||||
child: _create(),
|
||||
)
|
||||
],
|
||||
);
|
||||
return DisclaimerMsgDialog(_valBool, _readed, (b){
|
||||
refs(b);
|
||||
});
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Row _create() {
|
||||
//已读
|
||||
if (_readed) {
|
||||
return Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: <Widget>[
|
||||
FlatButton(
|
||||
padding: EdgeInsets.symmetric(horizontal: 20.0),
|
||||
child: Text('已阅读知晓',
|
||||
style: TextStyle(fontSize: 16, color: Colors.white)),
|
||||
//可点击
|
||||
color: Theme.of(context).primaryColor,
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
),
|
||||
SizedBox(
|
||||
width: 10.0,
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
//第一次读取
|
||||
return Row(mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||
//crossAxisAlignment:CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
Checkbox(
|
||||
activeColor: Theme.of(context).primaryColor,
|
||||
tristate: false,
|
||||
value: _valBool,
|
||||
onChanged: (bool bol) {
|
||||
if(mounted) {
|
||||
setState(() {
|
||||
_valBool = bol;
|
||||
});
|
||||
}
|
||||
Navigator.of(context).pop(); // here I pop to avoid multiple Dialogs
|
||||
showAlertDialog(context); //here i call the same function
|
||||
}),
|
||||
Text('不再自动提示', style: TextStyle(fontSize: 14)),
|
||||
],
|
||||
),
|
||||
FlatButton(
|
||||
child: Text('知道了',
|
||||
style: TextStyle(fontSize: 16, color: Colors.white)),
|
||||
//可点击
|
||||
color: _valBool
|
||||
? Theme.of(context).primaryColor
|
||||
: Theme.of(context).primaryColor.withAlpha(800),
|
||||
onPressed: () {
|
||||
// if (_valBool) {
|
||||
refs(_valBool);
|
||||
Navigator.of(context).pop();
|
||||
// }
|
||||
},
|
||||
),
|
||||
]);
|
||||
}
|
||||
|
||||
Widget build(BuildContext context) {
|
||||
return GestureDetector(
|
||||
@ -178,7 +85,7 @@ class DisclaimerMsgState extends State<DisclaimerMsg> {
|
||||
alignment: Alignment.center,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius:
|
||||
BorderRadius.horizontal(right: Radius.circular(10)),
|
||||
BorderRadius.horizontal(right: Radius.circular(10)),
|
||||
color: Colors.black45,
|
||||
),
|
||||
child: Text(
|
||||
@ -194,3 +101,150 @@ class DisclaimerMsgState extends State<DisclaimerMsg> {
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class DisclaimerMsgDialog extends StatefulWidget {
|
||||
|
||||
final bool valBool;
|
||||
final bool readed;
|
||||
final ValueChanged<bool> onValueChanged;
|
||||
|
||||
|
||||
DisclaimerMsgDialog(this.valBool, this.readed, this.onValueChanged);
|
||||
|
||||
@override
|
||||
_DisclaimerMsgDialogState createState() => _DisclaimerMsgDialogState();
|
||||
}
|
||||
|
||||
class _DisclaimerMsgDialogState extends State<DisclaimerMsgDialog> {
|
||||
|
||||
bool readBool;
|
||||
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
readBool = widget.valBool;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Row _create() {
|
||||
//已读
|
||||
if (widget.readed) {
|
||||
return Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: <Widget>[
|
||||
FlatButton(
|
||||
padding: EdgeInsets.symmetric(horizontal: 20.0),
|
||||
child: Text('已阅读知晓',
|
||||
style: TextStyle(fontSize: 16, color: Colors.white)),
|
||||
//可点击
|
||||
color: Theme
|
||||
.of(context)
|
||||
.primaryColor,
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
),
|
||||
SizedBox(
|
||||
width: 10.0,
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
/// 选中状态更新,并返回数据
|
||||
checkChanged(){
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
readBool = !readBool;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//第一次读取
|
||||
return Row(mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||
//crossAxisAlignment:CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
GestureDetector(
|
||||
onTap: (){
|
||||
checkChanged();
|
||||
},
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
Checkbox(
|
||||
activeColor: Theme
|
||||
.of(context)
|
||||
.primaryColor,
|
||||
tristate: false,
|
||||
value: readBool,
|
||||
onChanged: (bool bol) {
|
||||
checkChanged();
|
||||
}),
|
||||
Text('不再自动提示', style: TextStyle(fontSize: 14)),
|
||||
],
|
||||
),
|
||||
),
|
||||
FlatButton(
|
||||
child: Text('知道了',
|
||||
style: TextStyle(fontSize: 16, color: Colors.white)),
|
||||
//可点击
|
||||
color: readBool
|
||||
? Theme
|
||||
.of(context)
|
||||
.primaryColor
|
||||
: Theme
|
||||
.of(context)
|
||||
.primaryColor
|
||||
.withAlpha(800),
|
||||
onPressed: () {
|
||||
widget.onValueChanged(readBool);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
),
|
||||
]);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AlertDialog(
|
||||
//title: Text('免责声明'),
|
||||
content: SingleChildScrollView(
|
||||
child: ListBody(
|
||||
children: <Widget>[
|
||||
Container(
|
||||
padding: EdgeInsets.fromLTRB(5.0, 5.0, 10.0, 10.0),
|
||||
//width: 100,
|
||||
height: 35,
|
||||
child: Text('免责声明',
|
||||
style:
|
||||
TextStyle(fontSize: 18, fontWeight: FontWeight.w700)),
|
||||
decoration: BoxDecoration(
|
||||
//color: Colors.blue,
|
||||
image: DecorationImage(
|
||||
fit: BoxFit.fitWidth,
|
||||
image: AssetImage('assets/images/paimaiLogo.png')),
|
||||
borderRadius: BorderRadius.all(
|
||||
Radius.circular(10.0),
|
||||
),
|
||||
//alignment: Alignment.bottomRight,
|
||||
)),
|
||||
SizedBox(height: 20),
|
||||
Text(disclaimerText1),
|
||||
Text(disclaimerText2),
|
||||
],
|
||||
),
|
||||
),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: new BorderRadius.circular(20.0)), // 圆角
|
||||
|
||||
actions: <Widget>[
|
||||
new Container(
|
||||
width: 250,
|
||||
child: _create(),
|
||||
)
|
||||
],
|
||||
);
|
||||
}}
|
||||
|
@ -15,13 +15,9 @@ typedef void OnSubmit(String value);
|
||||
|
||||
///搜索结果内容显示面板
|
||||
class MaterialSearchResult<T> extends StatelessWidget {
|
||||
const MaterialSearchResult({
|
||||
Key key,
|
||||
this.value,
|
||||
this.text,
|
||||
this.icon,
|
||||
this.onTap
|
||||
}) : super(key: key);
|
||||
const MaterialSearchResult(
|
||||
{Key key, this.value, this.text, this.icon, this.onTap})
|
||||
: super(key: key);
|
||||
|
||||
final String value;
|
||||
final VoidCallback onTap;
|
||||
@ -30,7 +26,6 @@ class MaterialSearchResult<T> extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
return new InkWell(
|
||||
onTap: this.onTap,
|
||||
child: new Container(
|
||||
@ -38,8 +33,14 @@ class MaterialSearchResult<T> extends StatelessWidget {
|
||||
padding: EdgeInsets.fromLTRB(20.0, 0.0, 20.0, 10.0),
|
||||
child: new Row(
|
||||
children: <Widget>[
|
||||
new Container(width: 30.0, margin: EdgeInsets.only(right: 10), child: new Icon(icon)) ?? null,
|
||||
new Expanded(child: new Text(value, style: Theme.of(context).textTheme.subhead)),
|
||||
new Container(
|
||||
width: 30.0,
|
||||
margin: EdgeInsets.only(right: 10),
|
||||
child: new Icon(icon)) ??
|
||||
null,
|
||||
new Expanded(
|
||||
child: new Text(value,
|
||||
style: Theme.of(context).textTheme.subhead)),
|
||||
new Text(text, style: Theme.of(context).textTheme.subhead)
|
||||
],
|
||||
),
|
||||
@ -124,6 +125,7 @@ class _MaterialSearchState<T> extends State<MaterialSearch> {
|
||||
}
|
||||
|
||||
Timer _resultsTimer;
|
||||
|
||||
Future _getResultsDebounced() async {
|
||||
if (_results.length == 0) {
|
||||
setState(() {
|
||||
@ -164,6 +166,7 @@ class _MaterialSearchState<T> extends State<MaterialSearch> {
|
||||
super.dispose();
|
||||
_resultsTimer?.cancel();
|
||||
}
|
||||
|
||||
Widget buildBody(List results) {
|
||||
if (_criteria.isEmpty) {
|
||||
return History();
|
||||
@ -171,16 +174,11 @@ class _MaterialSearchState<T> extends State<MaterialSearch> {
|
||||
return new Center(
|
||||
child: new Padding(
|
||||
padding: const EdgeInsets.only(top: 50.0),
|
||||
child: new CircularProgressIndicator()
|
||||
)
|
||||
);
|
||||
child: new CircularProgressIndicator()));
|
||||
}
|
||||
if (results.isNotEmpty) {
|
||||
var content = new SingleChildScrollView(
|
||||
child: new Column(
|
||||
children: results
|
||||
)
|
||||
);
|
||||
var content =
|
||||
new SingleChildScrollView(child: new Column(children: results));
|
||||
return content;
|
||||
}
|
||||
return Center(child: Text("暂无数据"));
|
||||
@ -241,7 +239,7 @@ class _MaterialSearchState<T> extends State<MaterialSearch> {
|
||||
],
|
||||
),
|
||||
body: buildBody(results),
|
||||
);
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -405,34 +403,35 @@ class SearchInput extends StatelessWidget {
|
||||
}
|
||||
// wigdet干掉.=> componets
|
||||
|
||||
|
||||
class History extends StatefulWidget {
|
||||
const History() : super();
|
||||
|
||||
@override
|
||||
_History createState() => _History();
|
||||
_History createState() => _History();
|
||||
}
|
||||
|
||||
// AppBar 默认的实例,有状态
|
||||
class _History extends State<History> {
|
||||
SearchHistoryList searchHistoryList = new SearchHistoryList();
|
||||
bool refreshFlag;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
this.refreshFlag = true;
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
buildChips(BuildContext context) {
|
||||
List<Widget> list = [];
|
||||
List<SearchHistory> historyList = searchHistoryList.getList();
|
||||
print("historyList> $historyList");
|
||||
Color bgColor = Theme.of(context).primaryColor;
|
||||
historyList.forEach((SearchHistory value) {
|
||||
|
||||
Widget icon = CircleAvatar(
|
||||
backgroundColor: bgColor,
|
||||
child: Text(
|
||||
@ -445,20 +444,28 @@ class _History extends State<History> {
|
||||
}
|
||||
String targetRouter = value.targetRouter;
|
||||
|
||||
list.add(
|
||||
InkWell(
|
||||
onTap: () {
|
||||
Application.router.navigateTo(context, "${targetRouter.toLowerCase()}", transition: TransitionType.inFromRight);
|
||||
},
|
||||
child: Chip(
|
||||
avatar: icon,
|
||||
label: Text("${value.name}"),
|
||||
),
|
||||
)
|
||||
);
|
||||
list.add(InkWell(
|
||||
onTap: () {
|
||||
Application.router.navigateTo(
|
||||
context, "${targetRouter.toLowerCase()}",
|
||||
transition: TransitionType.inFromRight);
|
||||
},
|
||||
child: Chip(
|
||||
avatar: icon,
|
||||
label: Text("${value.name}"),
|
||||
),
|
||||
));
|
||||
});
|
||||
return list;
|
||||
}
|
||||
|
||||
_clearHistory() {
|
||||
searchHistoryList.clear();
|
||||
this.setState(() {
|
||||
this.refreshFlag = !this.refreshFlag;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
List<Widget> childList = buildChips(context);
|
||||
@ -470,25 +477,38 @@ class _History extends State<History> {
|
||||
return Column(
|
||||
children: <Widget>[
|
||||
Container(
|
||||
alignment: Alignment.centerLeft,
|
||||
padding: EdgeInsets.fromLTRB(12.0, 12, 12, 0),
|
||||
child: InkWell(
|
||||
onLongPress: () {
|
||||
searchHistoryList.clear();
|
||||
},
|
||||
child: Text('历史搜索'),
|
||||
),
|
||||
),
|
||||
alignment: Alignment.centerLeft,
|
||||
padding: EdgeInsets.fromLTRB(12.0, 12, 12, 0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
InkWell(
|
||||
onLongPress: () {
|
||||
searchHistoryList.clear();
|
||||
},
|
||||
child: Text('历史搜索'),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: _clearHistory,
|
||||
child: Container(
|
||||
child: new Icon(Icons.delete,
|
||||
size: 24.0, color: Theme.of(context).accentColor),
|
||||
width: 30,
|
||||
height: 30,
|
||||
),
|
||||
)
|
||||
],
|
||||
)),
|
||||
Container(
|
||||
padding: EdgeInsets.only(left: 10),
|
||||
alignment: Alignment.topLeft,
|
||||
child: Wrap(
|
||||
spacing: 6.0, // gap between adjacent chips
|
||||
runSpacing: 0.0, // gap between lines
|
||||
children: childList
|
||||
),
|
||||
spacing: 6.0, // gap between adjacent chips
|
||||
runSpacing: 0.0, // gap between lines
|
||||
children: childList),
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -185,7 +185,7 @@ class _WidgetDemoState extends State<WidgetDemo> {
|
||||
new IconButton(
|
||||
tooltip: 'goBack home',
|
||||
onPressed: () {
|
||||
Navigator.popUntil(context, ModalRoute.withName('/'));
|
||||
Navigator.popUntil(context, ModalRoute.withName(Routes.root));
|
||||
},
|
||||
icon: Icon(Icons.home),
|
||||
),
|
||||
|
@ -203,6 +203,7 @@ void _startupJpush() async {
|
||||
}
|
||||
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
final provider = new Provider();
|
||||
await provider.init(true);
|
||||
sp = await SpUtil.getInstance();
|
||||
|
@ -73,7 +73,7 @@ class SearchHistoryList {
|
||||
}
|
||||
|
||||
add(SearchHistory item) {
|
||||
print("_searchHistoryList> ${_searchHistoryList.length}");
|
||||
print("add item to serach history ${item.targetRouter}");
|
||||
for (SearchHistory value in _searchHistoryList) {
|
||||
if (value.name == item.name) {
|
||||
return;
|
||||
|
@ -1 +1 @@
|
||||
[{"name":"demoName","screenShot":"","author":"yourName","email":"yourEmail","desc":"这是一个测试的标准demo","id":"1a29aa8e_32ae_4241_9c8a_5c9e1f92b096"},{"name":"local","screenShot":"","author":"ab","email":"email","desc":"ags","id":"2c1d57d0_42ae_4241_9c8a_5c9e1f92b096"}]
|
||||
[{"name":"RangeSlider","screenShot":"","author":"RangeSlider","email":"hanxu317@qq.com","desc":"RangeSlider widget demo","id":"e5f958bc_52ae_4241_9c8a_5c9e1f92b096"},{"name":"demoName","screenShot":"","author":"yourName","email":"yourEmail","desc":"这是一个测试的标准demo","id":"1a29aa8e_32ae_4241_9c8a_5c9e1f92b096"},{"name":"local","screenShot":"","author":"ab","email":"email","desc":"ags","id":"2c1d57d0_42ae_4241_9c8a_5c9e1f92b096"}]
|
@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "RangeSlider",
|
||||
"screenShot": "",
|
||||
"author":"RangeSlider",
|
||||
"email": "hanxu317@qq.com",
|
||||
"desc": "RangeSlider widget demo",
|
||||
"id": "e5f958bc_52ae_4241_9c8a_5c9e1f92b096"
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
//
|
||||
// Created with flutter go cli
|
||||
// User: RangeSlider
|
||||
// Time: 2019-09-12 15:11:05.512158
|
||||
// email: hanxu317@qq.com
|
||||
// desc: RangeSlider widget demo
|
||||
//
|
||||
|
||||
import 'src/index.dart';
|
||||
|
||||
var demoWidgets = [
|
||||
new Demo()
|
||||
];
|
||||
|
||||
|
@ -0,0 +1,30 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class Demo extends StatefulWidget {
|
||||
@override
|
||||
_State createState() => _State();
|
||||
}
|
||||
|
||||
class _State extends State<Demo> {
|
||||
RangeValues valuess = RangeValues(20.0, 50.0);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return RangeSlider(
|
||||
values: valuess,
|
||||
//实际进度的位置
|
||||
inactiveColor: Colors.black12,
|
||||
//进度中不活动部分的颜色
|
||||
labels: RangeLabels('12', '23'),
|
||||
min: 0.0,
|
||||
max: 100.0,
|
||||
divisions: 1000,
|
||||
activeColor: Colors.blue,
|
||||
//进度中活动部分的颜色
|
||||
onChanged: (rangeValues) {
|
||||
setState(() {
|
||||
valuess = rangeValues;
|
||||
});
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
import 'RangeSlider_RangeSlider_e5f958bc_52ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardDemo_RangeSlider_e5f958bc_52ae_4241_9c8a_5c9e1f92b096;
|
||||
import 'demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardDemo_demoName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096;
|
||||
import 'local_ab_2c1d57d0_42ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardDemo_local_2c1d57d0_42ae_4241_9c8a_5c9e1f92b096;
|
||||
var demoObjects = {
|
||||
'e5f958bc_52ae_4241_9c8a_5c9e1f92b096': StandardDemo_RangeSlider_e5f958bc_52ae_4241_9c8a_5c9e1f92b096.demoWidgets,
|
||||
'1a29aa8e_32ae_4241_9c8a_5c9e1f92b096': StandardDemo_demoName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096.demoWidgets,
|
||||
'2c1d57d0_42ae_4241_9c8a_5c9e1f92b096': StandardDemo_local_2c1d57d0_42ae_4241_9c8a_5c9e1f92b096.demoWidgets
|
||||
};
|
@ -1 +1 @@
|
||||
[{"name":"local","screenShot":"","author":"hnaxu","title":"本地","email":"hanxu@qq.com","desc":"desc","id":"5d7178d0_42ae_4241_9c8a_5c9e1f92b096"},{"name":"test","screenShot":"","author":"abc","title":"ya","email":"adsf.com","desc":"desc","id":"84f38e00_42ae_4241_9c8a_5c9e1f92b096"},{"name":"standard","screenShot":"","author":"sanfan","title":"介绍页","email":"hanxu317@qq.com","desc":"desc","id":"ee4feb8e_32ae_4241_9c8a_5c9e1f92b096"},{"name":"standard_for_slider","screenShot":"","author":"sanfan","title":"slider组件","email":"hanxu@qq.com","desc":"slider, new Slider","id":"8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096"}]
|
||||
[{"name":"local","screenShot":"","author":"hnaxu","title":"本地","email":"hanxu@qq.com","desc":"desc","id":"5d7178d0_42ae_4241_9c8a_5c9e1f92b096"},{"name":"test","screenShot":"","author":"abc","title":"ya","email":"adsf.com","desc":"desc","id":"84f38e00_42ae_4241_9c8a_5c9e1f92b096"},{"name":"standard","screenShot":"","author":"sanfan","title":"介绍页","email":"hanxu317@qq.com","desc":"desc","id":"ee4feb8e_32ae_4241_9c8a_5c9e1f92b096"},{"name":"standard_for_slider","screenShot":"","author":"sanfan","title":"slider组件","email":"hanxu@qq.com","desc":"slider, new Slider","id":"8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096"},{"name":"RangeSlider","screenShot":"","author":"hanxu","title":"RangeSlider","email":"hanxu317@qq.com","desc":"RangeSlider widget","id":"cbffbf7c_52ae_4241_9c8a_5c9e1f92b096"}]
|
@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "RangeSlider",
|
||||
"screenShot": "",
|
||||
"author":"hanxu",
|
||||
"title":"RangeSlider",
|
||||
"email": "hanxu317@qq.com",
|
||||
"desc": "RangeSlider widget",
|
||||
"id": "cbffbf7c_52ae_4241_9c8a_5c9e1f92b096"
|
||||
}
|
||||
|
@ -0,0 +1,36 @@
|
||||
String getMd() {
|
||||
return """
|
||||
# RangeSlider
|
||||
|
||||
> 用来选择范围性的数据
|
||||
|
||||
slider 用来选择连续性的或者非连续性的数据. 默认是在一段最大值最小值间做任意值的选择. 如果你想选择间隔性的值, 例如0.0到50.0间,选择10, 15,...50.0这样的值, 给divisions设定一个非空的整数5,, 去分割区间范围.
|
||||
|
||||
|
||||
### **基本用法**
|
||||
|
||||
关于slider有以下的术语:
|
||||
|
||||
* **thumb** 滑块 用户可以水平拖拽移动的区域
|
||||
|
||||
* **track** 滑轨 thumb 可以滑动的线条区域
|
||||
|
||||
* **value indicator** 值指示器 当用户拖拽thumb的时候. 显示用户当前所选的属性值
|
||||
|
||||
* **active** 选中区
|
||||
|
||||
* **inactive** 非选中区
|
||||
|
||||
如果**onChanged**属性为空或者**min** .. **max**给出的范围 为空(例如如果min等于max),则将禁用滑块。
|
||||
|
||||
滑块小部件本身不保持任何状态State。相反,当滑块状态发生变化时,窗口小部件会调用 **onChanged** 回调。大多数使用滑块的小部件将侦听 **onChanged** 回调并使用新值重建滑块以更新滑块的视觉外观。要知道值何时开始更改,或何时更改,请设置可选回调**onChangeStart**或**onChangeEnd**。
|
||||
|
||||
默认情况下,滑块将尽可能宽,垂直居中。当给定无限制约束时,它将尝试使轨道宽144像素(每边有边距)并垂直收缩。
|
||||
|
||||
### 实例展示
|
||||
|
||||
[demo:e5f958bc_52ae_4241_9c8a_5c9e1f92b096]""";
|
||||
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,30 @@
|
||||
# RangeSlider
|
||||
|
||||
> 用来选择范围性的数据
|
||||
|
||||
slider 用来选择连续性的或者非连续性的数据. 默认是在一段最大值最小值间做任意值的选择. 如果你想选择间隔性的值, 例如0.0到50.0间,选择10, 15,...50.0这样的值, 给divisions设定一个非空的整数5,, 去分割区间范围.
|
||||
|
||||
|
||||
### **基本用法**
|
||||
|
||||
关于slider有以下的术语:
|
||||
|
||||
* **thumb** 滑块 用户可以水平拖拽移动的区域
|
||||
|
||||
* **track** 滑轨 thumb 可以滑动的线条区域
|
||||
|
||||
* **value indicator** 值指示器 当用户拖拽thumb的时候. 显示用户当前所选的属性值
|
||||
|
||||
* **active** 选中区
|
||||
|
||||
* **inactive** 非选中区
|
||||
|
||||
如果**onChanged**属性为空或者**min** .. **max**给出的范围 为空(例如如果min等于max),则将禁用滑块。
|
||||
|
||||
滑块小部件本身不保持任何状态State。相反,当滑块状态发生变化时,窗口小部件会调用 **onChanged** 回调。大多数使用滑块的小部件将侦听 **onChanged** 回调并使用新值重建滑块以更新滑块的视觉外观。要知道值何时开始更改,或何时更改,请设置可选回调**onChangeStart**或**onChangeEnd**。
|
||||
|
||||
默认情况下,滑块将尽可能宽,垂直居中。当给定无限制约束时,它将尝试使轨道宽144像素(每边有边距)并垂直收缩。
|
||||
|
||||
### 实例展示
|
||||
|
||||
[demo:e5f958bc_52ae_4241_9c8a_5c9e1f92b096]
|
@ -3,6 +3,7 @@ import 'local_hnaxu_5d7178d0_42ae_4241_9c8a_5c9e1f92b096/index.dart' as Standard
|
||||
import 'test_abc_84f38e00_42ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardPage_test_84f38e00_42ae_4241_9c8a_5c9e1f92b096;
|
||||
import 'standard_sanfan_ee4feb8e_32ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardPage_standard_ee4feb8e_32ae_4241_9c8a_5c9e1f92b096;
|
||||
import 'standard_for_slider_sanfan_8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardPage_standard_for_slider_8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096;
|
||||
import 'RangeSlider_hanxu_cbffbf7c_52ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardPage_RangeSlider_cbffbf7c_52ae_4241_9c8a_5c9e1f92b096;
|
||||
class StandardPages {
|
||||
Map<String, String> standardPages;
|
||||
Map<String, String> getPages() {
|
||||
@ -15,6 +16,8 @@ class StandardPages {
|
||||
"ee4feb8e_32ae_4241_9c8a_5c9e1f92b096" : StandardPage_standard_ee4feb8e_32ae_4241_9c8a_5c9e1f92b096.getMd()
|
||||
,
|
||||
"8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096" : StandardPage_standard_for_slider_8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096.getMd()
|
||||
,
|
||||
"cbffbf7c_52ae_4241_9c8a_5c9e1f92b096" : StandardPage_RangeSlider_cbffbf7c_52ae_4241_9c8a_5c9e1f92b096.getMd()
|
||||
};
|
||||
}
|
||||
List<Map<String, String>> getLocalList() {
|
||||
@ -27,6 +30,8 @@ class StandardPages {
|
||||
{ "id": "ee4feb8e_32ae_4241_9c8a_5c9e1f92b096", "name": "standard", "email": "hanxu317@qq.com", "author": "sanfan"}
|
||||
,
|
||||
{ "id": "8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096", "name": "standard_for_slider", "email": "hanxu@qq.com", "author": "sanfan"}
|
||||
,
|
||||
{ "id": "cbffbf7c_52ae_4241_9c8a_5c9e1f92b096", "name": "RangeSlider", "email": "hanxu317@qq.com", "author": "hanxu"}
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
# 标准的详情页
|
||||
|
||||
# 标准的详情页 this is test
|
||||
您可以在这个界面中, 编写大多数的markdown文案, 他会在 **goCli watch** 下同步被编译成 **dart** 文件
|
||||
|
||||
您可以通过goCli创建详情页所需要的demo
|
||||
@ -45,4 +44,4 @@ goCLi createDemo
|
||||
|
||||
```
|
||||
[demo: 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
|
||||
```
|
||||
```
|
||||
|
@ -1,4 +1,4 @@
|
||||
# 标准的详情页
|
||||
# 标准的详情页 this is title
|
||||
|
||||
您可以在这个界面中, 编写大多数的markdown文案, 他会在 **goCli watch** 下同步被编译成 **dart** 文件
|
||||
|
||||
@ -47,4 +47,4 @@ goCLi createDemo
|
||||
|
||||
```
|
||||
[demo: 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
|
||||
```
|
||||
```
|
||||
|
@ -25,6 +25,8 @@ import 'package:flutter_go/model/search_history.dart';
|
||||
import 'package:flutter_go/resources/widget_name_to_icon.dart';
|
||||
import 'package:flutter_go/model/user_info.dart';
|
||||
|
||||
|
||||
|
||||
class AppPage extends StatefulWidget {
|
||||
final UserInformation userInfo;
|
||||
|
||||
@ -96,10 +98,10 @@ class _MyHomePageState extends State<AppPage>
|
||||
|
||||
void onWidgetTap(WidgetPoint widgetPoint, BuildContext context) {
|
||||
String targetName = widgetPoint.name;
|
||||
searchHistoryList.add(
|
||||
SearchHistory(name: targetName, targetRouter: widgetPoint.routerName));
|
||||
print("searchHistoryList1 ${searchHistoryList.toString()}");
|
||||
String targetRouter = widgetPoint.routerName;
|
||||
searchHistoryList.add(
|
||||
SearchHistory(name: targetName, targetRouter: targetRouter));
|
||||
print("searchHistoryList1 ${searchHistoryList.toString()}");
|
||||
Application.router.navigateTo(context, targetRouter.toLowerCase(),
|
||||
transition: TransitionType.inFromRight);
|
||||
}
|
||||
|
@ -387,10 +387,7 @@ class _LoginPageState extends State<LoginPage> {
|
||||
decoration: TextDecoration.underline),
|
||||
),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pushAndRemoveUntil(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => AppPage(UserInformation(id: 0))),
|
||||
(route) => route == null);
|
||||
Application.router.navigateTo(context, Routes.home, clearStack: true);
|
||||
},
|
||||
)
|
||||
],
|
||||
|
@ -19,7 +19,7 @@ import 'package:flutter_go/routers/routers.dart';
|
||||
import 'package:flutter_go/utils/net_utils.dart';
|
||||
import 'package:flutter_go/components/loading.dart';
|
||||
|
||||
const githubHost = 'https://raw.githubusercontent.com/alibaba/flutter-go/beta';
|
||||
const githubHost = 'https://raw.githubusercontent.com/alibaba/flutter-go/master';
|
||||
const githubUrl = '$githubHost/lib/standard_pages/';
|
||||
const PagesUrl = '$githubHost/lib/standard_pages/.pages.json';
|
||||
const DemosUrl = '$githubHost/lib/page_demo_package/.demo.json';
|
||||
|
@ -34,7 +34,7 @@ const String _textFieldText2 = """### **进阶用法**
|
||||
""";
|
||||
|
||||
class Demo extends StatefulWidget {
|
||||
static const String routeName = 'elements/Form/Input/TextField';
|
||||
static const String routeName = 'element/Form/Input/TextField';
|
||||
|
||||
@override
|
||||
_DemoState createState() => _DemoState();
|
||||
|
Reference in New Issue
Block a user