diff --git a/README.md b/README.md index d720d23e..33ed6406 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,37 @@ +# Flutter Go Language: [English](https://github.com/alibaba/flutter-go/blob/master/README-en.md) | [中文简体](https://github.com/alibaba/flutter-go/blob/master/README.md) -## Flutter Go ![https://img.alicdn.com/tfs/TB1OJkeHNYaK1RjSZFnXXa80pXa-229-229.png](https://img.alicdn.com/tfs/TB1OJkeHNYaK1RjSZFnXXa80pXa-229-229.png) -> 帮助开发者快速上手 Flutter **Flutter Go 1.0 Android版已正式发布** +> 一个帮助开发者快速上手的 `APP` + +## 最新动态 +### 🔥 `Flutter Go 2.0` 即将发布 +> Flutter Go 2.0 秉承年初发布的 [The Flutter-Go Roadmap(路线图) for 2019](https://github.com/alibaba/flutter-go#the-flutter-go-roadmap%E8%B7%AF%E7%BA%BF%E5%9B%BE-for-2019) 已经做了新版本的迭代,新版本如下新功能: + +
注:✔是本次发布内容
+ +- [x] [ `Flutter Go` 官方网站 ](https://flutter-go.pub/website/) (官方消息,发布,学习) +- [x] [ `Flutter Go web` 版本](https://github.com/alibaba/flutter-go/tree/web/flutter-go-web-0.0.1) (web 版本学习帮助) + - [线上预览版 ](https://flutter-go.pub/flutter_go_web/) + - [项目地址 ](https://github.com/alibaba/flutter-go/tree/web/flutter-go-web-0.0.1) + +- [x] [ `Flutter Go Widget` 的 `pull request` 提交规范(第三方共建)](https://github.com/alibaba/flutter-go/blob/master/docs/contribute.md) + +- [x] 用户中心 (专属个人的`widget`案例) + - 用户登录(通过`GitHub`账户) + - 全网搜索 (全网搜索 `Flutter` 资讯) + - 收藏个人组件(保存到远端) + - 反馈建议 (APP 在线 `ISSUES`) + - 分享链接 (APP分享) +- [x] [ `go-cli` 工具 ](https://github.com/alibaba/flutter-go/blob/master/docs/widget.md) + - `Flutter Go` 的 `pull request` 工具 + - [命令行 生成 `Flutter Go Widget` 标准公共模版](https://github.com/alibaba/flutter-go/blob/beta/docs/widget.md) + - `markdown` 模版动态化生成(合并到master分支后) +- [x] ` Flutter Go ` 官方 `APP` 版本自动升级 +- [ ] 多端模版同步( pc端,native端同步 ) +- [ ] `Flutter Go` store + ## 三方共建说明 @@ -52,6 +80,7 @@ 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) ### iphone正式版,下载地址: @@ -63,8 +92,17 @@ Language: [English](https://github.com/alibaba/flutter-go/blob/master/README-en. ## 基础环境 本项目环境持续更新. 请定期更新各依赖包. -- dart(version: 2.0.0) -- flutter(version: v1.0.0) +```dart +// 运行如下命令 +flutter --version +dart --version +pub --version + +// 正确环境如下 +// Flutter (Channel beta, v1.7.8) +// Dart VM version: 2.4.0 +// Pub 2.4.0 +``` ### 背景 diff --git a/lib/blocs/bak/search_api.dart b/lib/blocs/bak/search_api.dart deleted file mode 100644 index 0548d34e..00000000 --- a/lib/blocs/bak/search_api.dart +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Created with Android Studio. - * User: 一晟 - * Date: 2019/4/28 - * Time: 3:20 PM - * email: zhu.yan@alibaba-inc.com - * tartget: FlatButton 的示例 - */ -import 'dart:async'; -import 'package:dio/dio.dart'; -import 'dart:convert'; -import './search_result.dart'; -import 'package:html/parser.dart' show parse; - -var dio = new Dio(); -class Api { - Future> search(name) async { - print('=========>>>'); - var response = await dio.get("https://www.so.com/s?ie=utf-8&q=$name"); -// var document = parse(response.data); -// var app = document.querySelectorAll('.res-title a'); - List res = []; -// app.forEach((f) { -// res.add( -// SearchResult( -// title: f.text, -// source: f.attributes["data-url"] ?? f.attributes["href"], -// ), -// ); -// }); - return res; - } -} - -Api api = Api(); \ No newline at end of file diff --git a/lib/blocs/bak/search_bloc.dart b/lib/blocs/bak/search_bloc.dart deleted file mode 100644 index 08d526c8..00000000 --- a/lib/blocs/bak/search_bloc.dart +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Created with Android Studio. - * User: 一晟 - * Date: 2019/4/28 - * Time: 7:17 PM - * email: zhu.yan@alibaba-inc.com - * tartget: - */ -import 'dart:async'; -import 'package:bloc/bloc.dart'; - -import './search_event.dart'; -import './search_state.dart'; -import './search_api.dart'; - - -/// 这里导入api类与上面的SearchEvent与SearchState文件 - -class SearchBloc extends Bloc { - @override - SearchState get initialState => SearchUninitialized(); - - @override - Stream mapEventToState(SearchEvent event,) async* { - if (event is SearchFetch) { - try { - yield SearchLoading(); - final res = await api.search(event.query); - yield SearchLoaded(res: res); - } catch (_) { - yield SearchError(); - } - } - } -} \ No newline at end of file diff --git a/lib/blocs/bak/search_event.dart b/lib/blocs/bak/search_event.dart deleted file mode 100644 index 0ecc0b44..00000000 --- a/lib/blocs/bak/search_event.dart +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Created with Android Studio. - * User: 一晟 - * Date: 2019/4/28 - * Time: 7:18 PM - * email: zhu.yan@alibaba-inc.com - * tartget: - */ -abstract class SearchEvent {} - -class SearchFetch extends SearchEvent { - final String query; - - SearchFetch({this.query}); - - @override - String toString() => 'SearchFetch:获取搜索结果事件'; -} \ No newline at end of file diff --git a/lib/blocs/bak/search_result.dart b/lib/blocs/bak/search_result.dart deleted file mode 100644 index 8001e49a..00000000 --- a/lib/blocs/bak/search_result.dart +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Created with Android Studio. - * User: 一晟 - * Date: 2019/4/28 - * Time: 7:11 PM - * email: zhu.yan@alibaba-inc.com - * tartget: - */ -class SearchResult { - String title; - String source; - - SearchResult({this.title, this.source}); -} \ No newline at end of file diff --git a/lib/blocs/bak/search_state.dart b/lib/blocs/bak/search_state.dart deleted file mode 100644 index 85d85791..00000000 --- a/lib/blocs/bak/search_state.dart +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Created with Android Studio. - * User: 一晟 - * Date: 2019/4/28 - * Time: 7:13 PM - * email: zhu.yan@alibaba-inc.com - * tartget: - */ -import './search_result.dart'; - -abstract class SearchState {} - -class SearchError extends SearchState { - @override - String toString() => 'SearchError:获取失败'; -} - -class SearchUninitialized extends SearchState { - @override - String toString() => 'SearchUninitialized:未初始化'; -} - -class SearchLoading extends SearchState { - @override - String toString() => 'SearchLoading :正在加载'; -} - -class SearchLoaded extends SearchState { - final List res; - - SearchLoaded({ - this.res, - }); - - @override - String toString() => 'SearchLoaded:加载完毕'; -} \ No newline at end of file diff --git a/lib/blocs/bak/search_widget.dart b/lib/blocs/bak/search_widget.dart deleted file mode 100644 index 1e29848a..00000000 --- a/lib/blocs/bak/search_widget.dart +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Created with Android Studio. - * User: 一晟 - * Date: 2019/4/28 - * Time: 7:19 PM - * email: zhu.yan@alibaba-inc.com - * tartget: - */ -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -//import 'package:suiyi/blocs/search/bloc.dart'; -import './search_event.dart'; -import './search_state.dart'; -import './search_bloc.dart'; - - -class SearchWidget extends StatefulWidget { - final SearchDelegate delegate; - final String query; - SearchWidget({this.delegate, this.query}); - @override - _SearchWidgetState createState() => _SearchWidgetState(); -} - -class _SearchWidgetState extends State { - final SearchBloc _search = SearchBloc(); - String old; - @override - void dispose() { - _search.dispose(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - print('1:${old}'); - print('2:${widget.query}'); - if (old != widget.query) { - _search.dispatch(SearchFetch(query: widget.query)); - old = widget.query; - } - return BlocBuilder( - bloc: _search, - builder: (BuildContext context, SearchState state) { - print('-------${state}'); - if (state is SearchUninitialized || state is SearchLoading) { - return Center( - child: CircularProgressIndicator(), - ); - } else if (state is SearchError) { - return Center( - child: Text('获取失败'), - ); - } else if (state is SearchLoaded) { - return ListView.builder( - itemBuilder: (BuildContext context, int index) { - return ListTile( - dense: true, - leading: Icon( - Icons.bookmark_border, - size: 32, - ), - title: Text( - state.res[index].title, - overflow: TextOverflow.ellipsis, - ), - subtitle: Text(state.res[index].source), - onTap: () { - // 在这里对选中的结果进行解析,因为我目前是用golang实现的,所以就没贴代码了。 - print(state.res[index].source); - }, - ); - }, - itemCount: state.res.length, - ); - } - }, - ); - } -} \ No newline at end of file diff --git a/lib/blocs/industry_api.dart b/lib/blocs/industry_api.dart index fc8b2967..7b271ca0 100644 --- a/lib/blocs/industry_api.dart +++ b/lib/blocs/industry_api.dart @@ -1,16 +1,14 @@ -/** - * Created with Android Studio. - * User: 一晟 - * Date: 2019/4/28 - * Time: 3:20 PM - * email: zhu.yan@alibaba-inc.com - * tartget: FlatButton 的示例 - */ +// +// Created with Android Studio. +// User: 一晟 +// Date: 2019/4/28 +// Time: 3:20 PM +// email: zhu.yan@alibaba-inc.com +// tartget: FlatButton 的示例 +// import 'dart:async'; import 'package:dio/dio.dart'; -import 'dart:convert'; import 'package:html/parser.dart' show parse; -import './industry_model.dart'; import './search_result.dart'; var dio = new Dio(); diff --git a/lib/blocs/industry_bloc.dart b/lib/blocs/industry_bloc.dart index 3bcd464c..1757f3b4 100644 --- a/lib/blocs/industry_bloc.dart +++ b/lib/blocs/industry_bloc.dart @@ -23,7 +23,7 @@ class SuggestionBloc extends Bloc { try { yield SuggestionLoading(); final res = await api.suggestion(event.query); - print('res====>${res}'); + // print('res====>${res}'); yield SuggestionLoaded(res: res); } catch (_) { yield SuggestionError(); diff --git a/lib/blocs/industry_event.dart b/lib/blocs/industry_event.dart index 641720b2..b54e7940 100644 --- a/lib/blocs/industry_event.dart +++ b/lib/blocs/industry_event.dart @@ -1,10 +1,10 @@ -/** - * Created with Android Studio. - * User: 一晟 - * Date: 2019/4/28 - * Time: 3:35 PM - * email: zhu.yan@alibaba-inc.com - */ +/// +/// Created with Android Studio. +/// User: 一晟 +/// Date: 2019/4/28 +/// Time: 3:35 PM +/// email: zhu.yan@alibaba-inc.com +/// abstract class SuggestionEvent {} class SuggestionFetch extends SuggestionEvent { diff --git a/lib/blocs/industry_main.dart b/lib/blocs/industry_main.dart index 22dfbc0a..fa49fac5 100644 --- a/lib/blocs/industry_main.dart +++ b/lib/blocs/industry_main.dart @@ -1,14 +1,14 @@ -/** - * Created with Android Studio. - * User: 一晟 - * Date: 2019/4/28 - * Time: 3:52 PM - * email: zhu.yan@alibaba-inc.com - */ +/// +/// Created with Android Studio. +/// User: 一晟 +/// Date: 2019/4/28 +/// Time: 3:52 PM +/// email: zhu.yan@alibaba-inc.com +/// import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import './industry_bloc.dart'; -import './industry_event.dart'; +/// import './industry_event.dart'; import './industry_state.dart'; final SuggestionBloc suggestion = SuggestionBloc(); @@ -22,47 +22,46 @@ class IndustryPage extends StatefulWidget { } class _IndustryState extends State { + Widget renderItem(state) { + if (state is SuggestionUninitialized) { + return Center( + child: Text('暂无内容'), + ); + } else if (state is SuggestionLoading) { + return Center( + child: CircularProgressIndicator(), + ); + } else if (state is SuggestionError) { + return Center( + child: Text('出现错误'), + ); + } else if (state is SuggestionLoaded) { + if (state.res.length == 0) { + return Center( + child: Text('没有适合的结果,更换查询条件试试'), + ); + }else { + if (widget.itemTitle is Function) { + return widget.itemTitle(state); + } + } + } + return Center( + child: Text('没有适合的结果,更换查询条件试试') + ); + } + @override Widget build(BuildContext context) { return Material( child: Column( children: [ -// TextField( -// autofocus: true, -// textAlign: TextAlign.center, -// onSubmitted: (text) { -// print('onSubmitted:${text}'); -// suggestion.dispatch(SuggestionFetch(query: text)); -// }, -// ), Expanded( child: BlocBuilder( bloc: suggestion, - builder: (BuildContext context, SuggestionState state) { - print('BlocBuilder----${state}'); - if (state is SuggestionUninitialized) { - return Center( - child: Text('暂无内容'), - ); - } else if (state is SuggestionLoading) { - return Center( - child: CircularProgressIndicator(), - ); - } else if (state is SuggestionError) { - return Center( - child: Text('出现错误'), - ); - } else if (state is SuggestionLoaded) { - if (state.res.length == 0) { - return Center( - child: Text('没有适合的结果,更换查询条件试试'), - ); - }else { - if (widget.itemTitle is Function) { - return widget.itemTitle(state); - } - } - } + builder: (BuildContext context, SuggestionState state){ + /// print('BlocBuilder----${state}'); + return renderItem(state); }, ), ), diff --git a/lib/blocs/industry_model.dart b/lib/blocs/industry_model.dart index ea6cb081..550d29c7 100644 --- a/lib/blocs/industry_model.dart +++ b/lib/blocs/industry_model.dart @@ -1,10 +1,10 @@ -/** - * Created with Android Studio. - * User: 一晟 - * Date: 2019/4/28 - * Time: 3:19 PM - * email: zhu.yan@alibaba-inc.com - */ +/// +/// Created with Android Studio. +/// User: 一晟 +/// Date: 2019/4/28 +/// Time: 3:19 PM +/// email: zhu.yan@alibaba-inc.com +/// class Suggestion { String query; List suggestions; diff --git a/lib/blocs/industry_state.dart b/lib/blocs/industry_state.dart index b129830c..8083aa80 100644 --- a/lib/blocs/industry_state.dart +++ b/lib/blocs/industry_state.dart @@ -1,10 +1,10 @@ -/** - * Created with Android Studio. - * User: 一晟 - * Date: 2019/4/28 - * Time: 3:37 PM - * email: zhu.yan@alibaba-inc.com - */ +/// +/// Created with Android Studio. +/// User: 一晟 +/// Date: 2019/4/28 +/// Time: 3:37 PM +/// email: zhu.yan@alibaba-inc.com +/// abstract class SuggestionState {} class SuggestionError extends SuggestionState { diff --git a/lib/blocs/search_result.dart b/lib/blocs/search_result.dart index 8001e49a..bf64d1b1 100644 --- a/lib/blocs/search_result.dart +++ b/lib/blocs/search_result.dart @@ -1,11 +1,11 @@ -/** - * Created with Android Studio. - * User: 一晟 - * Date: 2019/4/28 - * Time: 7:11 PM - * email: zhu.yan@alibaba-inc.com - * tartget: - */ +/// +/// Created with Android Studio. +/// User: 一晟 +/// Date: 2019/4/28 +/// Time: 7:11 PM +/// email: zhu.yan@alibaba-inc.com +/// tartget: +/// class SearchResult { String title; String source; diff --git a/lib/components/category.dart b/lib/components/category.dart index 0789e90e..eee1035e 100644 --- a/lib/components/category.dart +++ b/lib/components/category.dart @@ -3,7 +3,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import '../routers/application.dart'; -import '../model/cat.dart'; +/// import '../model/cat.dart'; import '../model/widget.dart'; import '../widgets/index.dart'; import '../components/widget_item_container.dart'; @@ -65,7 +65,7 @@ class _CategoryHome extends State { } void searchCatOrWidget() async { - CommonItem widgetTree = Application.widgetTree; + /// CommonItem widgetTree = Application.widgetTree; // 假设进入这个界面的parent一定存在 CommonItem targetGroup = catHistory.last; diff --git a/lib/components/widget_demo.dart b/lib/components/widget_demo.dart index 9d1defd7..e2c783d3 100644 --- a/lib/components/widget_demo.dart +++ b/lib/components/widget_demo.dart @@ -9,7 +9,7 @@ import 'package:flutter_go/utils/data_utils.dart'; import '../routers/application.dart'; import '../routers/routers.dart'; import '../components/markdown.dart'; -import '../model/collection.dart'; +/// import '../model/collection.dart'; import '../widgets/index.dart'; import '../event/event_bus.dart'; import '../event/event_model.dart'; @@ -35,7 +35,7 @@ class WidgetDemo extends StatefulWidget { class _WidgetDemoState extends State { bool _hasCollected = false; - CollectionControlModel _collectionControl = new CollectionControlModel(); + /// CollectionControlModel _collectionControl = new CollectionControlModel(); var _collectionIcons; List widgetDemosList = new WidgetDemoList().getDemos(); String widgetType = 'old'; diff --git a/lib/components/widget_item_container.dart b/lib/components/widget_item_container.dart index d5977512..d7438790 100644 --- a/lib/components/widget_item_container.dart +++ b/lib/components/widget_item_container.dart @@ -86,7 +86,8 @@ class WidgetItemContainer extends StatelessWidget { index: addI, totalCount: length, rowLength: columnCount, - textSize: true ? 'middle' : 'small', + /// textSize: true ? 'middle' : 'small', + textSize: 'middle' ), ), ); diff --git a/lib/main.dart b/lib/main.dart index 225ea633..2a5a944d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -56,9 +56,13 @@ class _MyAppState extends State { var response; try{ response = await NetUtils.get(reqs, {}); - print('response-${response}'); + print('response-$response'); + if(response['status'] == 200 && response['success'] ==true && response['data'] is Map && response['data']['isOpen'] == true) { + Application.pageIsOpen = true; + print('是否需要展开【业界动态】${Application.pageIsOpen}'); + } }catch(e){ - print('response-${e}'); + print('response-$e'); } return response; } @@ -66,6 +70,7 @@ class _MyAppState extends State { @override void initState() { super.initState(); + _reqsMainPageIsOpen(); _startupJpush(); FlutterJPush.addConnectionChangeListener((bool connected) { @@ -85,7 +90,6 @@ class _MyAppState extends State { } catch (error) { print('主动获取设备号Error:$error'); } - ; } }); }); @@ -143,15 +147,6 @@ class _MyAppState extends State { print('身份信息验证失败:$onError'); }); - /// 服务端控制是否显示业界动态 - _reqsMainPageIsOpen().then((res){ - //{status: 200, data: {isOpen: true}, success: true} - if(res['status'] == 200 && res['success'] ==true && res['data'] is Map && res['data']['isOpen'] == true) { - Application.pageIsOpen = true; - print('是否需要展开【业界动态】${Application.pageIsOpen}'); - } - }); - ApplicationEvent.event.on().listen((event) { print('接收到的 event $event'); }); diff --git a/lib/model/widget.dart b/lib/model/widget.dart index d2be8362..c0f37d0d 100644 --- a/lib/model/widget.dart +++ b/lib/model/widget.dart @@ -162,7 +162,7 @@ abstract class CommonItem { /// CommonItem parent; String toString() { - return "CommonItem {name: $name, type: $type, parentId: $parentId, token: $token, children长度 ${children}"; + return "CommonItem {name: $name, type: $type, parentId: $parentId, token: $token, children长度 $children"; } T getChild(String token); @@ -361,7 +361,7 @@ class WidgetTree { print("getCommonItemByPath $path"); print("root $root"); CommonItem childLeaf; - int first = path.first; + /// int first = path.first; path = path.sublist(1); print("path:::: $path"); if (path.length >= 0) { diff --git a/lib/routers/routers.dart b/lib/routers/routers.dart index c4f6d8d7..32d6b9c2 100644 --- a/lib/routers/routers.dart +++ b/lib/routers/routers.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_go/utils/analytics.dart' show analytics; import '../widgets/index.dart'; import './router_handler.dart'; -import '../standard_pages/index.dart'; +/// import '../standard_pages/index.dart'; class Routes { static String root = "/"; static String home = "/home"; @@ -20,9 +20,10 @@ class Routes { static void configureRoutes(Router router) { List widgetDemosList = new WidgetDemoList().getDemos(); - router.notFoundHandler = new Handler( - handlerFunc: (BuildContext context, Map> params) { - }); +// router.notFoundHandler = new Handler( +// handlerFunc: (BuildContext context, Map> params) { +// } +// ); router.define(home, handler: homeHandler); router.define(collectionPage,handler:collectionHandler); router.define(collectionFullPage,handler:collectionFullHandler); @@ -32,19 +33,19 @@ class Routes { router.define(codeView,handler:fullScreenCodeDialog); router.define(githubCodeView,handler:githubCodeDialog); router.define(webViewPage,handler:webViewPageHand); - router.define(issuesMessage, handler: issuesMessageHandler); - widgetDemosList.forEach((demo) { - Handler handler = new Handler( - handlerFunc: (BuildContext context, Map> params) { - print('组件路由params=$params widgetsItem=${demo.routerName}'); - analytics.logEvent( - name: 'component', parameters: {'name': demo.routerName }); - return demo.buildRouter(context); - }); + router.define(issuesMessage, handler: issuesMessageHandler); + router.define(standardPage,handler:standardPageHandler); + widgetDemosList.forEach((demo) { + Handler handler = new Handler( + handlerFunc: (BuildContext context, Map> params) { + print('组件路由params=$params widgetsItem=${demo.routerName}'); + analytics.logEvent( + name: 'component', parameters: {'name': demo.routerName }); + return demo.buildRouter(context); + }); String path = demo.routerName; router.define('${path.toLowerCase()}', handler: handler); }); - router.define(standardPage,handler:standardPageHandler); // router.define(webViewPage,handler:webViewPageHand); // standardPages.forEach((String id, String md) => { // diff --git a/lib/utils/data_utils.dart b/lib/utils/data_utils.dart index d57f3cba..921f95ff 100644 --- a/lib/utils/data_utils.dart +++ b/lib/utils/data_utils.dart @@ -5,7 +5,7 @@ import 'package:flutter_go/model/collection.dart'; import 'package:flutter_go/model/version.dart'; import 'package:flutter_go/model/widget.dart'; import 'package:package_info/package_info.dart'; -import 'package:flutter_go/model/responseData.dart'; +/// import 'package:flutter_go/model/responseData.dart'; import './net_utils.dart'; import '../model/user_info.dart'; @@ -117,6 +117,7 @@ class DataUtils { } } catch (error) { print('获取组件树 error $error'); + return []; } } @@ -128,6 +129,7 @@ class DataUtils { return response != null && response['hasCollected']; } catch (error) { print('校验收藏 error $error'); + return false; } } diff --git a/lib/views/collection_page/collection_full_page.dart b/lib/views/collection_page/collection_full_page.dart index d9ce39fd..ada616eb 100644 --- a/lib/views/collection_page/collection_full_page.dart +++ b/lib/views/collection_page/collection_full_page.dart @@ -26,7 +26,7 @@ class _CollectionFullPageState extends State { ApplicationEvent.event = eventBus; } - CollectionControlModel _collectionControl = new CollectionControlModel(); + /// CollectionControlModel _collectionControl = new CollectionControlModel(); List _collectionList = []; ScrollController _scrollController = new ScrollController(); var _icons; diff --git a/lib/views/collection_page/collection_page.dart b/lib/views/collection_page/collection_page.dart index 3935d9d2..75d6e309 100644 --- a/lib/views/collection_page/collection_page.dart +++ b/lib/views/collection_page/collection_page.dart @@ -11,7 +11,7 @@ import 'package:flutter_go/routers/application.dart'; import 'package:flutter_go/routers/routers.dart'; import 'package:flutter_go/event/event_bus.dart'; import 'package:flutter_go/event/event_model.dart'; -import 'package:flutter_go/utils/data_utils.dart'; +/// import 'package:flutter_go/utils/data_utils.dart'; class CollectionPage extends StatefulWidget { final bool hasLogined; @@ -26,7 +26,7 @@ class _CollectionPageState extends State { final eventBus = new EventBus(); ApplicationEvent.event = eventBus; } - CollectionControlModel _collectionControl = new CollectionControlModel(); + /// CollectionControlModel _collectionControl = new CollectionControlModel(); List _collectionList = []; ScrollController _scrollController = new ScrollController(); var _icons; diff --git a/lib/views/first_page/main_page.dart b/lib/views/first_page/main_page.dart index 9301ab55..c48fbe0d 100644 --- a/lib/views/first_page/main_page.dart +++ b/lib/views/first_page/main_page.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_go/views/first_page/drawer_page.dart'; import './first_page.dart'; -import './sub_page.dart'; +/// import './sub_page.dart'; import './main_app_bar.dart'; import './search_page.dart'; import 'package:flutter_go/model/user_info.dart'; diff --git a/lib/views/first_page/search_page.dart b/lib/views/first_page/search_page.dart index e3d751c8..042bae8a 100644 --- a/lib/views/first_page/search_page.dart +++ b/lib/views/first_page/search_page.dart @@ -87,15 +87,17 @@ class SearchBarPage extends StatefulWidget{ final TextEditingController controller = TextEditingController(); var that; +var loading; class _SearchBarPageState extends State { @override void initState() { super.initState(); that = this; + loading = false; } Timer _resultsTimer; - bool _loading = false; + String oldKey; /// 防抖函数 Future getResultsDebounced(String text) async { @@ -106,12 +108,12 @@ class _SearchBarPageState extends State { if (text == '' || !mounted) { return; } - _loading = true; + loading = true; if (_resultsTimer != null && _resultsTimer.isActive) { _resultsTimer.cancel(); } _resultsTimer = new Timer(new Duration(milliseconds: 400), () async { - _loading = true; + loading = true; if(mounted){ suggestion.dispatch(SuggestionFetch(query: text)); } @@ -121,7 +123,7 @@ class _SearchBarPageState extends State { void onSearchTextChanged(String text){ - print('onSearchTextChanged:${text}'); + print('onSearchTextChanged:$text'); //suggestion.dispatch(SuggestionFetch(query: text)); getResultsDebounced(text); } diff --git a/lib/views/home.dart b/lib/views/home.dart index 3ab7a029..435fc81d 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -6,20 +6,20 @@ /// target: app首页 import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; +/// import 'package:flutter/rendering.dart'; import 'package:flutter_go/utils/data_utils.dart'; import 'package:flutter_go/utils/shared_preferences.dart'; -import 'package:flutter_go/views/first_page/first_page.dart'; +/// import 'package:flutter_go/views/first_page/first_page.dart'; import 'package:flutter_go/views/first_page/main_page.dart'; import 'package:fluro/fluro.dart'; import 'package:flutter_go/views/user_page/user_page.dart'; import 'package:flutter_go/views/widget_page/widget_page.dart'; import 'package:flutter_go/views/welcome_page/fourth_page.dart'; -import 'package:flutter_go/views/collection_page/collection_page.dart'; +/// import 'package:flutter_go/views/collection_page/collection_page.dart'; import 'package:flutter_go/routers/application.dart'; -import 'package:flutter_go/utils/provider.dart'; +/// import 'package:flutter_go/utils/provider.dart'; import 'package:flutter_go/model/widget.dart'; -import 'package:flutter_go/widgets/index.dart'; +/// import 'package:flutter_go/widgets/index.dart'; import 'package:flutter_go/components/search_input.dart'; import 'package:flutter_go/model/search_history.dart'; import 'package:flutter_go/resources/widget_name_to_icon.dart'; diff --git a/lib/views/issuse_message_page/issuse_message_page.dart b/lib/views/issuse_message_page/issuse_message_page.dart index c8c0a4b8..0bfef825 100644 --- a/lib/views/issuse_message_page/issuse_message_page.dart +++ b/lib/views/issuse_message_page/issuse_message_page.dart @@ -1,5 +1,4 @@ -import 'dart:convert'; - +/// import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:zefyr/zefyr.dart'; diff --git a/lib/views/login_page/login_page.dart b/lib/views/login_page/login_page.dart index d0025764..bc8ae79f 100644 --- a/lib/views/login_page/login_page.dart +++ b/lib/views/login_page/login_page.dart @@ -137,6 +137,7 @@ class _LoginPageState extends State { if (value.isEmpty) { return "登录名不可为空!"; } + return ' '; }, onSaved: (value) { setState(() { @@ -179,6 +180,7 @@ class _LoginPageState extends State { if (value == null || value.isEmpty) { return "密码不可为空!"; } + return ''; }, onSaved: (value) { setState(() { diff --git a/lib/views/standard_demo_page/index.dart b/lib/views/standard_demo_page/index.dart index 543f9156..20264f9d 100644 --- a/lib/views/standard_demo_page/index.dart +++ b/lib/views/standard_demo_page/index.dart @@ -48,9 +48,10 @@ class _StandardView extends State { super.initState(); this.getPageInfo(); } - didChangeDependencies() { - print("didChangeDependencies"); - } + +// didChangeDependencies() { +// print("didChangeDependencies"); +// } /// 本地调用的获取文章属性的基本信息 Future localGetPagesAttrsInfo() async { String jsonString = await DefaultAssetBundle.of(context).loadString('lib/standard_pages/.pages.json'); diff --git a/lib/widgets/components/Scroll/ScrollMetrics/demo.dart b/lib/widgets/components/Scroll/ScrollMetrics/demo.dart index db2f8aca..5a6a9fc4 100644 --- a/lib/widgets/components/Scroll/ScrollMetrics/demo.dart +++ b/lib/widgets/components/Scroll/ScrollMetrics/demo.dart @@ -27,6 +27,7 @@ class _ScrollMetricsDemoState extends State { }); print("BottomEdge: ${notification.metrics.extentAfter == 0}"); //return true; //放开此行注释后,进度条将失效 + return false; }, child: Stack( alignment: Alignment.center, diff --git a/lib/widgets/components/Scroll/ScrollPhysics/demo.dart b/lib/widgets/components/Scroll/ScrollPhysics/demo.dart index e4208050..3b31a90e 100644 --- a/lib/widgets/components/Scroll/ScrollPhysics/demo.dart +++ b/lib/widgets/components/Scroll/ScrollPhysics/demo.dart @@ -24,6 +24,7 @@ class _ScrollPhysicsDemoState extends State { setState(() { _currentPage = _pageController.page; }); + return false; }, child: PageView.custom( physics: const PageScrollPhysics( diff --git a/lib/widgets/themes/Cupertino/CupertinoApp/demo.dart b/lib/widgets/themes/Cupertino/CupertinoApp/demo.dart index f503023b..ddd7888a 100644 --- a/lib/widgets/themes/Cupertino/CupertinoApp/demo.dart +++ b/lib/widgets/themes/Cupertino/CupertinoApp/demo.dart @@ -95,16 +95,16 @@ class _CupertinoAppFullDefault extends State { ], onGenerateRoute: (setting) { // 当通过Navigation.of(context).pushNamed跳转路由时,在routes查找不到时,会调用该方法 - routerHandler(setting); + return routerHandler(setting); }, onGenerateTitle: (context) { // 跟上面的tiitle一样,但含有一个context参数用于做本地化 return 'Flutter应用'; }, - onUnknownRoute: (setting) { - // 效果跟onGenerateRoute一样调用顺序为onGenerateRoute ==> onUnknownRoute - //RouterHandler(setting); - }, +// onUnknownRoute: (setting) { +// // 效果跟onGenerateRoute一样调用顺序为onGenerateRoute ==> onUnknownRoute +// //RouterHandler(setting); +// }, routes: { // 声明程序中有哪个通过Navigation.of(context).pushNamed跳转的路由参数以键值对的形式传递key:路由名字value:对应的Widget '/home': (BuildContext context) => HomePage(), diff --git a/lib/widgets/themes/Cupertino/CupertinoSliverNavigationBar/demo.dart b/lib/widgets/themes/Cupertino/CupertinoSliverNavigationBar/demo.dart index bbb27bd5..5e272294 100644 --- a/lib/widgets/themes/Cupertino/CupertinoSliverNavigationBar/demo.dart +++ b/lib/widgets/themes/Cupertino/CupertinoSliverNavigationBar/demo.dart @@ -29,8 +29,9 @@ class _Demo extends State { trailing: Icon(Icons.perm_camera_mic) ), CupertinoSliverRefreshControl( - onRefresh: () { - }, +// onRefresh: () { +// +// }, ), SliverSafeArea( top: false, // Top safe area is consumed by the navigation bar.