panhui vor 7 Jahren
Ursprung
Commit
6e1c417ed6
1 geänderte Dateien mit 140 neuen und 48 gelöschten Zeilen
  1. 140 48
      lib/pages/roomInfo.dart

+ 140 - 48
lib/pages/roomInfo.dart

@@ -1,5 +1,6 @@
 import 'package:flutter/material.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:url_launcher/url_launcher.dart';
 import '../styles/colors.dart';
 import 'dart:ui';
 import '../plugins/ScreenStramPlugin.dart';
@@ -20,7 +21,8 @@ class RoomInfo extends StatefulWidget {
   RoomInfoState createState() => RoomInfoState();
 }
 
-class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin {
+class RoomInfoState extends State<RoomInfo>
+    with SingleTickerProviderStateMixin {
   List<Map> tabList;
   TabController mController;
   Map roomInfo;
@@ -32,7 +34,8 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
 //获取房间信息
   void getRoomInfo() async {
     Toast.show(context, '加载中', -1, 'loading');
-    Result res = await HttpManager.get("houseInfo/getOne", data: {"id": widget.roomId});
+    Result res =
+        await HttpManager.get("houseInfo/getOne", data: {"id": widget.roomId});
     Toast.hide();
     if (res.success) {
       setState(() {
@@ -48,7 +51,8 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
 //隔一秒检查是否开始
   getNowStatus() async {
     await Future.delayed(const Duration(seconds: 1));
-    Result res = await HttpManager.get("houseInfo/getPlayerNum", data: {"id": widget.roomId});
+    Result res = await HttpManager.get("houseInfo/getPlayerNum",
+        data: {"id": widget.roomId});
     if (res.success) {
       if (houseInfo.statusFlag == 0 && res.data["statusFlag"] == 2) {
         showStart();
@@ -70,7 +74,8 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
       PageRouteBuilder(
         opaque: false,
         transitionDuration: Duration(milliseconds: 300),
-        transitionsBuilder: (BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) {
+        transitionsBuilder: (BuildContext context, Animation<double> animation,
+            Animation<double> secondaryAnimation, Widget child) {
           return FadeTransition(
             opacity: CurvedAnimation(parent: animation, curve: Curves.linear),
             child: child,
@@ -78,31 +83,40 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
         },
         pageBuilder: (BuildContext context, _, __) {
           return StartWindow();
-
-
-
-
-          
         },
       ),
     );
-
-    Toast.show(context, '加载中', -1, 'loading');
     Map<String, dynamic> data = {"id": playerInfo.id};
     if (result) {
-      data['statusFlag'] = 2;
+      bool success = await ScreenStreamPlugin.start(
+          'rtmp://49.4.66.233:1935/myapp/' +
+              playerInfo.userId.toString() +
+              '?playerInfoId=' +
+              playerInfo.id.toString());
+      print('stream screen:' + success.toString());
+      if (success) {
+        data['statusFlag'] = 2;
+      } else {
+        data['statusFlag'] = 6;
+      }
     } else {
       data['statusFlag'] = 6;
     }
-    Toast.hide();
+    Toast.show(context, '加载中', -1, 'loading');
     Result res = await HttpManager.post("playerInfo/update", data: data);
+    Toast.hide();
     if (res.success) {
       if (data['statusFlag'] == 2) {
-        //加入比赛成功,开始录屏
-        bool success =
-            await ScreenStreamPlugin.start('rtmp://49.4.66.233:1935/myapp/' + playerInfo.userId.toString() + '?playerInfoId=' + playerInfo.id.toString());
-        print('stream screen:' + success.toString());
-        Future.delayed(Duration(milliseconds: 100), () => showSucessInfo());
+        await Future.delayed(Duration(milliseconds: 100));
+        showSucessInfo();
+        await Future.delayed(Duration(seconds: 1), () async {
+          const url = 'pubgmhd1106467070://';
+          if (await canLaunch(url)) {
+            await launch(url);
+          } else {
+            throw 'Could not launch $url';
+          }
+        });
       } else {
         // showBackDialog();
         Future.delayed(Duration(milliseconds: 100), () => showBackDialog());
@@ -129,7 +143,8 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
               child: new Text('完成比赛'),
               onPressed: () async {
                 Toast.show(context, '加载中', -1, 'loading');
-                HttpManager.post("playerInfo/update", data: {'id': playerInfo.id, 'statusFlag': 3});
+                HttpManager.post("playerInfo/update",
+                    data: {'id': playerInfo.id, 'statusFlag': 3});
                 bool success = await ScreenStreamPlugin.stop();
                 print('stop stream screen:' + success.toString());
                 Toast.hide();
@@ -176,7 +191,10 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
 
 //检查加入信息
   checkJoinInfo() async {
-    Result res = await HttpManager.get("playerInfo/getOne", data: {"userId": StoreProvider.of<AppState>(context).state.userInfo.id, "houseId": widget.roomId});
+    Result res = await HttpManager.get("playerInfo/getOne", data: {
+      "userId": StoreProvider.of<AppState>(context).state.userInfo.id,
+      "houseId": widget.roomId
+    });
     if (res.success) {
       print(res.data);
       if (res.data == null) {
@@ -202,7 +220,10 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
 //加入房间
   joinRoom() async {
     Toast.show(context, '加载中', -1, 'loading');
-    Result res = await HttpManager.post("houseInfo/join", data: {"houseId": widget.roomId, "userId": StoreProvider.of<AppState>(context).state.userInfo.id});
+    Result res = await HttpManager.post("houseInfo/join", data: {
+      "houseId": widget.roomId,
+      "userId": StoreProvider.of<AppState>(context).state.userInfo.id
+    });
     Toast.hide();
     if (res.success) {
       Toast.show(context, '加入成功', 1500, 'success');
@@ -292,7 +313,10 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
             color: BG_SUB_COLOR,
             child: TabBarView(
               controller: mController,
-              children: [_firstPage(), SecondPage(roomId: widget.roomId, status: status)],
+              children: [
+                _firstPage(),
+                SecondPage(roomId: widget.roomId, status: status)
+              ],
             )),
         floatingActionButton: _joinBtn(),
         floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
@@ -308,11 +332,17 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
   Widget _firstPage() {
     Map houseLevelInfo = roomInfo.isNotEmpty ? roomInfo["houseLevelInfo"] : {};
 
-    String levelName = houseLevelInfo.containsKey("levelName") ? houseLevelInfo["levelName"] : '黄金';
+    String levelName = houseLevelInfo.containsKey("levelName")
+        ? houseLevelInfo["levelName"]
+        : '黄金';
 
-    int joinMoney = houseLevelInfo.containsKey('feeRatio') && roomInfo.containsKey("bonus") ? houseLevelInfo["feeRatio"] * roomInfo["bonus"] : 0;
+    int joinMoney =
+        houseLevelInfo.containsKey('feeRatio') && roomInfo.containsKey("bonus")
+            ? houseLevelInfo["feeRatio"] * roomInfo["bonus"]
+            : 0;
 
-    String topImg = 'http://images.liqucn.com/img/h22/h70/img_localize_8e824debdd9ee29522690f36680e2d8e_600x337.png';
+    String topImg =
+        'http://images.liqucn.com/img/h22/h70/img_localize_8e824debdd9ee29522690f36680e2d8e_600x337.png';
     int statuFlag = 0;
     if (houseInfo != null) {
       if (houseInfo.video != null) {
@@ -345,16 +375,25 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
                           Container(
                             margin: EdgeInsets.only(left: 30, right: 8),
                             child: Text(
-                              roomInfo.containsKey("houseName") ? roomInfo["houseName"] : '',
-                              style: TextStyle(color: Colors.white, fontSize: 16, fontWeight: FontWeight.w500),
+                              roomInfo.containsKey("houseName")
+                                  ? roomInfo["houseName"]
+                                  : '',
+                              style: TextStyle(
+                                  color: Colors.white,
+                                  fontSize: 16,
+                                  fontWeight: FontWeight.w500),
                             ),
                           ),
                           Image.network(
-                            houseLevelInfo.containsKey("icon") ? houseLevelInfo["icon"] : '',
+                            houseLevelInfo.containsKey("icon")
+                                ? houseLevelInfo["icon"]
+                                : '',
                             width: 14,
                           ),
                           Text(
-                            houseLevelInfo.containsKey("levelName") ? houseLevelInfo["levelName"] : '',
+                            houseLevelInfo.containsKey("levelName")
+                                ? houseLevelInfo["levelName"]
+                                : '',
                             style: TextStyle(color: colorInfo[levelName]),
                           )
                         ],
@@ -362,7 +401,9 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
                   Container(
                     margin: EdgeInsets.only(top: 6),
                     child: Text(
-                      roomInfo.containsKey('houseAbstract') ? roomInfo["houseAbstract"] : "",
+                      roomInfo.containsKey('houseAbstract')
+                          ? roomInfo["houseAbstract"]
+                          : "",
                       style: TextStyle(color: Color(0xFF9BA0AE), fontSize: 12),
                     ),
                   ),
@@ -374,8 +415,17 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
                         width: 20,
                       ),
                       Text(
-                        (houseInfo != null ? houseInfo.playerNumber.toString() : '0') + '/' + (houseInfo != null ? houseInfo.maxNumber.toString() : '0'),
-                        style: TextStyle(fontSize: 14, fontWeight: FontWeight.w500, color: Color(0xFFB1B2C0)),
+                        (houseInfo != null
+                                ? houseInfo.playerNumber.toString()
+                                : '0') +
+                            '/' +
+                            (houseInfo != null
+                                ? houseInfo.maxNumber.toString()
+                                : '0'),
+                        style: TextStyle(
+                            fontSize: 14,
+                            fontWeight: FontWeight.w500,
+                            color: Color(0xFFB1B2C0)),
                       )
                     ],
                   ),
@@ -384,7 +434,10 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
                     width: 200,
                     height: 40,
                     decoration: BoxDecoration(
-                      border: Border.all(width: 1, color: PRIMARY_COLOR, style: BorderStyle.solid),
+                      border: Border.all(
+                          width: 1,
+                          color: PRIMARY_COLOR,
+                          style: BorderStyle.solid),
                       borderRadius: BorderRadius.all(Radius.circular(2)),
                     ),
                     child: Row(
@@ -406,7 +459,10 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
                           ),
                         ),
                         Text(
-                          'X' + (houseInfo != null ? houseInfo.bonus.toString() : '0'),
+                          'X' +
+                              (houseInfo != null
+                                  ? houseInfo.bonus.toString()
+                                  : '0'),
                           style: TextStyle(
                             color: PRIMARY_COLOR,
                             fontSize: 22,
@@ -420,10 +476,14 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
                       ? Container(
                           width: double.infinity,
                           margin: EdgeInsets.only(top: 25, left: 15, right: 15),
-                          padding: EdgeInsets.only(top: 15, left: 15, right: 10, bottom: 15),
+                          padding: EdgeInsets.only(
+                              top: 15, left: 15, right: 10, bottom: 15),
                           decoration: BoxDecoration(
                               borderRadius: BorderRadius.only(
-                                  topLeft: Radius.circular(0), topRight: Radius.circular(8), bottomLeft: Radius.circular(8), bottomRight: Radius.circular(8)),
+                                  topLeft: Radius.circular(0),
+                                  topRight: Radius.circular(8),
+                                  bottomLeft: Radius.circular(8),
+                                  bottomRight: Radius.circular(8)),
                               gradient: LinearGradient(
                                 begin: Alignment.topRight,
                                 colors: [Color(0xFF464B6A), Color(0xFF35395E)],
@@ -455,7 +515,11 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
       return Container(
         width: ScreenUtil().setWidth(375),
         height: 48 + ScreenUtil().setHeight(40),
-        padding: EdgeInsets.only(top: ScreenUtil().setHeight(20), bottom: ScreenUtil().setHeight(20), left: 15, right: 15),
+        padding: EdgeInsets.only(
+            top: ScreenUtil().setHeight(20),
+            bottom: ScreenUtil().setHeight(20),
+            left: 15,
+            right: 15),
         child: RaisedButton(
             textColor: Colors.white,
             child: Row(
@@ -469,14 +533,20 @@ class RoomInfoState extends State<RoomInfo> with SingleTickerProviderStateMixin
                   margin: EdgeInsets.only(left: 6),
                   child: Text(
                     'X' + joinMoney.toString(),
-                    style: TextStyle(color: Colors.white, fontSize: 16, fontWeight: FontWeight.w500),
+                    style: TextStyle(
+                        color: Colors.white,
+                        fontSize: 16,
+                        fontWeight: FontWeight.w500),
                   ),
                 ),
                 Container(
                     margin: EdgeInsets.only(left: 20),
                     child: Text(
                       '加入房间',
-                      style: TextStyle(color: Colors.white, fontSize: 16, fontWeight: FontWeight.w500),
+                      style: TextStyle(
+                          color: Colors.white,
+                          fontSize: 16,
+                          fontWeight: FontWeight.w500),
                     ))
               ],
             ),
@@ -559,7 +629,8 @@ class RankContentState extends State<RankContent> {
   List<PlayerInfo> topList = [];
   getTopList() async {
     Toast.show(context, '加载中', -1, 'loading');
-    Result res = await HttpManager.get("playerInfo/rankPage", data: {"houseId": widget.roomId, "currentPage": 1, "pageNumber": 3});
+    Result res = await HttpManager.get("playerInfo/rankPage",
+        data: {"houseId": widget.roomId, "currentPage": 1, "pageNumber": 3});
     Toast.hide();
     List<PlayerInfo> list = [];
     if (res.success) {
@@ -628,14 +699,19 @@ class RankContentState extends State<RankContent> {
                   width: _num == 1 ? 70 : 60,
                   height: _num == 1 ? 70 : 60,
                   decoration: BoxDecoration(
-                    gradient: LinearGradient(colors: colorList[_num - 1], begin: Alignment.topLeft, end: Alignment.bottomRight),
+                    gradient: LinearGradient(
+                        colors: colorList[_num - 1],
+                        begin: Alignment.topLeft,
+                        end: Alignment.bottomRight),
                     borderRadius: BorderRadius.all(Radius.circular(100)),
                   ),
                   child: Center(
                       child: Container(
                     width: _num == 1 ? 60 : 50,
                     height: _num == 1 ? 60 : 50,
-                    child: CircleAvatar(backgroundImage: NetworkImage(topList[_num - 1].userInfo.icon)),
+                    child: CircleAvatar(
+                        backgroundImage:
+                            NetworkImage(topList[_num - 1].userInfo.icon)),
                   )),
                 ),
                 Positioned(
@@ -666,7 +742,12 @@ class RankContentState extends State<RankContent> {
             mainAxisAlignment: MainAxisAlignment.center,
             children: <Widget>[
               Image.asset('images/icon_jinbi_xiao_hong.png', width: 20),
-              Text('x' + (topList[_num - 1].bonus != null ? topList[_num - 1].bonus.toString() : '0'), style: TextStyle(color: PRIMARY_COLOR, fontSize: 12))
+              Text(
+                  'x' +
+                      (topList[_num - 1].bonus != null
+                          ? topList[_num - 1].bonus.toString()
+                          : '0'),
+                  style: TextStyle(color: PRIMARY_COLOR, fontSize: 12))
             ],
           )
         ],
@@ -693,7 +774,11 @@ class SecondPageState extends State<SecondPage> {
   getPlayerPage() async {
     ismore = false;
     Toast.show(context, '加载中', -1, 'loading');
-    Result res = await HttpManager.get("playerInfo/rankPage", data: {"houseId": widget.roomId, "currentPage": currentPage, "pageNumber": 20});
+    Result res = await HttpManager.get("playerInfo/rankPage", data: {
+      "houseId": widget.roomId,
+      "currentPage": currentPage,
+      "pageNumber": 20
+    });
     Toast.hide();
     List<PlayerInfo> list = joinList;
     if (currentPage == 1) {
@@ -723,7 +808,8 @@ class SecondPageState extends State<SecondPage> {
     Future.delayed(Duration.zero, () {
       getPlayerPage();
       _perController.addListener(() {
-        if (_perController.position.pixels == _perController.position.maxScrollExtent) {
+        if (_perController.position.pixels ==
+            _perController.position.maxScrollExtent) {
           if (ismore) {
             currentPage++;
             getPlayerPage();
@@ -779,7 +865,10 @@ class SecondPageState extends State<SecondPage> {
       margin: EdgeInsets.only(top: index == 0 ? 10 : 0),
       padding: EdgeInsets.only(left: 15, right: 15),
       child: Container(
-        decoration: BoxDecoration(border: Border(bottom: BorderSide(width: 1, color: BG_SUB_COLOR, style: BorderStyle.solid))),
+        decoration: BoxDecoration(
+            border: Border(
+                bottom: BorderSide(
+                    width: 1, color: BG_SUB_COLOR, style: BorderStyle.solid))),
         child: Row(
           children: <Widget>[
             Container(
@@ -787,7 +876,8 @@ class SecondPageState extends State<SecondPage> {
               width: 36,
               height: 36,
               child: CircleAvatar(
-                backgroundImage: NetworkImage(info.userInfo != null ? info.userInfo.icon : ''),
+                backgroundImage: NetworkImage(
+                    info.userInfo != null ? info.userInfo.icon : ''),
               ),
             ),
             Expanded(
@@ -804,7 +894,9 @@ class SecondPageState extends State<SecondPage> {
             ),
             widget.status == 4 && index < 3
                 ? Image.asset(
-                    'images/icon_paihangbang_0' + (index + 1).toString() + '.png',
+                    'images/icon_paihangbang_0' +
+                        (index + 1).toString() +
+                        '.png',
                     width: 32,
                   )
                 : Container()