页面跳转

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);
}
//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: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<HomeRecommendPage> 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<HomeRecommendPage> 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<HomeRecommendPage> 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<HomeRecommendPage> with AutomaticKeepAli
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 == "") {
Navigator.pushNamed(context, "/LoginPage");
return;
@ -823,15 +831,25 @@ class _HomeRecommendState extends State<HomeRecommendPage> 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;
}
}

View File

@ -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<MyHomePage> {
}).toList();
}
Future<void> _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;
}
}

View File

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

View File

@ -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<LoginPage> {
EasyLoading.showToast("请输入手机号");
return;
}
FunctionUtil.loading();
_startCountdown();
_viewModel.sendPhoneNumber(_phoneController.text);
}
@ -87,6 +89,7 @@ class _LoginPageState extends State<LoginPage> {
EasyLoading.showToast("请勾选协议");
return;
}
FunctionUtil.loading();
_viewModel.login(_phoneController.text, _codeController.text);
}

View File

@ -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<SettingPage> {
///
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<SettingPage> {
///
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,

View File

@ -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: