1
This commit is contained in:
27
build.dev.sh
27
build.dev.sh
@@ -1 +1,26 @@
|
||||
flutter build apk -Penv=dev
|
||||
#!/bin/bash
|
||||
|
||||
#当前执行目录
|
||||
current_dir=$(pwd)
|
||||
channelPath="$current_dir/build/app/outputs/apk/dev"
|
||||
mkdir -p "$channelPath"
|
||||
rm -rf "$channelPath"/*
|
||||
#定义环境变量和 Android 设备品牌
|
||||
declare -a APP_CHANNELS=("dev")
|
||||
|
||||
# 遍历每个环境配置并执行构建
|
||||
for index in "${APP_CHANNELS[@]}"; do
|
||||
ENV=${APP_CHANNELS[$index]}
|
||||
flutter build apk -Penv=dev -Pchannel=$ENV --dart-define=ENV=dev
|
||||
# 检查构建是否成功
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Build failed for ENV=$ENV"
|
||||
exit 1
|
||||
fi
|
||||
apkFile=$(find $(pwd)/build/app/outputs/apk/release/ -name "*.apk" -print -quit)
|
||||
# 获取 .apk 文件的文件名
|
||||
apkFileName=$(basename "$apkFile")
|
||||
mv $apkFile "$channelPath/$apkFileName"
|
||||
done
|
||||
|
||||
echo "All builds completed successfully."
|
||||
|
||||
@@ -11,7 +11,7 @@ declare -a APP_CHANNELS=("release")
|
||||
# 遍历每个环境配置并执行构建
|
||||
for index in "${APP_CHANNELS[@]}"; do
|
||||
ENV=${APP_CHANNELS[$index]}
|
||||
flutter build apk -Penv=prod -Pchannel=$ENV
|
||||
flutter build apk -Penv=prod -Pchannel=$ENV --dart-define=ENV=prod
|
||||
# 检查构建是否成功
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Build failed for ENV=$ENV"
|
||||
|
||||
@@ -8,19 +8,24 @@ class Config {
|
||||
///获取接口地址
|
||||
static String baseUrl() {
|
||||
if (getEnv() == 'dev') {
|
||||
return 'https://xueguang.test.tuzuu.com/api';
|
||||
return 'https://xg.test.lifebanktech.com/api';
|
||||
} else {
|
||||
return 'https://xueguang.test.tuzuu.com/api';
|
||||
return 'https://xg.lifebanktech.com/api';
|
||||
}
|
||||
}
|
||||
|
||||
/// 获取websocket地址
|
||||
static String wsUrl() {
|
||||
return "wss://xueguang.test.tuzuu.com/ws";
|
||||
final url = webUrl();
|
||||
final wsBase = url.replaceAll('https', 'wss'); // 替换协议
|
||||
return '$wsBase/ws';
|
||||
}
|
||||
|
||||
///网页域名地址
|
||||
static String get webUrl => "http://xueguang.test.tuzuu.com";
|
||||
static String webUrl() {
|
||||
String url = baseUrl();
|
||||
return url.replaceAll("/api", "");
|
||||
}
|
||||
|
||||
///声网APPid
|
||||
static String get swAppId => "011c2fd2e1854511a80c1aebded4eee7";
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:app/global/event_bus.dart';
|
||||
import 'package:app/providers/user_store.dart';
|
||||
import 'package:app/router/route_paths.dart';
|
||||
import 'package:app/widgets/version/version_dialog.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||
@@ -12,7 +12,6 @@ import 'package:go_router/go_router.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import 'global/theme/theme.dart';
|
||||
import 'global/theme/themes/light_theme.dart';
|
||||
|
||||
void main() {
|
||||
runApp(
|
||||
@@ -43,6 +42,13 @@ class _MyAppState extends State<MyApp> {
|
||||
ctx?.go(RoutePaths.login);
|
||||
}
|
||||
});
|
||||
|
||||
///延迟
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
final ctx = navigatorKey.currentState?.context;
|
||||
showUpdateDialog(ctx!);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -37,7 +37,7 @@ class _LoginPageState extends State<LoginPage> {
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
super.initState();
|
||||
}
|
||||
|
||||
///点击发送验证码
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'package:app/global/theme/base/app_theme_ext.dart';
|
||||
import 'package:app/pages/student/home/viewmodel/s_home_vm.dart';
|
||||
import 'package:app/widgets/version/version_dialog.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'widgets/tip_card.dart';
|
||||
@@ -13,7 +12,6 @@ class SHomePage extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
showUpdateDialog(context);
|
||||
return ChangeNotifierProvider(
|
||||
create: (_) => SHomeVm(),
|
||||
child: _HomeView(),
|
||||
|
||||
@@ -54,15 +54,18 @@ class TeacherVideo extends StatelessWidget {
|
||||
Positioned(
|
||||
top: 30,
|
||||
left: 10,
|
||||
child: Container(
|
||||
width: 200,
|
||||
color: Colors.black,
|
||||
child: AspectRatio(
|
||||
aspectRatio: 16 / 9,
|
||||
child: AgoraVideoView(
|
||||
controller: VideoViewController(
|
||||
rtcEngine: vm.engine!,
|
||||
canvas: const VideoCanvas(uid: 0),
|
||||
child: Visibility(
|
||||
visible: !vm.cameraClose,
|
||||
child: Container(
|
||||
width: 200,
|
||||
color: Colors.black,
|
||||
child: AspectRatio(
|
||||
aspectRatio: 16 / 9,
|
||||
child: AgoraVideoView(
|
||||
controller: VideoViewController(
|
||||
rtcEngine: vm.engine!,
|
||||
canvas: const VideoCanvas(uid: 0),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -103,6 +103,7 @@ class StuRoomVM extends ChangeNotifier {
|
||||
//启动连接
|
||||
await _ws.connect();
|
||||
//
|
||||
_sub?.cancel();
|
||||
_sub = _ws.stream.listen((msg) {
|
||||
//自习室人员变化,同时也设置房间是否开了
|
||||
if (msg.event == RoomEvent.changeUser) {
|
||||
|
||||
@@ -13,7 +13,6 @@ class THomePage extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// showUpdateDialog(context);
|
||||
return ChangeNotifierProvider(
|
||||
create: (_) => HomeViewModel(),
|
||||
child: const _HomeView(),
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'dart:io';
|
||||
import 'package:app/global/config.dart';
|
||||
import 'package:app/request/api/room_api.dart';
|
||||
import 'package:app/request/websocket/room_protocol.dart';
|
||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
|
||||
import '../dto/room/rtc_token_dto.dart';
|
||||
@@ -51,7 +52,6 @@ class RoomWebSocket {
|
||||
_socket = await WebSocket.connect(
|
||||
"${Config.wsUrl()}?token=$wsToken&study_room_id=$roomId",
|
||||
);
|
||||
logger.i("连接成功");
|
||||
_reconnectTimer?.cancel();
|
||||
_reconnectTimer = null;
|
||||
|
||||
@@ -76,7 +76,7 @@ class RoomWebSocket {
|
||||
},
|
||||
onDone: () {},
|
||||
onError: (_) {
|
||||
logger.e("连接异常断开");
|
||||
EasyLoading.showError("连接断开");
|
||||
},
|
||||
);
|
||||
//自动加入房间
|
||||
@@ -88,7 +88,6 @@ class RoomWebSocket {
|
||||
send(RoomCommand.ping);
|
||||
});
|
||||
} catch (e) {
|
||||
logger.e("连接失败");
|
||||
_reconnect();
|
||||
}
|
||||
}
|
||||
@@ -110,7 +109,7 @@ class RoomWebSocket {
|
||||
void _reconnect() {
|
||||
_reconnectTimer?.cancel();
|
||||
_reconnectTimer = Timer.periodic(Duration(seconds: 3), (timer) {
|
||||
logger.e("正在重连");
|
||||
EasyLoading.showToast("正在重连中");
|
||||
connect();
|
||||
});
|
||||
}
|
||||
@@ -121,11 +120,10 @@ class RoomWebSocket {
|
||||
_heartbeatTimer = null;
|
||||
//socket取消
|
||||
_socket?.close();
|
||||
// 销毁事件流
|
||||
// _msgController.close();
|
||||
// 错误重连取消
|
||||
_reconnectTimer?.cancel();
|
||||
_reconnectTimer = null;
|
||||
|
||||
logger.i("websocket销毁成功");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ class BoardDialog extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _BoardDialogState extends State<BoardDialog> {
|
||||
bool _loading = true;
|
||||
bool _loading = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
|
||||
@@ -55,12 +55,12 @@ class BoardManager {
|
||||
"write": isTeacher ? 1 : 0,
|
||||
};
|
||||
String paramStr = params.entries.map((e) => "${e.key}=${e.value}").join("&");
|
||||
|
||||
return "${Config.webUrl}/board?$paramStr";
|
||||
return "${Config.webUrl()}/board?$paramStr";
|
||||
}
|
||||
|
||||
/// 获取全局唯一 WebViewController
|
||||
Future<WebViewController> getController(String url) async {
|
||||
print(url);
|
||||
if (_webViewController != null) return _webViewController!;
|
||||
|
||||
_webViewController = WebViewController()
|
||||
|
||||
@@ -2,7 +2,7 @@ name: app
|
||||
description: "A new Flutter project."
|
||||
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||
|
||||
version: 1.1.1
|
||||
version: 1.1.3
|
||||
|
||||
environment:
|
||||
sdk: ^3.8.1
|
||||
|
||||
Reference in New Issue
Block a user