From e34512f668cf9a51ec2e442018bd4ddd26f3d9b0 Mon Sep 17 00:00:00 2001 From: mao Date: Tue, 10 Mar 2020 11:17:02 +0800 Subject: [PATCH] =?UTF-8?q?add=20article=20share=20function=EF=BC=8Cuopdat?= =?UTF-8?q?e=20theme=20change=20page=EF=BC=8Cupdate=20readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +- .../lib/components/single_theme_color.dart | 66 +++++++++++-------- .../lib/views/setting/about_page.dart | 6 ++ .../web_page/controller/web_page_menu.dart | 54 ++++++++++----- .../lib/views/web_page/web_view_page.dart | 2 +- flutter_wanandroid/pubspec.lock | 7 ++ flutter_wanandroid/pubspec.yaml | 4 +- 7 files changed, 96 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 9762f12..445df06 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ ios 下载| 暂无下载,可以自行clone项目编译体验 ![image](https://github.com/maoqitian/MaoMdPhoto/raw/master/flutter/flutter_wanandroid/flutter-wanandroid%E7%BB%93%E6%9E%84%E5%9B%BE.jpg) ## 项目截图展示 -### gif +### gif (debug 模式略显卡顿,可下载release版本体验丝滑顺畅) @@ -171,7 +171,9 @@ ios 下载| 暂无下载,可以自行clone项目编译体验 [flutter_staggered_grid_view](https://github.com/letsar/flutter_staggered_grid_view) | 瀑布流 [package_info](https://github.com/flutter/plugins) | 方便获取应用信息 [flutter_html](https://github.com/Sub6Resources/flutter_html) | 加载html 字符串 - +[expandable](https://github.com/aryzhov/flutter-expandable) | 扩展显示隐藏 +[date_format](https://github.com/tejainece/date_format) | 日期转换 +[share](https://github.com/flutter/plugins/tree/master/packages/share) | 分享 ## 版本更新日志 ### v1.0.2 (2020/03/08) diff --git a/flutter_wanandroid/lib/components/single_theme_color.dart b/flutter_wanandroid/lib/components/single_theme_color.dart index 1581f7c..3e9bbdd 100644 --- a/flutter_wanandroid/lib/components/single_theme_color.dart +++ b/flutter_wanandroid/lib/components/single_theme_color.dart @@ -12,47 +12,55 @@ import 'package:flutter_wanandroid/http/data_utils.dart'; import 'package:flutter_wanandroid/utils/tool_utils.dart'; import 'package:provider/provider.dart'; - class SingleThemeColor extends StatelessWidget { - final int themeColor; final String colorName; - const SingleThemeColor({Key key,this.themeColor, this.colorName}): - super(key:key); + const SingleThemeColor({Key key, this.themeColor, this.colorName}) + : super(key: key); @override Widget build(BuildContext context) { return InkWell( - onTap: ()async{ - ToolUtils.showToast(msg: "改变主题颜色为"+colorName); - Provider.of(context,listen: false).changeTheme(this.themeColor,false); - dataUtils.setPrimaryColor(themeColor); - dataUtils.setIsDarkMode(false); - Navigator.pop(context); + onTap: () async { + ToolUtils.showToast(msg: "改变主题颜色为" + colorName); + Provider.of(context, listen: false) + .changeTheme(this.themeColor, false); + dataUtils.setPrimaryColor(themeColor); + dataUtils.setIsDarkMode(false); + Navigator.pop(context); }, - child: new Column( // 竖直布局 + child: Column( + // 竖直布局 children: [ - Container( - width: 50, - height: 50, - margin: const EdgeInsets.all(5.0), - decoration: BoxDecoration( //圆形背景装饰 - borderRadius:BorderRadius.all( - Radius.circular(50) - ), - color: Color(this.themeColor) - ), - ), - Text( - colorName, - style: TextStyle( - color: Color(this.themeColor), - fontSize: 14.0), - ), + Stack( + alignment: Alignment.center, + children: [ + Container( + width: 50, + height: 50, + margin: const EdgeInsets.all(5.0), + decoration: BoxDecoration( + //圆形背景装饰 + borderRadius: BorderRadius.all(Radius.circular(50)), + color: Color(this.themeColor)), + ), + //标识选中的主题颜色 + Offstage( + offstage: dataUtils.getIsDarkMode() || dataUtils.getPrimaryColor() != themeColor, + child: Icon( + Icons.done, + color: Colors.white, + ), + ), + ], + ), + Text( + colorName, + style: TextStyle(color: Color(this.themeColor), fontSize: 14.0), + ), ], ), ); } } - diff --git a/flutter_wanandroid/lib/views/setting/about_page.dart b/flutter_wanandroid/lib/views/setting/about_page.dart index 88be055..6f707a7 100644 --- a/flutter_wanandroid/lib/views/setting/about_page.dart +++ b/flutter_wanandroid/lib/views/setting/about_page.dart @@ -14,6 +14,7 @@ import 'package:flutter_wanandroid/res/colours.dart'; import 'package:flutter_wanandroid/routers/routes.dart'; import 'package:flutter_wanandroid/utils/tool_utils.dart'; import 'package:package_info/package_info.dart'; +import 'package:share/share.dart'; class AboutPage extends StatefulWidget { @override @@ -44,6 +45,11 @@ class _AboutPageState extends State { return Scaffold( backgroundColor: dataUtils.getIsDarkMode() ? Colours.dark_unselected_item_color : Color(0xFFEEEEEE), appBar: AppBar( + actions: [ + IconButton(icon: Icon(Icons.share,color: Colors.white,),onPressed: (){ + Share.share("https://github.com/maoqitian/flutter_wanandroid"); + },), + ], leading: new IconButton( icon: new Icon( Icons.arrow_back, diff --git a/flutter_wanandroid/lib/views/web_page/controller/web_page_menu.dart b/flutter_wanandroid/lib/views/web_page/controller/web_page_menu.dart index 6671501..a3be5a8 100644 --- a/flutter_wanandroid/lib/views/web_page/controller/web_page_menu.dart +++ b/flutter_wanandroid/lib/views/web_page/controller/web_page_menu.dart @@ -5,9 +5,10 @@ import 'package:flutter/cupertino.dart'; /// User: maoqitian /// Date: 2020/1/10 0010 /// email: maoqitian068@163.com -/// des: +/// des: WebPageMenu import 'package:flutter/material.dart'; -import 'package:flutter_wanandroid/utils/tool_utils.dart'; +import 'package:flutter_wanandroid/model/route_page_data.dart'; +import 'package:share/share.dart'; import 'package:webview_flutter/webview_flutter.dart'; const String kNavigationExamplePage = ''' @@ -27,16 +28,18 @@ The navigation delegate is set to block navigation to the youtube website. enum MenuOptions { reloadPage, - showUserAgent, + share, + /*showUserAgent, listCookies, clearCookies, addToCache, listCache, - clearCache, + clearCache,*/ } class WebPageMenu extends StatelessWidget { - WebPageMenu(this.controller); + final RoutePageData routePageData; + WebPageMenu(this.controller,this.routePageData); final Future controller; final CookieManager cookieManager = CookieManager(); @@ -50,10 +53,15 @@ class WebPageMenu extends StatelessWidget { return PopupMenuButton( onSelected: (MenuOptions value) { switch (value) { + //webview 刷新 case MenuOptions.reloadPage: _onReloadPage(controller.data, context); break; - case MenuOptions.showUserAgent: + // share 分享 + case MenuOptions.share: + _onSharePage(controller.data, context); + break; + /*case MenuOptions.showUserAgent: _onShowUserAgent(controller.data, context); break; case MenuOptions.listCookies: @@ -70,23 +78,21 @@ class WebPageMenu extends StatelessWidget { break; case MenuOptions.clearCache: _onClearCache(controller.data, context); - break; + break;*/ } }, itemBuilder: (BuildContext context) => >[ PopupMenuItem( value: MenuOptions.reloadPage, enabled: controller.hasData, - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon(Icons.replay,color: Colors.grey,size: 25,), - SizedBox(width: 10.0), - Text('刷新页面') - ],), + child: buildMenuItem("刷新页面",Icons.replay), ), PopupMenuItem( + value: MenuOptions.share, + enabled: controller.hasData, + child: buildMenuItem("分享文章",Icons.share), + ), + /*PopupMenuItem( value: MenuOptions.showUserAgent, child: const Text('Show user agent'), enabled: controller.hasData, @@ -110,7 +116,7 @@ class WebPageMenu extends StatelessWidget { const PopupMenuItem( value: MenuOptions.clearCache, child: Text('Clear cache'), - ), + ),*/ ], ); }, @@ -197,4 +203,20 @@ class WebPageMenu extends StatelessWidget { void _onReloadPage(WebViewController controller, BuildContext context) async{ controller.reload(); } + + //页面刷新 + void _onSharePage(WebViewController controller, BuildContext context) async{ + Share.share(routePageData.url); + } + + Widget buildMenuItem(String menuName,IconData iconData) { + return Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(iconData,color: Colors.grey,size: 25,), + SizedBox(width: 10.0), + Text(menuName) + ],); + } } \ No newline at end of file diff --git a/flutter_wanandroid/lib/views/web_page/web_view_page.dart b/flutter_wanandroid/lib/views/web_page/web_view_page.dart index a380523..069e294 100644 --- a/flutter_wanandroid/lib/views/web_page/web_view_page.dart +++ b/flutter_wanandroid/lib/views/web_page/web_view_page.dart @@ -65,7 +65,7 @@ class _WebViewPageState extends State { ), actions: [ NavigationControls(_controller.future,routePageData), - WebPageMenu(_controller.future) + WebPageMenu(_controller.future,routePageData) ], ), body: Stack(children: [ diff --git a/flutter_wanandroid/pubspec.lock b/flutter_wanandroid/pubspec.lock index 7a9d1fa..d32229b 100644 --- a/flutter_wanandroid/pubspec.lock +++ b/flutter_wanandroid/pubspec.lock @@ -485,6 +485,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.0.5" + share: + dependency: "direct main" + description: + name: share + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.6.3+6" shared_preferences: dependency: "direct main" description: diff --git a/flutter_wanandroid/pubspec.yaml b/flutter_wanandroid/pubspec.yaml index 8481673..66c1c74 100644 --- a/flutter_wanandroid/pubspec.yaml +++ b/flutter_wanandroid/pubspec.yaml @@ -11,7 +11,7 @@ description: A new Flutter application for wanandroid. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.2+3 # 1.0.1 代表版本名 2 代表版本代号 +version: 1.0.3+4 # 1.0.1 代表版本名 2 代表版本代号 environment: sdk: ">=2.1.0 <3.0.0" @@ -58,6 +58,8 @@ dependencies: expandable: ^4.1.2 # data format date_format: ^1.0.8 + # share + share: ^0.6.3+6 dev_dependencies: flutter_test: