From 60c7ff62400db48db26a24206892d55fea4570b6 Mon Sep 17 00:00:00 2001 From: 18631081161 <2088094923@qq.com> Date: Sun, 1 Dec 2024 19:13:07 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E8=B7=B3=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/common/EventBusUtil.dart | 7 ++++++ lib/tools/home/home_recommend_page.dart | 30 ++++++++++++++++++----- lib/tools/home/my_home_page.dart | 32 +++++++++++++++++++++++-- lib/tools/home_page.dart | 16 +++++++++++++ lib/tools/login/login_page.dart | 3 +++ lib/tools/me/set/setting_page.dart | 20 ++++++++++++++-- pubspec.yaml | 1 + 7 files changed, 99 insertions(+), 10 deletions(-) diff --git a/lib/common/EventBusUtil.dart b/lib/common/EventBusUtil.dart index 0a8d416..7c0e5bf 100644 --- a/lib/common/EventBusUtil.dart +++ b/lib/common/EventBusUtil.dart @@ -47,3 +47,10 @@ class StartGames extends Event { StartGames(this.gameId); } + +//tab切换 +class TabSwitch extends Event { + final int index; + + TabSwitch(this.index); +} diff --git a/lib/tools/home/home_recommend_page.dart b/lib/tools/home/home_recommend_page.dart index 697dd5a..83e7efc 100644 --- a/lib/tools/home/home_recommend_page.dart +++ b/lib/tools/home/home_recommend_page.dart @@ -1,11 +1,13 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; import '../../beans/epg_bean.dart'; import '../../beans/home_info_bean.dart'; import '../../common/EventBusUtil.dart'; import '../../network/NetworkConfig.dart'; import '../game/game_info_page.dart'; +import '../me/set/agreement_page.dart'; class HomeRecommendPage extends StatefulWidget { final HomeInfoBean homeInfoBean; @@ -83,13 +85,13 @@ class _HomeRecommendState extends State with AutomaticKeepAli width: size.width, height: h160, // color: Colors.green, - margin: EdgeInsets.only(left: l15, right: l15,top: 10), + margin: EdgeInsets.only(left: l15, right: l15, top: 10), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ GestureDetector( onTap: () { - _jumpToPage(widget.homeInfoBean.epgList?[0]); + _jumpToPage(widget.homeInfoBean.epgList![0]); }, child: SizedBox( width: w99, @@ -156,7 +158,7 @@ class _HomeRecommendState extends State with AutomaticKeepAli ), GestureDetector( onTap: () { - _jumpToPage(widget.homeInfoBean.epgList?[1]); + _jumpToPage(widget.homeInfoBean.epgList![1]); }, child: SizedBox( width: w99, @@ -223,7 +225,7 @@ class _HomeRecommendState extends State with AutomaticKeepAli ), GestureDetector( onTap: () { - _jumpToPage(widget.homeInfoBean.epgList?[2]); + _jumpToPage(widget.homeInfoBean.epgList![2]); }, child: SizedBox( width: w99, @@ -804,8 +806,14 @@ class _HomeRecommendState extends State with AutomaticKeepAli EventBusUtil.fire(StartGames(gameId)); } + Future _launchUrl(url) async { + if (!await launchUrl(url)) { + throw Exception('Could not launch $url'); + } + } + ///跳转页面 - _jumpToPage(value) { + _jumpToPage(EpgBean value) { if (NetworkConfig.token == "") { Navigator.pushNamed(context, "/LoginPage"); return; @@ -823,15 +831,25 @@ class _HomeRecommendState extends State with AutomaticKeepAli break; case 2: //app页面 switch (value.resId) { - case "shop": //商城 + case "Shop": //商城 + EventBusUtil.fire(TabSwitch(2)); break; case "Task": //任务中心 break; } break; case 3: //内部H5 + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => AgreementPage( + title: "活动", + url: "${value.resId}", + )), + ); break; case 4: //外部H5 + _launchUrl(Uri.parse('${value.resId}')); break; } } diff --git a/lib/tools/home/my_home_page.dart b/lib/tools/home/my_home_page.dart index fe31bb3..fc85c0a 100644 --- a/lib/tools/home/my_home_page.dart +++ b/lib/tools/home/my_home_page.dart @@ -5,14 +5,18 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:carousel_slider/carousel_slider.dart'; import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:game/common/EventBusUtil.dart'; import 'package:game/dialog/sign_dialog.dart'; import 'package:game/network/NetworkConfig.dart'; +import 'package:url_launcher/url_launcher.dart'; import '../../beans/epg_bean.dart'; import '../../beans/home_info_bean.dart'; import '../../beans/home_ranking_bean.dart'; import '../../beans/sign_bean.dart'; import '../../common/func.dart'; +import '../game/game_info_page.dart'; +import '../me/set/agreement_page.dart'; import 'home_ranking_page.dart'; import 'home_recommend_page.dart'; import 'my_home_model.dart'; @@ -441,26 +445,50 @@ class _MyHomePageState extends State { }).toList(); } + Future _launchUrl(url) async { + if (!await launchUrl(url)) { + throw Exception('Could not launch $url'); + } + } + ///跳转页面 - _jumpToPage(value) { + _jumpToPage(EpgBean value) { if (NetworkConfig.token == "") { Navigator.pushNamed(context, "/LoginPage"); return; } switch (value.resType) { case 1: //游戏详情 + Navigator.push( + context, + MaterialPageRoute( + //导航打开新视图 + builder: (context) => GameInfoPage( + gameId: "${value.resId}", + ), + )); break; case 2: //app页面 switch (value.resId) { - case "shop": //商城 + case "Shop": //商城 + EventBusUtil.fire(TabSwitch(2)); break; case "Task": //任务中心 break; } break; case 3: //内部H5 + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => AgreementPage( + title: "活动", + url: "${value.resId}", + )), + ); break; case 4: //外部H5 + _launchUrl(Uri.parse('${value.resId}')); break; } } diff --git a/lib/tools/home_page.dart b/lib/tools/home_page.dart index 3395ce5..94dcb9c 100644 --- a/lib/tools/home_page.dart +++ b/lib/tools/home_page.dart @@ -36,6 +36,7 @@ class _HomePageState extends State with TickerProviderStateMixin { int currentIndex = 0; late StreamSubscription _startGamesEvent; + late StreamSubscription _tabSwitchEvent; late StreamSubscription subscription; final HomeModel _viewModel = HomeModel(); @@ -58,9 +59,22 @@ class _HomePageState extends State with TickerProviderStateMixin { } FunctionUtil.loading(); NetworkConfig.gameId = event.gameId; + print("_startGamesEvent"); _viewModel.playGame(event.gameId); }); + ///tab切换 + _tabSwitchEvent = EventBusUtil.listen((event) { + if (NetworkConfig.token == "") { + Navigator.pushNamed(context, "/LoginPage"); + return; + } + setState(() { + currentIndex = event.index; + }); + pageController.jumpToPage(event.index); + }); + subscription = _viewModel.streamController.stream.listen((event) { String code = event['code']; if (code.isNotEmpty) { @@ -99,6 +113,7 @@ class _HomePageState extends State with TickerProviderStateMixin { ///线路不足游戏开始排队 case "gameQueue": + EasyLoading.dismiss(); QueueBean queueBean = event['data']; String gameId = event['gameId']; // FunctionUtil.bottomNoSheetDialog( @@ -197,6 +212,7 @@ class _HomePageState extends State with TickerProviderStateMixin { void dispose() { // TODO: implement dispose _startGamesEvent.cancel(); + _tabSwitchEvent.cancel(); subscription.cancel(); super.dispose(); } diff --git a/lib/tools/login/login_page.dart b/lib/tools/login/login_page.dart index a57655c..c4c7978 100644 --- a/lib/tools/login/login_page.dart +++ b/lib/tools/login/login_page.dart @@ -4,6 +4,7 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:game/common/func.dart'; import '../me/set/agreement_page.dart'; import 'login_model.dart'; @@ -69,6 +70,7 @@ class _LoginPageState extends State { EasyLoading.showToast("请输入手机号"); return; } + FunctionUtil.loading(); _startCountdown(); _viewModel.sendPhoneNumber(_phoneController.text); } @@ -87,6 +89,7 @@ class _LoginPageState extends State { EasyLoading.showToast("请勾选协议"); return; } + FunctionUtil.loading(); _viewModel.login(_phoneController.text, _codeController.text); } diff --git a/lib/tools/me/set/setting_page.dart b/lib/tools/me/set/setting_page.dart index 8f0c77d..22c6e1a 100644 --- a/lib/tools/me/set/setting_page.dart +++ b/lib/tools/me/set/setting_page.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'agreement_page.dart'; + class SettingPage extends StatefulWidget { const SettingPage({super.key}); @@ -56,7 +58,14 @@ class _SettingPageState extends State { ///用户协议 GestureDetector( onTap: () { - // Navigator.pushNamed(context, "/ExpensesPage"); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const AgreementPage( + title: "用户协议", + url: "https://shhuanmeng.com/yonghuxieyi.html", + )), + ); }, child: Container( height: h60, @@ -91,7 +100,14 @@ class _SettingPageState extends State { ///隐私政策 GestureDetector( onTap: () { - // Navigator.pushNamed(context, "/ExpensesPage"); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const AgreementPage( + title: "隐私政策", + url: "https://shhuanmeng.com/yinsixieyi.html", + )), + ); }, child: Container( height: h60, diff --git a/pubspec.yaml b/pubspec.yaml index b427f72..f2dd16c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -39,6 +39,7 @@ dependencies: shared_preferences: ^2.2.3 webview_flutter: ^4.8.0 package_info: ^2.0.2 + url_launcher: ^6.3.1 dev_dependencies: flutter_test: