Commit eacff131 authored by 张宏's avatar 张宏

1

parent 30ca8815
This diff is collapsed.
# Default ignored files
/shelf/
/workspace.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DeviceTable">
<option name="columnSorters">
<list>
<ColumnSorterState>
<option name="column" value="Name" />
<option name="order" value="ASCENDING" />
</ColumnSorterState>
</list>
</option>
</component>
</project>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
<component name="libraryTable">
<library name="Dart SDK">
<CLASSES>
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/_internal" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/async" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/cli" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/collection" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/concurrent" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/convert" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/core" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/developer" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/ffi" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/html" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/indexed_db" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/io" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/isolate" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/js" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/js_interop" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/js_interop_unsafe" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/js_util" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/math" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/mirrors" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/svg" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/typed_data" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/web_audio" />
<root url="file://$USER_HOME$/fvm/versions/3.41.9/bin/cache/dart-sdk/lib/web_gl" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Flutter Plugins" type="FlutterPluginsLibraryType">
<CLASSES>
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/flutter_secure_storage_web-1.2.1" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/fluttertoast-9.0.0" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/path_provider_android-2.3.1" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.3" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.5" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.30" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/url_launcher-6.3.2" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/flutter_secure_storage_windows-3.1.2" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/jni_flutter-1.0.1" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/path_provider_foundation-2.6.0" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/url_launcher_ios-6.4.1" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/vibration-3.2.0" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/path_provider-2.1.5" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.5" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.2" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/shared_preferences-2.5.5" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.23" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/jni-1.0.0" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.6" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/share_plus-12.0.2" />
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dev/device_info_plus-12.4.0" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MarkdownSettings">
<option name="previewPanelProviderInfo">
<ProviderInfo name="Compose (experimental)" className="com.intellij.markdown.compose.preview.ComposePanelProvider" />
</option>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_26" project-jdk-name="Android API 34, extension level 7 Platform" project-jdk-type="Android SDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/laki_icu_app.iml" filepath="$PROJECT_DIR$/.idea/laki_icu_app.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
\ No newline at end of file
......@@ -9,18 +9,33 @@
"request": "launch",
"type": "dart",
"args": [
"--flavor",
"dev",
"--dart-define-from-file=env/dev.json",
"--dart-define=CHANNEL=default"
]
},
{
"name": "laki_icu_app (test)",
"name": "laki_icu_app (staging)",
"request": "launch",
"type": "dart",
"args": [
"--flavor",
"staging",
"--dart-define-from-file=env/test.json",
"--dart-define=CHANNEL=default"
]
},
{
"name": "laki_icu_app (prod)",
"request": "launch",
"type": "dart",
"args": [
"--flavor",
"prod",
"--dart-define-from-file=env/prod.json",
"--dart-define=CHANNEL=default"
]
}
]
}
\ No newline at end of file
{
"dart.flutterSdkPath": ".fvm/versions/3.41.9"
"dart.flutterSdkPath": ".fvm/versions/3.41.9",
"java.configuration.updateBuildConfiguration": "interactive"
}
\ No newline at end of file
plugins {
id "com.android.application"
id "kotlin-android"
......@@ -23,7 +25,7 @@ if (flutterVersionName == null) {
}
android {
namespace "com.example.smart_hotel_app"
namespace "com.example.laki_icu_app"
compileSdkVersion flutter.compileSdkVersion
ndkVersion flutter.ndkVersion
......@@ -42,7 +44,7 @@ android {
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.smart_hotel_app"
applicationId "com.example.laki_icu_app"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion flutter.minSdkVersion
......@@ -58,19 +60,19 @@ android {
dimension "environment"
applicationIdSuffix ".dev"
versionNameSuffix "-dev"
resValue "string", "app_name", "智能酒店-dev"
resValue "string", "app_name", "laki_icu-dev"
}
staging {
dimension "environment"
applicationIdSuffix ".staging"
versionNameSuffix "-staging"
resValue "string", "app_name", "智能酒店-staging"
resValue "string", "app_name", "laki_icu-staging"
}
prod {
dimension "environment"
applicationIdSuffix ""
versionNameSuffix ""
resValue "string", "app_name", "智能酒店"
resValue "string", "app_name", "laki_icu"
}
}
......@@ -98,4 +100,6 @@ flutter {
source '../..'
}
dependencies {}
dependencies {
// implementation 'com.github.jiangdongguo.AndroidUSBCamera:libausbc:3.3.3'
}
package com.example.laki_icu_app
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
}
buildscript {
ext.kotlin_version = '2.2.20'
repositories {
google()
maven { url uri('https://maven.aliyun.com/repository/google') }
mavenCentral()
maven { url uri('https://maven.aliyun.com/repository/public') }
maven { url uri('https://maven.aliyun.com/repository/gradle-plugin') }
}
dependencies {
......@@ -13,9 +13,9 @@ buildscript {
allprojects {
repositories {
google()
maven { url uri('https://maven.aliyun.com/repository/google') }
mavenCentral()
maven { url uri('https://maven.aliyun.com/repository/public') }
maven { url uri('https://jitpack.io') }
}
}
......
{
"APP_ENV": "prod",
"SERVICE_URL": "https://api.yourdomain.com"
}
......@@ -21,7 +21,7 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13
fluttertoast: fe6790210fdba20801685be946e3a2124b72eef5
fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1
PODFILE CHECKSUM: 4f1c12611da7338d21589c0b2ecd6bd20b109694
......
......@@ -15,7 +15,7 @@
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>smart_hotel_app</string>
<string>laki_icu_app</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
......
import 'package:equatable/equatable.dart';
import 'package:smart_hotel_app/models/bo/user_info_bo.dart';
import 'package:laki_icu_app/models/bo/user_info_bo.dart';
abstract class AuthState extends Equatable {
const AuthState();
......
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:smart_hotel_app/blocs/auth/auth_bloc.dart';
import 'package:smart_hotel_app/blocs/auth/auth_event.dart';
import 'package:smart_hotel_app/blocs/auth/auth_state.dart';
import 'package:smart_hotel_app/routes/app_router.dart';
import 'package:smart_hotel_app/repositories/auth_repository.dart';
import 'package:smart_hotel_app/services/auth_service.dart';
import 'package:smart_hotel_app/utils/http/dio_request.dart';
import 'package:smart_hotel_app/utils/event_bus.dart';
import 'package:smart_hotel_app/utils/storage/storage_service.dart';
import 'package:smart_hotel_app/utils/toast_utils.dart';
import 'package:smart_hotel_app/routes/app_router.gr.dart';
import 'package:laki_icu_app/blocs/auth/auth_bloc.dart';
import 'package:laki_icu_app/blocs/auth/auth_event.dart';
import 'package:laki_icu_app/blocs/auth/auth_state.dart';
import 'package:laki_icu_app/routes/app_router.dart';
import 'package:laki_icu_app/repositories/auth_repository.dart';
import 'package:laki_icu_app/services/auth_service.dart';
import 'package:laki_icu_app/utils/http/dio_request.dart';
import 'package:laki_icu_app/utils/event_bus.dart';
import 'package:laki_icu_app/utils/storage/storage_service.dart';
import 'package:laki_icu_app/utils/toast_utils.dart';
import 'package:laki_icu_app/routes/app_router.gr.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_ume_plus/flutter_ume_plus.dart';
import 'package:flutter_ume_kit_console_plus/flutter_ume_kit_console_plus.dart';
// import 'package:flutter_ume_kit_device_plus/flutter_ume_kit_device_plus.dart';
import 'package:flutter_ume_kit_dio_plus/flutter_ume_kit_dio_plus.dart';
// import 'package:flutter_ume_kit_perf_plus/flutter_ume_kit_perf_plus.dart';
// import 'package:flutter_ume_kit_provider_plus/flutter_ume_kit_provider_plus.dart';
// import 'package:flutter_ume_kit_shared_preferences_plus/flutter_ume_kit_shared_preferences_plus.dart';
// import 'package:flutter_ume_kit_show_code_plus/flutter_ume_kit_show_code_plus.dart';
import 'package:flutter_ume_kit_ui_plus/flutter_ume_kit_ui_plus.dart';
void main(List<String> args) {
WidgetsFlutterBinding.ensureInitialized();
// UME 调试工具(仅 Debug 模式启用)
if (kDebugMode) {
PluginManager.instance
..register(WidgetInfoInspector())
..register(WidgetDetailInspector())
..register(Console());
// ..register(DioInspector(dio: ApiClient.instance().dio));
runApp(UMEWidget(enable: true, child: const MyApp()));
} else {
runApp(const MyApp());
}
// runApp(const MyApp());
}
class MyApp extends StatefulWidget {
......@@ -83,7 +106,7 @@ class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return ScreenUtilInit(
designSize: Size(1900, 1076),
designSize: Size(1024, 1366),
builder: (context, child) {
return MultiBlocProvider(
providers: [
......
......@@ -11,7 +11,7 @@ class MonitoringMockData {
static List<MonitoringMetricBO> getMockMetrics() {
return const [
MonitoringMetricBO(
value: '24',
value: '24.5',
unit: '℃',
label: '舱内温度',
borderColorValue: 0xFF00FF9D,
......@@ -19,22 +19,26 @@ class MonitoringMockData {
),
MonitoringMetricBO(
value: '63',
unit: '%',
unit: 'RH',
label: '舱内湿度',
borderColorValue: 0xFF00B8FF,
backgroundColorValue: 0x1A00B8FF,
),
MonitoringMetricBO(
value: '21',
unit: '%',
label: '氧浓度',
),
MonitoringMetricBO(
value: '531',
unit: 'PPM',
label: 'CO₂浓度',
label: '氧气浓度',
borderColorValue: 0xFF00FF9D,
backgroundColorValue: 0x1A00FF9D,
),
MonitoringMetricBO(
value: '0.5',
unit: '%',
label: '二氧化碳',
borderColorValue: 0xFFFF7D00,
backgroundColorValue: 0x1AFF7D00,
),
MonitoringMetricBO(
value: '特级',
unit: '',
label: '护理等级',
......@@ -51,7 +55,7 @@ class MonitoringMockData {
phone: '联系电话:15845310589',
breed: '品种:长毛三花',
doctor: '医生:程医生',
avatarUrl: 'https://example.com/avatar/cat.png',
avatarUrl: '',
);
}
......@@ -69,16 +73,16 @@ class MonitoringMockData {
static List<MonitoringMenuItemBO> getMockMenuItems() {
return const [
MonitoringMenuItemBO(
title: 'TSAAS 动物血压监测',
title: '动物血压监测',
icon: '❤️',
),
MonitoringMenuItemBO(
title: 'TSAAS 多功能动物体征检测仪',
title: '多功能动物体征检测仪',
icon: '📏',
),
MonitoringMenuItemBO(
title: 'TSAAS+CATHAER 穿戴式多导心电监测系统',
icon: '❤️',
title: '穿戴式多导心电监测系统',
icon: '💓',
),
];
}
......
import 'mock/monitoring_mock_data.dart';
import 'package:smart_hotel_app/models/bo/monitoring_bo.dart';
import 'package:smart_hotel_app/utils/constants.dart';
import 'package:smart_hotel_app/utils/http/dio_request.dart';
import 'package:smart_hotel_app/utils/http/response_model.dart';
import 'package:laki_icu_app/models/bo/monitoring_bo.dart';
import 'package:laki_icu_app/utils/constants.dart';
import 'package:laki_icu_app/utils/http/dio_request.dart';
import 'package:laki_icu_app/utils/http/response_model.dart';
class MonitoringRepository {
MonitoringRepository._();
......
import 'package:auto_route/auto_route.dart';
import 'package:smart_hotel_app/views/home/index/home_index_view.dart';
import 'package:smart_hotel_app/views/login/login_view.dart';
import 'package:smart_hotel_app/views/layout/default_view.dart';
import 'package:laki_icu_app/views/home/index/home_index_view.dart';
import 'package:laki_icu_app/views/login/login_view.dart';
import 'package:laki_icu_app/views/layout/default_view.dart';
import 'app_router.gr.dart';
@AutoRouterConfig(replaceInRouteName: 'View,Route')
......
......@@ -10,9 +10,9 @@
// ignore_for_file: no_leading_underscores_for_library_prefixes
import 'package:auto_route/auto_route.dart' as _i4;
import 'package:flutter/material.dart' as _i5;
import 'package:smart_hotel_app/views/home/index/home_index_view.dart' as _i2;
import 'package:smart_hotel_app/views/layout/default_view.dart' as _i1;
import 'package:smart_hotel_app/views/login/login_view.dart' as _i3;
import 'package:laki_icu_app/views/home/index/home_index_view.dart' as _i2;
import 'package:laki_icu_app/views/layout/default_view.dart' as _i1;
import 'package:laki_icu_app/views/login/login_view.dart' as _i3;
abstract class $AppRouter extends _i4.RootStackRouter {
$AppRouter({super.navigatorKey});
......
import 'package:smart_hotel_app/models/bo/monitoring_bo.dart';
import 'package:smart_hotel_app/repositories/monitoring_repository.dart';
import 'package:laki_icu_app/models/bo/monitoring_bo.dart';
import 'package:laki_icu_app/repositories/monitoring_repository.dart';
class MonitoringService {
final MonitoringRepository _repository;
......
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:smart_hotel_app/models/bo/user_info_bo.dart';
import 'package:laki_icu_app/models/bo/user_info_bo.dart';
class StorageService {
static const String _keyToken = 'auth_token';
......
# TCP 模块使用手册
# TCP 模块使用手册
......@@ -137,7 +137,7 @@ cubit.connect(); // 第3次:立即返回 false,忽略
```dart
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:smart_hotel_app/utils/tcp/service/tcp_client_cubit.dart';
import 'package:laki_icu_app/utils/tcp/service/tcp_client_cubit.dart';
class MyPage extends StatelessWidget {
@override
......@@ -295,9 +295,9 @@ import 'dart:async';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:smart_hotel_app/utils/tcp/service/tcp_client_cubit.dart';
import 'package:smart_hotel_app/utils/tcp/service/tcp_client_state.dart';
import 'package:smart_hotel_app/utils/tcp/service/tcp_connection_status.dart';
import 'package:laki_icu_app/utils/tcp/service/tcp_client_cubit.dart';
import 'package:laki_icu_app/utils/tcp/service/tcp_client_state.dart';
import 'package:laki_icu_app/utils/tcp/service/tcp_connection_status.dart';
class TcpClientDemoPage extends StatelessWidget {
@override
......@@ -600,8 +600,8 @@ import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:smart_hotel_app/utils/tcp/service/tcp_server_cubit.dart';
import 'package:smart_hotel_app/utils/tcp/service/tcp_server_state.dart';
import 'package:laki_icu_app/utils/tcp/service/tcp_server_cubit.dart';
import 'package:laki_icu_app/utils/tcp/service/tcp_server_state.dart';
class TcpServerDemoPage extends StatelessWidget {
@override
......
import 'package:bloc/bloc.dart';
import 'package:smart_hotel_app/services/monitoring_service.dart';
import 'package:laki_icu_app/services/monitoring_service.dart';
import 'home_index_state.dart';
......
import 'package:equatable/equatable.dart';
import 'package:smart_hotel_app/models/bo/monitoring_bo.dart';
import 'package:laki_icu_app/models/bo/monitoring_bo.dart';
enum HomeIndexStatus {
initial,
......
......@@ -2,7 +2,7 @@ import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:smart_hotel_app/models/bo/monitoring_bo.dart';
import 'package:laki_icu_app/models/bo/monitoring_bo.dart';
import 'cubit/home_index_cubit.dart';
import 'cubit/home_index_state.dart';
......@@ -102,27 +102,26 @@ class _HomeIndexContentState extends State<HomeIndexContent> {
),
child: Row(
children: [
SizedBox(width: 24.w),
const CircleAvatar(
backgroundColor: Colors.white,
radius: 24,
child: Icon(Icons.local_hospital, color: Color(0xFF1E10B6), size: 28),
),
SizedBox(width: 16.w),
Text(
'加邦TSAAS动物医疗监护舱',
style: TextStyle(
fontSize: 32.sp,
fontSize: 28.sp,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
const Spacer(),
_buildAppBarIcon(Icons.bluetooth, 'TSAAS'),
SizedBox(width: 24.w),
SizedBox(width: 16.w),
_buildAppBarIcon(Icons.description, null),
SizedBox(width: 24.w),
_buildAppBarIcon(Icons.settings, null),
SizedBox(width: 16.w),
_buildAppBarIcon(Icons.settings, null),
],
),
);
......@@ -130,20 +129,20 @@ class _HomeIndexContentState extends State<HomeIndexContent> {
Widget _buildAppBarIcon(IconData icon, String? label) {
return Container(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 8.h),
padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 8.h),
decoration: BoxDecoration(
border: Border.all(color: Colors.white24, width: 1),
borderRadius: BorderRadius.circular(20.r),
),
child: Row(
children: [
Icon(icon, color: Colors.white, size: 24.w),
Icon(icon, color: Colors.white, size: 20.w),
if (label != null) ...[
SizedBox(width: 8.w),
SizedBox(width: 6.w),
Text(
label,
style: TextStyle(
fontSize: 22.sp,
fontSize: 18.sp,
color: Colors.white,
),
),
......@@ -156,59 +155,82 @@ class _HomeIndexContentState extends State<HomeIndexContent> {
Widget _buildMainContent(HomeIndexState state) {
return SingleChildScrollView(
padding: EdgeInsets.all(24.w),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// 左侧区域 (3/4宽度)
Expanded(
flex: 3,
child: Column(
children: [
// 指标栏(100%宽度)
_buildMetricsSection(state.metrics),
SizedBox(height: 24.h),
Row(
// 下方:监控画面 + 右侧信息卡片
SizedBox(
height: 500.h,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// 监控画面模块(2/3宽度、100%高度)
Expanded(
flex: 3,
child: Column(
children: [
MonitoringScreen(
flex: 2,
child: MonitoringScreen(
onRefresh: () => _homeIndexCubit.refreshData(),
onSnapshot: () {},
onRecord: () {},
),
SizedBox(height: 24.h),
Row(
),
SizedBox(width: 24.w),
// 右侧(1/3宽度):患者信息卡片 + 告警信息卡片
Expanded(
flex: 1,
child: Column(
children: [
// 患者信息卡片(50%高度)
Expanded(
flex: 2,
flex: 1,
child: state.patientInfo == null
? _buildEmptyCard('暂无患者信息')
: PatientInfoCard(
patientInfo: state.patientInfo!,
),
),
SizedBox(width: 24.w),
SizedBox(height: 24.h),
// 告警信息卡片(50%高度)
Expanded(
flex: 1,
child: AlertInfoCard(alerts: state.alerts),
),
],
),
),
],
),
),
],
),
),
SizedBox(width: 24.w),
// 右侧区域 (1/4宽度)
Expanded(
flex: 1,
child: SizedBox(
height: 500.h,
child: Column(
children: state.menuItems.map((item) {
return Padding(
return Expanded(
child: Padding(
padding: EdgeInsets.only(bottom: 24.h),
child: SidebarMenuItem(
item: item,
onTap: () {},
),
),
);
}).toList(),
),
),
],
),
],
),
......@@ -272,14 +294,14 @@ class _HomeIndexContentState extends State<HomeIndexContent> {
Text(
'总运行时长: 35 h',
style: TextStyle(
fontSize: 24.sp,
fontSize: 20.sp,
color: Colors.white70,
),
),
Text(
'环境温度: 25.6 ℃',
style: TextStyle(
fontSize: 24.sp,
fontSize: 20.sp,
color: Colors.white70,
),
),
......
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:smart_hotel_app/models/bo/monitoring_bo.dart';
import 'package:laki_icu_app/models/bo/monitoring_bo.dart';
class AlertInfoCard extends StatelessWidget {
final List<AlertInfoBO> alerts;
......@@ -13,7 +13,7 @@ class AlertInfoCard extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(24.w),
padding: EdgeInsets.all(20.w),
decoration: BoxDecoration(
gradient: const LinearGradient(
colors: [Color(0xFF1E10B6), Color(0xFF3A87FF)],
......@@ -31,7 +31,7 @@ class AlertInfoCard extends StatelessWidget {
Text(
'告警信息',
style: TextStyle(
fontSize: 28.sp,
fontSize: 24.sp,
fontWeight: FontWeight.bold,
color: Colors.white,
),
......@@ -39,23 +39,28 @@ class AlertInfoCard extends StatelessWidget {
if (alerts.isNotEmpty) _buildStatus(alerts.first.status),
],
),
SizedBox(height: 16.h),
SizedBox(height: 12.h),
if (alerts.isNotEmpty)
...alerts.map((alert) => _buildAlertItem(alert))
else
Text(
'暂无告警信息',
style: TextStyle(color: Colors.white70, fontSize: 22.sp),
style: TextStyle(color: Colors.white70, fontSize: 20.sp),
),
SizedBox(height: 8.h),
SizedBox(height: 4.h),
Align(
alignment: Alignment.centerRight,
child: TextButton(
onPressed: () {},
style: TextButton.styleFrom(
padding: EdgeInsets.zero,
minimumSize: Size(40.w, 30.h),
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
),
child: Text(
'详情 >',
style: TextStyle(
fontSize: 22.sp,
fontSize: 18.sp,
color: Colors.white70,
),
),
......@@ -68,7 +73,7 @@ class AlertInfoCard extends StatelessWidget {
Widget _buildStatus(String status) {
return Container(
padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 4.h),
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 4.h),
decoration: BoxDecoration(
color: const Color(0xFFFFB800),
borderRadius: BorderRadius.circular(20.r),
......@@ -76,7 +81,7 @@ class AlertInfoCard extends StatelessWidget {
child: Text(
status,
style: TextStyle(
fontSize: 20.sp,
fontSize: 18.sp,
color: Colors.white,
fontWeight: FontWeight.w500,
),
......@@ -95,14 +100,14 @@ class AlertInfoCard extends StatelessWidget {
Icon(
Icons.warning_amber_rounded,
color: const Color(0xFFFF7D00),
size: 24.w,
size: 20.w,
),
SizedBox(width: 8.w),
SizedBox(width: 6.w),
Expanded(
child: Text(
alert.title,
style: TextStyle(
fontSize: 26.sp,
fontSize: 22.sp,
fontWeight: FontWeight.w500,
color: const Color(0xFFFF7D00),
),
......@@ -110,24 +115,24 @@ class AlertInfoCard extends StatelessWidget {
),
],
),
SizedBox(height: 8.h),
SizedBox(height: 6.h),
Padding(
padding: EdgeInsets.only(left: 32.w),
padding: EdgeInsets.only(left: 26.w),
child: Text(
alert.description,
style: TextStyle(
fontSize: 22.sp,
fontSize: 18.sp,
color: Colors.white70,
),
),
),
SizedBox(height: 8.h),
SizedBox(height: 4.h),
Padding(
padding: EdgeInsets.only(left: 32.w),
padding: EdgeInsets.only(left: 26.w),
child: Text(
alert.time,
style: TextStyle(
fontSize: 20.sp,
fontSize: 16.sp,
color: Colors.white54,
),
),
......
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:smart_hotel_app/models/bo/monitoring_bo.dart';
import 'package:laki_icu_app/models/bo/monitoring_bo.dart';
class MetricCard extends StatelessWidget {
final MonitoringMetricBO metric;
......@@ -13,7 +13,7 @@ class MetricCard extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.symmetric(vertical: 20.h, horizontal: 16.w),
padding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 8.w),
decoration: BoxDecoration(
color: Color(metric.backgroundColorValue),
borderRadius: BorderRadius.circular(20.r),
......@@ -28,26 +28,27 @@ class MetricCard extends StatelessWidget {
Text(
metric.value,
style: TextStyle(
fontSize: 48.sp,
fontSize: 36.sp,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
SizedBox(height: 8.h),
SizedBox(height: 4.h),
Text(
metric.unit,
style: TextStyle(
fontSize: 24.sp,
fontSize: 20.sp,
color: Colors.white70,
),
),
SizedBox(height: 16.h),
SizedBox(height: 8.h),
Text(
metric.label,
style: TextStyle(
fontSize: 22.sp,
fontSize: 18.sp,
color: Colors.white70,
),
textAlign: TextAlign.center,
),
],
),
......
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:smart_hotel_app/models/bo/monitoring_bo.dart';
import 'package:laki_icu_app/models/bo/monitoring_bo.dart';
class PatientInfoCard extends StatelessWidget {
final PatientInfoBO patientInfo;
......@@ -13,7 +13,7 @@ class PatientInfoCard extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(24.w),
padding: EdgeInsets.all(20.w),
decoration: BoxDecoration(
gradient: const LinearGradient(
colors: [Color(0xFF1E10B6), Color(0xFF3A87FF)],
......@@ -27,28 +27,28 @@ class PatientInfoCard extends StatelessWidget {
ClipRRect(
borderRadius: BorderRadius.circular(20.r),
child: Container(
width: 100.w,
height: 100.w,
width: 80.w,
height: 80.w,
decoration: BoxDecoration(
border: Border.all(color: Colors.white24, width: 1),
borderRadius: BorderRadius.circular(20.r),
),
child: patientInfo.avatarUrl.isEmpty
? Icon(Icons.pets, size: 56.w, color: Colors.white54)
? Icon(Icons.pets, size: 48.w, color: Colors.white54)
: Image.network(
patientInfo.avatarUrl,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
return Icon(
Icons.pets,
size: 56.w,
size: 48.w,
color: Colors.white54,
);
},
),
),
),
SizedBox(width: 24.w),
SizedBox(width: 16.w),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
......@@ -57,18 +57,18 @@ class PatientInfoCard extends StatelessWidget {
Text(
patientInfo.name,
style: TextStyle(
fontSize: 32.sp,
fontSize: 28.sp,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
SizedBox(height: 12.h),
_buildInfoText(patientInfo.owner),
SizedBox(height: 8.h),
_buildInfoText(patientInfo.owner),
SizedBox(height: 4.h),
_buildInfoText(patientInfo.phone),
SizedBox(height: 8.h),
SizedBox(height: 4.h),
_buildInfoText(patientInfo.breed),
SizedBox(height: 8.h),
SizedBox(height: 4.h),
_buildInfoText(patientInfo.doctor),
],
),
......@@ -82,7 +82,7 @@ class PatientInfoCard extends StatelessWidget {
return Text(
text,
style: TextStyle(
fontSize: 24.sp,
fontSize: 20.sp,
color: Colors.white70,
),
);
......
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:smart_hotel_app/models/bo/monitoring_bo.dart';
import 'package:laki_icu_app/models/bo/monitoring_bo.dart';
class SidebarMenuItem extends StatelessWidget {
final MonitoringMenuItemBO item;
......@@ -17,7 +17,7 @@ class SidebarMenuItem extends StatelessWidget {
return GestureDetector(
onTap: onTap,
child: Container(
padding: EdgeInsets.all(24.w),
padding: EdgeInsets.symmetric(horizontal: 20.w, vertical: 16.h),
decoration: BoxDecoration(
gradient: const LinearGradient(
begin: Alignment.topCenter,
......@@ -31,14 +31,14 @@ class SidebarMenuItem extends StatelessWidget {
children: [
Text(
item.icon,
style: TextStyle(fontSize: 40.w),
style: TextStyle(fontSize: 32.w),
),
SizedBox(width: 16.w),
SizedBox(width: 12.w),
Expanded(
child: Text(
item.title,
style: TextStyle(
fontSize: 24.sp,
fontSize: 20.sp,
color: Colors.white,
fontWeight: FontWeight.w500,
),
......
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:smart_hotel_app/blocs/auth/auth_bloc.dart';
import 'package:smart_hotel_app/blocs/auth/auth_event.dart';
import 'package:smart_hotel_app/blocs/auth/auth_state.dart';
import 'package:smart_hotel_app/utils/storage/storage_service.dart';
import 'package:smart_hotel_app/views/login/cubit/login_state.dart';
import 'package:laki_icu_app/blocs/auth/auth_bloc.dart';
import 'package:laki_icu_app/blocs/auth/auth_event.dart';
import 'package:laki_icu_app/blocs/auth/auth_state.dart';
import 'package:laki_icu_app/utils/storage/storage_service.dart';
import 'package:laki_icu_app/views/login/cubit/login_state.dart';
class LoginCubit extends Cubit<LoginState> {
final AuthBloc authBloc;
......
......@@ -3,15 +3,15 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:smart_hotel_app/blocs/auth/auth_bloc.dart';
import 'package:smart_hotel_app/blocs/auth/auth_state.dart';
import 'package:smart_hotel_app/utils/storage/storage_service.dart';
import 'package:smart_hotel_app/views/login/cubit/login_cubit.dart';
import 'package:smart_hotel_app/views/login/cubit/login_state.dart';
import 'package:smart_hotel_app/views/login/widget/btn_login.dart';
import 'package:smart_hotel_app/views/login/widget/password_field.dart';
import 'package:smart_hotel_app/views/login/widget/remember_password_row.dart';
import 'package:smart_hotel_app/views/login/widget/username_field.dart';
import 'package:laki_icu_app/blocs/auth/auth_bloc.dart';
import 'package:laki_icu_app/blocs/auth/auth_state.dart';
import 'package:laki_icu_app/utils/storage/storage_service.dart';
import 'package:laki_icu_app/views/login/cubit/login_cubit.dart';
import 'package:laki_icu_app/views/login/cubit/login_state.dart';
import 'package:laki_icu_app/views/login/widget/btn_login.dart';
import 'package:laki_icu_app/views/login/widget/password_field.dart';
import 'package:laki_icu_app/views/login/widget/remember_password_row.dart';
import 'package:laki_icu_app/views/login/widget/username_field.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@RoutePage()
......
......@@ -4,10 +4,10 @@ project(runner LANGUAGES CXX)
# The name of the executable created for the application. Change this to change
# the on-disk name of your application.
set(BINARY_NAME "smart_hotel_app")
set(BINARY_NAME "laki_icu_app")
# The unique GTK application identifier for this application. See:
# https://wiki.gnome.org/HowDoI/ChooseApplicationID
set(APPLICATION_ID "com.example.smart_hotel_app")
set(APPLICATION_ID "com.example.laki_icu_app")
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
# versions of CMake.
......
......@@ -7,9 +7,13 @@
#include "generated_plugin_registrant.h"
#include <flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h>
#include <url_launcher_linux/url_launcher_plugin.h>
void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin");
flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar);
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
}
......@@ -4,6 +4,7 @@
list(APPEND FLUTTER_PLUGIN_LIST
flutter_secure_storage_linux
url_launcher_linux
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST
......
......@@ -40,11 +40,11 @@ static void my_application_activate(GApplication* application) {
if (use_header_bar) {
GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
gtk_widget_show(GTK_WIDGET(header_bar));
gtk_header_bar_set_title(header_bar, "smart_hotel_app");
gtk_header_bar_set_title(header_bar, "laki_icu_app");
gtk_header_bar_set_show_close_button(header_bar, TRUE);
gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
} else {
gtk_window_set_title(window, "smart_hotel_app");
gtk_window_set_title(window, "laki_icu_app");
}
gtk_window_set_default_size(window, 1280, 720);
......
......@@ -45,11 +45,11 @@ static void my_application_activate(GApplication* application) {
if (use_header_bar) {
GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
gtk_widget_show(GTK_WIDGET(header_bar));
gtk_header_bar_set_title(header_bar, "smart_hotel_app");
gtk_header_bar_set_title(header_bar, "laki_icu_app");
gtk_header_bar_set_show_close_button(header_bar, TRUE);
gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
} else {
gtk_window_set_title(window, "smart_hotel_app");
gtk_window_set_title(window, "laki_icu_app");
}
gtk_window_set_default_size(window, 1280, 720);
......
......@@ -5,8 +5,16 @@
import FlutterMacOS
import Foundation
import device_info_plus
import flutter_secure_storage_macos
import share_plus
import shared_preferences_foundation
import url_launcher_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin"))
SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
}
......@@ -2,27 +2,20 @@ PODS:
- flutter_secure_storage_macos (6.1.3):
- FlutterMacOS
- FlutterMacOS (1.0.0)
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
DEPENDENCIES:
- flutter_secure_storage_macos (from `Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos`)
- FlutterMacOS (from `Flutter/ephemeral`)
- path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
EXTERNAL SOURCES:
flutter_secure_storage_macos:
:path: Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos
FlutterMacOS:
:path: Flutter/ephemeral
path_provider_foundation:
:path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin
SPEC CHECKSUMS:
flutter_secure_storage_macos: 7f45e30f838cf2659862a4e4e3ee1c347c2b3b54
FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
PODFILE CHECKSUM: 9ebaf0ce3d369aaa26a9ea0e159195ed94724cf3
......
......@@ -67,7 +67,7 @@
331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
33CC10ED2044A3C60003C045 /* smart_hotel_app.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = smart_hotel_app.app; sourceTree = BUILT_PRODUCTS_DIR; };
33CC10ED2044A3C60003C045 /* laki_icu_app.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = laki_icu_app.app; sourceTree = BUILT_PRODUCTS_DIR; };
33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
......@@ -158,7 +158,7 @@
33CC10EE2044A3C60003C045 /* Products */ = {
isa = PBXGroup;
children = (
33CC10ED2044A3C60003C045 /* smart_hotel_app.app */,
33CC10ED2044A3C60003C045 /* laki_icu_app.app */,
331C80D5294CF71000263BE5 /* RunnerTests.xctest */,
);
name = Products;
......@@ -249,7 +249,7 @@
);
name = Runner;
productName = Runner;
productReference = 33CC10ED2044A3C60003C045 /* smart_hotel_app.app */;
productReference = 33CC10ED2044A3C60003C045 /* laki_icu_app.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
......@@ -481,7 +481,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.example.smartHotelApp.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/smart_hotel_app.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/smart_hotel_app";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/laki_icu_app.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/laki_icu_app";
};
name = Debug;
};
......@@ -496,7 +496,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.example.smartHotelApp.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/smart_hotel_app.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/smart_hotel_app";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/laki_icu_app.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/laki_icu_app";
};
name = Release;
};
......@@ -511,7 +511,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.example.smartHotelApp.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/smart_hotel_app.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/smart_hotel_app";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/laki_icu_app.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/laki_icu_app";
};
name = Profile;
};
......
......@@ -15,7 +15,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "smart_hotel_app.app"
BuildableName = "laki_icu_app.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
......@@ -31,7 +31,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "smart_hotel_app.app"
BuildableName = "laki_icu_app.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
......@@ -66,7 +66,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "smart_hotel_app.app"
BuildableName = "laki_icu_app.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
......@@ -83,7 +83,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "smart_hotel_app.app"
BuildableName = "laki_icu_app.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
......
......@@ -5,7 +5,7 @@
// 'flutter create' template.
// The application's name. By default this is also the title of the Flutter window.
PRODUCT_NAME = smart_hotel_app
PRODUCT_NAME = laki_icu_app
// The application's bundle identifier
PRODUCT_BUNDLE_IDENTIFIER = com.example.smartHotelApp
......
name: smart_hotel_app
name: laki_icu_app
description: "A new Flutter project."
# The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages.
......@@ -48,7 +48,7 @@ dependencies:
fl_chart: ^0.71.0
infinite_scroll_pagination: ^5.1.1
logger: ^2.7.0
fluttertoast: ^9.1.0
fluttertoast: ^9.0.0
# fl_chart: ^0.71.0
# fl_chart: ^1.1.0
......@@ -65,10 +65,11 @@ dev_dependencies:
auto_route_generator: ^7.3.2
build_runner: ^2.4.9
flutter_launcher_icons: ^0.13.1
flutter_ume_kit_ui_plus: ^5.3.0
flutter_ume_kit_console_plus: ^5.0.0
flutter_ume_kit_dio_plus: ^5.3.0
# 依赖覆盖 - 解决 win32-5.2.0 与 Dart 3.10 兼容性问题
dependency_overrides:
win32: 5.5.1
# 依赖覆盖已移除 - 让依赖解析器自动处理版本兼容性
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
......
......@@ -8,7 +8,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:smart_hotel_app/main.dart';
import 'package:laki_icu_app/main.dart';
void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
......
......@@ -23,13 +23,13 @@
<!-- iOS meta tags & icons -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="smart_hotel_app">
<meta name="apple-mobile-web-app-title" content="laki_icu_app">
<link rel="apple-touch-icon" href="icons/Icon-192.png">
<!-- Favicon -->
<link rel="icon" type="image/png" href="favicon.png"/>
<title>smart_hotel_app</title>
<title>laki_icu_app</title>
<link rel="manifest" href="manifest.json">
<script>
......
{
"name": "smart_hotel_app",
"short_name": "smart_hotel_app",
"name": "laki_icu_app",
"short_name": "laki_icu_app",
"start_url": ".",
"display": "standalone",
"background_color": "#0175C2",
......
# Project-level configuration.
cmake_minimum_required(VERSION 3.14)
project(smart_hotel_app LANGUAGES CXX)
project(laki_icu_app LANGUAGES CXX)
# The name of the executable created for the application. Change this to change
# the on-disk name of your application.
set(BINARY_NAME "smart_hotel_app")
set(BINARY_NAME "laki_icu_app")
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
# versions of CMake.
......
......@@ -7,8 +7,14 @@
#include "generated_plugin_registrant.h"
#include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h>
#include <share_plus/share_plus_windows_plugin_c_api.h>
#include <url_launcher_windows/url_launcher_windows.h>
void RegisterPlugins(flutter::PluginRegistry* registry) {
FlutterSecureStorageWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin"));
SharePlusWindowsPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi"));
UrlLauncherWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
}
......@@ -4,6 +4,8 @@
list(APPEND FLUTTER_PLUGIN_LIST
flutter_secure_storage_windows
share_plus
url_launcher_windows
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST
......
......@@ -90,12 +90,12 @@ BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "com.example" "\0"
VALUE "FileDescription", "smart_hotel_app" "\0"
VALUE "FileDescription", "laki_icu_app" "\0"
VALUE "FileVersion", VERSION_AS_STRING "\0"
VALUE "InternalName", "smart_hotel_app" "\0"
VALUE "InternalName", "laki_icu_app" "\0"
VALUE "LegalCopyright", "Copyright (C) 2026 com.example. All rights reserved." "\0"
VALUE "OriginalFilename", "smart_hotel_app.exe" "\0"
VALUE "ProductName", "smart_hotel_app" "\0"
VALUE "OriginalFilename", "laki_icu_app.exe" "\0"
VALUE "ProductName", "laki_icu_app" "\0"
VALUE "ProductVersion", VERSION_AS_STRING "\0"
END
END
......
......@@ -27,7 +27,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
FlutterWindow window(project);
Win32Window::Point origin(10, 10);
Win32Window::Size size(1280, 720);
if (!window.Create(L"smart_hotel_app", origin, size)) {
if (!window.Create(L"laki_icu_app", origin, size)) {
return EXIT_FAILURE;
}
window.SetQuitOnClose(true);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment