diff --git a/README.md b/README.md index 9762f12..445df06 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ ios 下载| 暂无下载,可以自行clone项目编译体验  ## 项目截图展示 -### gif +### gif (debug 模式略显卡顿,可下载release版本体验丝滑顺畅) <img src="https://github.com/maoqitian/flutter_wanandroid/raw/master/preview/showapp1.gif" height="300" width="170"><img src="https://github.com/maoqitian/flutter_wanandroid/raw/master/preview/showapp2.gif" height="300" width="170"><img src="https://github.com/maoqitian/flutter_wanandroid/raw/master/preview/showapp3.gif" height="300" width="170"> @@ -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<ThemeModel>(context,listen: false).changeTheme(this.themeColor,false); - dataUtils.setPrimaryColor(themeColor); - dataUtils.setIsDarkMode(false); - Navigator.pop(context); + onTap: () async { + ToolUtils.showToast(msg: "改变主题颜色为" + colorName); + Provider.of<ThemeModel>(context, listen: false) + .changeTheme(this.themeColor, false); + dataUtils.setPrimaryColor(themeColor); + dataUtils.setIsDarkMode(false); + Navigator.pop(context); }, - child: new Column( // 竖直布局 + child: Column( + // 竖直布局 children: <Widget>[ - 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: <Widget>[ + 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<AboutPage> { return Scaffold( backgroundColor: dataUtils.getIsDarkMode() ? Colours.dark_unselected_item_color : Color(0xFFEEEEEE), appBar: AppBar( + actions: <Widget>[ + 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<WebViewController> controller; final CookieManager cookieManager = CookieManager(); @@ -50,10 +53,15 @@ class WebPageMenu extends StatelessWidget { return PopupMenuButton<MenuOptions>( 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<MenuOptions>>[ PopupMenuItem<MenuOptions>( value: MenuOptions.reloadPage, enabled: controller.hasData, - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: <Widget>[ - Icon(Icons.replay,color: Colors.grey,size: 25,), - SizedBox(width: 10.0), - Text('刷新页面') - ],), + child: buildMenuItem("刷新页面",Icons.replay), ), PopupMenuItem<MenuOptions>( + value: MenuOptions.share, + enabled: controller.hasData, + child: buildMenuItem("分享文章",Icons.share), + ), + /*PopupMenuItem<MenuOptions>( value: MenuOptions.showUserAgent, child: const Text('Show user agent'), enabled: controller.hasData, @@ -110,7 +116,7 @@ class WebPageMenu extends StatelessWidget { const PopupMenuItem<MenuOptions>( 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: <Widget>[ + 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<WebViewPage> { ), actions: <Widget>[ NavigationControls(_controller.future,routePageData), - WebPageMenu(_controller.future) + WebPageMenu(_controller.future,routePageData) ], ), body: Stack(children: <Widget>[ 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: