页面跳转

This commit is contained in:
18631081161 2024-12-01 19:13:07 +08:00
parent d9df1967ae
commit 60c7ff6240
7 changed files with 99 additions and 10 deletions

View File

@ -47,3 +47,10 @@ class StartGames extends Event {
StartGames(this.gameId); StartGames(this.gameId);
} }
//tab切换
class TabSwitch extends Event {
final int index;
TabSwitch(this.index);
}

View File

@ -1,11 +1,13 @@
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../beans/epg_bean.dart'; import '../../beans/epg_bean.dart';
import '../../beans/home_info_bean.dart'; import '../../beans/home_info_bean.dart';
import '../../common/EventBusUtil.dart'; import '../../common/EventBusUtil.dart';
import '../../network/NetworkConfig.dart'; import '../../network/NetworkConfig.dart';
import '../game/game_info_page.dart'; import '../game/game_info_page.dart';
import '../me/set/agreement_page.dart';
class HomeRecommendPage extends StatefulWidget { class HomeRecommendPage extends StatefulWidget {
final HomeInfoBean homeInfoBean; final HomeInfoBean homeInfoBean;
@ -83,13 +85,13 @@ class _HomeRecommendState extends State<HomeRecommendPage> with AutomaticKeepAli
width: size.width, width: size.width,
height: h160, height: h160,
// color: Colors.green, // color: Colors.green,
margin: EdgeInsets.only(left: l15, right: l15,top: 10), margin: EdgeInsets.only(left: l15, right: l15, top: 10),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
GestureDetector( GestureDetector(
onTap: () { onTap: () {
_jumpToPage(widget.homeInfoBean.epgList?[0]); _jumpToPage(widget.homeInfoBean.epgList![0]);
}, },
child: SizedBox( child: SizedBox(
width: w99, width: w99,
@ -156,7 +158,7 @@ class _HomeRecommendState extends State<HomeRecommendPage> with AutomaticKeepAli
), ),
GestureDetector( GestureDetector(
onTap: () { onTap: () {
_jumpToPage(widget.homeInfoBean.epgList?[1]); _jumpToPage(widget.homeInfoBean.epgList![1]);
}, },
child: SizedBox( child: SizedBox(
width: w99, width: w99,
@ -223,7 +225,7 @@ class _HomeRecommendState extends State<HomeRecommendPage> with AutomaticKeepAli
), ),
GestureDetector( GestureDetector(
onTap: () { onTap: () {
_jumpToPage(widget.homeInfoBean.epgList?[2]); _jumpToPage(widget.homeInfoBean.epgList![2]);
}, },
child: SizedBox( child: SizedBox(
width: w99, width: w99,
@ -804,8 +806,14 @@ class _HomeRecommendState extends State<HomeRecommendPage> with AutomaticKeepAli
EventBusUtil.fire(StartGames(gameId)); EventBusUtil.fire(StartGames(gameId));
} }
Future<void> _launchUrl(url) async {
if (!await launchUrl(url)) {
throw Exception('Could not launch $url');
}
}
/// ///
_jumpToPage(value) { _jumpToPage(EpgBean value) {
if (NetworkConfig.token == "") { if (NetworkConfig.token == "") {
Navigator.pushNamed(context, "/LoginPage"); Navigator.pushNamed(context, "/LoginPage");
return; return;
@ -823,15 +831,25 @@ class _HomeRecommendState extends State<HomeRecommendPage> with AutomaticKeepAli
break; break;
case 2: //app页面 case 2: //app页面
switch (value.resId) { switch (value.resId) {
case "shop": // case "Shop": //
EventBusUtil.fire(TabSwitch(2));
break; break;
case "Task": // case "Task": //
break; break;
} }
break; break;
case 3: //H5 case 3: //H5
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AgreementPage(
title: "活动",
url: "${value.resId}",
)),
);
break; break;
case 4: //H5 case 4: //H5
_launchUrl(Uri.parse('${value.resId}'));
break; break;
} }
} }

View File

@ -5,14 +5,18 @@ import 'package:cached_network_image/cached_network_image.dart';
import 'package:carousel_slider/carousel_slider.dart'; import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:game/common/EventBusUtil.dart';
import 'package:game/dialog/sign_dialog.dart'; import 'package:game/dialog/sign_dialog.dart';
import 'package:game/network/NetworkConfig.dart'; import 'package:game/network/NetworkConfig.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../beans/epg_bean.dart'; import '../../beans/epg_bean.dart';
import '../../beans/home_info_bean.dart'; import '../../beans/home_info_bean.dart';
import '../../beans/home_ranking_bean.dart'; import '../../beans/home_ranking_bean.dart';
import '../../beans/sign_bean.dart'; import '../../beans/sign_bean.dart';
import '../../common/func.dart'; import '../../common/func.dart';
import '../game/game_info_page.dart';
import '../me/set/agreement_page.dart';
import 'home_ranking_page.dart'; import 'home_ranking_page.dart';
import 'home_recommend_page.dart'; import 'home_recommend_page.dart';
import 'my_home_model.dart'; import 'my_home_model.dart';
@ -441,26 +445,50 @@ class _MyHomePageState extends State<MyHomePage> {
}).toList(); }).toList();
} }
Future<void> _launchUrl(url) async {
if (!await launchUrl(url)) {
throw Exception('Could not launch $url');
}
}
/// ///
_jumpToPage(value) { _jumpToPage(EpgBean value) {
if (NetworkConfig.token == "") { if (NetworkConfig.token == "") {
Navigator.pushNamed(context, "/LoginPage"); Navigator.pushNamed(context, "/LoginPage");
return; return;
} }
switch (value.resType) { switch (value.resType) {
case 1: // case 1: //
Navigator.push(
context,
MaterialPageRoute(
//
builder: (context) => GameInfoPage(
gameId: "${value.resId}",
),
));
break; break;
case 2: //app页面 case 2: //app页面
switch (value.resId) { switch (value.resId) {
case "shop": // case "Shop": //
EventBusUtil.fire(TabSwitch(2));
break; break;
case "Task": // case "Task": //
break; break;
} }
break; break;
case 3: //H5 case 3: //H5
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AgreementPage(
title: "活动",
url: "${value.resId}",
)),
);
break; break;
case 4: //H5 case 4: //H5
_launchUrl(Uri.parse('${value.resId}'));
break; break;
} }
} }

View File

@ -36,6 +36,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
int currentIndex = 0; int currentIndex = 0;
late StreamSubscription<StartGames> _startGamesEvent; late StreamSubscription<StartGames> _startGamesEvent;
late StreamSubscription<TabSwitch> _tabSwitchEvent;
late StreamSubscription subscription; late StreamSubscription subscription;
final HomeModel _viewModel = HomeModel(); final HomeModel _viewModel = HomeModel();
@ -58,9 +59,22 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
} }
FunctionUtil.loading(); FunctionUtil.loading();
NetworkConfig.gameId = event.gameId; NetworkConfig.gameId = event.gameId;
print("_startGamesEvent");
_viewModel.playGame(event.gameId); _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) { subscription = _viewModel.streamController.stream.listen((event) {
String code = event['code']; String code = event['code'];
if (code.isNotEmpty) { if (code.isNotEmpty) {
@ -99,6 +113,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
///线 ///线
case "gameQueue": case "gameQueue":
EasyLoading.dismiss();
QueueBean queueBean = event['data']; QueueBean queueBean = event['data'];
String gameId = event['gameId']; String gameId = event['gameId'];
// FunctionUtil.bottomNoSheetDialog( // FunctionUtil.bottomNoSheetDialog(
@ -197,6 +212,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
void dispose() { void dispose() {
// TODO: implement dispose // TODO: implement dispose
_startGamesEvent.cancel(); _startGamesEvent.cancel();
_tabSwitchEvent.cancel();
subscription.cancel(); subscription.cancel();
super.dispose(); super.dispose();
} }

View File

@ -4,6 +4,7 @@ import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:game/common/func.dart';
import '../me/set/agreement_page.dart'; import '../me/set/agreement_page.dart';
import 'login_model.dart'; import 'login_model.dart';
@ -69,6 +70,7 @@ class _LoginPageState extends State<LoginPage> {
EasyLoading.showToast("请输入手机号"); EasyLoading.showToast("请输入手机号");
return; return;
} }
FunctionUtil.loading();
_startCountdown(); _startCountdown();
_viewModel.sendPhoneNumber(_phoneController.text); _viewModel.sendPhoneNumber(_phoneController.text);
} }
@ -87,6 +89,7 @@ class _LoginPageState extends State<LoginPage> {
EasyLoading.showToast("请勾选协议"); EasyLoading.showToast("请勾选协议");
return; return;
} }
FunctionUtil.loading();
_viewModel.login(_phoneController.text, _codeController.text); _viewModel.login(_phoneController.text, _codeController.text);
} }

View File

@ -1,5 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'agreement_page.dart';
class SettingPage extends StatefulWidget { class SettingPage extends StatefulWidget {
const SettingPage({super.key}); const SettingPage({super.key});
@ -56,7 +58,14 @@ class _SettingPageState extends State<SettingPage> {
/// ///
GestureDetector( GestureDetector(
onTap: () { onTap: () {
// Navigator.pushNamed(context, "/ExpensesPage"); Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const AgreementPage(
title: "用户协议",
url: "https://shhuanmeng.com/yonghuxieyi.html",
)),
);
}, },
child: Container( child: Container(
height: h60, height: h60,
@ -91,7 +100,14 @@ class _SettingPageState extends State<SettingPage> {
/// ///
GestureDetector( GestureDetector(
onTap: () { onTap: () {
// Navigator.pushNamed(context, "/ExpensesPage"); Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const AgreementPage(
title: "隐私政策",
url: "https://shhuanmeng.com/yinsixieyi.html",
)),
);
}, },
child: Container( child: Container(
height: h60, height: h60,

View File

@ -39,6 +39,7 @@ dependencies:
shared_preferences: ^2.2.3 shared_preferences: ^2.2.3
webview_flutter: ^4.8.0 webview_flutter: ^4.8.0
package_info: ^2.0.2 package_info: ^2.0.2
url_launcher: ^6.3.1
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: