Commit 5a154d67 authored by huqu's avatar huqu

修改样式 & 告警列表

parent fb8b7110
import java.util.Properties
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
def localProperties = new Properties()
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
localPropertiesFile.withInputStream { localProperties.load(it) }
}
def mStoreFile = rootProject.file("smart_hotel.jks")
def mStorePassword = localProperties.getProperty("storePassword")
def mKeyAlias = localProperties.getProperty("keyAlias")
def mKeyPassword = localProperties.getProperty("keyPassword")
def isRelease = mStoreFile.exists()
&& mStorePassword != null
&& mKeyAlias != null
&& mKeyPassword != null
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
......@@ -40,6 +49,17 @@ android {
main.java.srcDirs += 'src/main/kotlin'
}
signingConfigs {
if (isRelease) {
release {
storePassword = mStorePassword
keyAlias = mKeyAlias
keyPassword = mKeyPassword
storeFile = mStoreFile
}
}
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.smart_hotel_app"
......@@ -76,9 +96,20 @@ android {
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
minifyEnabled true
debuggable false
shrinkResources true
proguardFiles(
getDefaultProguardFile("proguard-android.txt"),
"proguard-rules.pro"
)
signingConfig = isRelease
? signingConfigs.getByName("release")
: signingConfigs.getByName("debug")
}
debug {
signingConfig = signingConfigs.getByName("debug")
minifyEnabled false
}
}
......@@ -98,4 +129,4 @@ flutter {
source '../..'
}
dependencies {}
dependencies {}
\ No newline at end of file
......@@ -650,7 +650,7 @@ code + .copy-button {
<script type="text/javascript">
function configurationCacheProblems() { return (
// begin-report-data
{"diagnostics":[{"locations":[{"path":"build file 'D:\\work\\code\\smart_hotel_app\\android\\build.gradle'","line":5}],"problem":[{"text":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.13/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"properties-should-be-assigned-using-the-propname-value-syntax-setting-a-property-via-the-gradle-generated-propname-value-or-propname-value-syntax-in-groovy-dsl","displayName":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('url = <value>') instead."}]]},{"locations":[{"path":"build file 'D:\\work\\code\\smart_hotel_app\\android\\build.gradle'","line":17}],"problem":[{"text":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.13/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"properties-should-be-assigned-using-the-propname-value-syntax-setting-a-property-via-the-gradle-generated-propname-value-or-propname-value-syntax-in-groovy-dsl","displayName":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('url = <value>') instead."}]]},{"locations":[{"path":"build file 'D:\\work\\code\\smart_hotel_app\\android\\app\\build.gradle'","line":26}],"problem":[{"text":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.13/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"properties-should-be-assigned-using-the-propname-value-syntax-setting-a-property-via-the-gradle-generated-propname-value-or-propname-value-syntax-in-groovy-dsl","displayName":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('namespace = <value>') instead."}]]},{"locations":[{"path":"build file 'D:\\work\\code\\smart_hotel_app\\android\\app\\build.gradle'","line":28}],"problem":[{"text":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.13/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"properties-should-be-assigned-using-the-propname-value-syntax-setting-a-property-via-the-gradle-generated-propname-value-or-propname-value-syntax-in-groovy-dsl","displayName":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('ndkVersion = <value>') instead."}]]}],"problemsReport":{"totalProblemCount":4,"buildName":"android","requestedTasks":"assembleDevRelease","documentationLink":"https://docs.gradle.org/8.13/userguide/reporting_problems.html","documentationLinkCaption":"Problem report","summaries":[]}}
{"diagnostics":[{"locations":[{"path":"build file 'D:\\flutter\\hotel\\smart_hotel_app\\android\\build.gradle'","line":5}],"problem":[{"text":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.13/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"properties-should-be-assigned-using-the-propname-value-syntax-setting-a-property-via-the-gradle-generated-propname-value-or-propname-value-syntax-in-groovy-dsl","displayName":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('url = <value>') instead."}]]},{"locations":[{"path":"build file 'D:\\flutter\\hotel\\smart_hotel_app\\android\\build.gradle'","line":17}],"problem":[{"text":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.13/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"properties-should-be-assigned-using-the-propname-value-syntax-setting-a-property-via-the-gradle-generated-propname-value-or-propname-value-syntax-in-groovy-dsl","displayName":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('url = <value>') instead."}]]},{"locations":[{"path":"build file 'D:\\flutter\\hotel\\smart_hotel_app\\android\\app\\build.gradle'","line":35}],"problem":[{"text":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.13/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"properties-should-be-assigned-using-the-propname-value-syntax-setting-a-property-via-the-gradle-generated-propname-value-or-propname-value-syntax-in-groovy-dsl","displayName":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('namespace = <value>') instead."}]]},{"locations":[{"path":"build file 'D:\\flutter\\hotel\\smart_hotel_app\\android\\app\\build.gradle'","line":37}],"problem":[{"text":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.13/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"properties-should-be-assigned-using-the-propname-value-syntax-setting-a-property-via-the-gradle-generated-propname-value-or-propname-value-syntax-in-groovy-dsl","displayName":"Properties should be assigned using the 'propName = value' syntax. Setting a property via the Gradle-generated 'propName value' or 'propName(value)' syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('ndkVersion = <value>') instead."}]]}],"problemsReport":{"totalProblemCount":4,"buildName":"android","requestedTasks":"assembleProdRelease","documentationLink":"https://docs.gradle.org/8.13/userguide/reporting_problems.html","documentationLinkCaption":"Problem report","summaries":[]}}
// end-report-data
);}
</script>
......
......@@ -83,7 +83,7 @@ class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return ScreenUtilInit(
designSize: Size(750, 1334),
designSize: const Size(750, 1334),//figma ui size: 375 * 812,倍率:2:1.6
builder: (context, child) {
return MultiBlocProvider(
providers: [
......
......@@ -59,17 +59,19 @@ class AlertListItemBO extends Equatable {
final int alertId;
final String alertTitle;
final String alertIcon;
final String deviceLocationText;
final String deviceName;
final String deviceLocation;
final String alertTime;
final String handleTime;
final String alertLevel;
final String alertStatus;
final String alertLevel;//1=中警 3=高警
final String alertStatus;//0=待处理 1=处理中 2=已确认 3=已关闭 4=误报关闭
const AlertListItemBO({
required this.alertId,
required this.alertTitle,
required this.alertIcon,
required this.deviceLocationText,
required this.deviceName,
required this.deviceLocation,
required this.alertTime,
required this.handleTime,
required this.alertLevel,
......@@ -81,7 +83,8 @@ class AlertListItemBO extends Equatable {
alertId: json['alertId'] as int? ?? 0,
alertTitle: json['alertTitle'] as String? ?? '',
alertIcon: json['alertIcon'] as String? ?? '',
deviceLocationText: json['deviceLocationText'] as String? ?? '',
deviceName: json['deviceName'] as String? ?? '',
deviceLocation: json['deviceLocation'] as String? ?? '',
alertTime: json['alertTime'] as String? ?? '',
handleTime: json['handleTime'] as String? ?? '',
alertLevel: json['alertLevel'] as String? ?? '',
......@@ -94,7 +97,8 @@ class AlertListItemBO extends Equatable {
alertId,
alertTitle,
alertIcon,
deviceLocationText,
deviceName,
deviceLocation,
alertTime,
handleTime,
alertLevel,
......
......@@ -12,6 +12,8 @@ import 'package:auto_route/auto_route.dart' as _i21;
import 'package:flutter/material.dart' as _i22;
import 'package:smart_hotel_app/views/home/abnormal/abnormal_detail_view.dart'
as _i1;
import 'package:smart_hotel_app/views/home/abnormal_list/cubit/abnormal_list_state.dart'
as _i23;
import 'package:smart_hotel_app/views/home/abnormal_list/index_view.dart'
as _i2;
import 'package:smart_hotel_app/views/home/device/device_detail_view.dart'
......@@ -56,6 +58,7 @@ abstract class $AppRouter extends _i21.RootStackRouter {
child: _i1.AbnormalDetailView(
key: args.key,
alertId: args.alertId,
alarmStatus: args.alarmStatus,
),
);
},
......@@ -220,12 +223,14 @@ class AbnormalDetailRoute extends _i21.PageRouteInfo<AbnormalDetailRouteArgs> {
AbnormalDetailRoute({
_i22.Key? key,
required int alertId,
required _i23.AlarmStatus alarmStatus,
List<_i21.PageRouteInfo>? children,
}) : super(
AbnormalDetailRoute.name,
args: AbnormalDetailRouteArgs(
key: key,
alertId: alertId,
alarmStatus: alarmStatus,
),
initialChildren: children,
);
......@@ -240,15 +245,18 @@ class AbnormalDetailRouteArgs {
const AbnormalDetailRouteArgs({
this.key,
required this.alertId,
required this.alarmStatus,
});
final _i22.Key? key;
final int alertId;
final _i23.AlarmStatus alarmStatus;
@override
String toString() {
return 'AbnormalDetailRouteArgs{key: $key, alertId: $alertId}';
return 'AbnormalDetailRouteArgs{key: $key, alertId: $alertId, alarmStatus: $alarmStatus}';
}
}
......
......@@ -10,11 +10,18 @@ import 'package:smart_hotel_app/views/home/abnormal/widget/temperature_block.dar
import 'package:smart_hotel_app/views/home/abnormal/widget/temperature_char_block.dart';
import 'package:smart_hotel_app/utils/toast_utils.dart';
import '../abnormal_list/cubit/abnormal_list_state.dart';
@RoutePage()
class AbnormalDetailView extends StatelessWidget {
final int alertId;
final AlarmStatus alarmStatus;
const AbnormalDetailView({super.key, required this.alertId});
const AbnormalDetailView({
super.key,
required this.alertId,
required this.alarmStatus,
});
@override
Widget build(BuildContext context) {
......@@ -33,11 +40,11 @@ class AbnormalDetailView extends StatelessWidget {
},
),
title: Text(
'告警详情',
'查看告警详情',
style: TextStyle(
color: const Color.fromRGBO(10, 13, 20, 1),
fontSize: 32.sp,
fontWeight: FontWeight.w200,
fontWeight: FontWeight.w500,
),
),
centerTitle: true,
......@@ -91,43 +98,45 @@ class AbnormalDetailView extends StatelessWidget {
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
BlocBuilder<AbnormalCubit, AbnormalState>(
builder: (context, state) {
final isDisabled = state.isHandling || state.isHandled;
return Container(
width: double.infinity,
height: 88.h,
decoration: BoxDecoration(
color: isDisabled
? const Color.fromRGBO(73, 149, 234, 0.4)
: const Color.fromRGBO(73, 149, 234, 1),
borderRadius: BorderRadius.circular(16.r),
),
child: TextButton(
onPressed: isDisabled
? null
: () => _handleConfirm(context, cubit),
child: state.isHandling
? SizedBox(
width: 32.sp,
height: 32.sp,
child: CircularProgressIndicator(
strokeWidth: 3,
color: const Color.fromRGBO(237, 245, 255, 1),
),
)
: Text(
state.isHandled ? '已处理' : '确认处理',
style: TextStyle(
fontSize: 28.sp,
color: const Color.fromRGBO(237, 245, 255, 1),
),
),
),
);
},
),
SizedBox(height: 20.h),
if (alarmStatus != AlarmStatus.processed) ...[
BlocBuilder<AbnormalCubit, AbnormalState>(
builder: (context, state) {
final isDisabled = state.isHandling || state.isHandled;
return Container(
width: double.infinity,
height: 88.h,
decoration: BoxDecoration(
color: isDisabled
? const Color.fromRGBO(73, 149, 234, 0.4)
: const Color.fromRGBO(73, 149, 234, 1),
borderRadius: BorderRadius.circular(16.r),
),
child: TextButton(
onPressed: isDisabled
? null
: () => _handleConfirm(context, cubit),
child: state.isHandling
? SizedBox(
width: 32.sp,
height: 32.sp,
child: const CircularProgressIndicator(
strokeWidth: 3,
color: Color.fromRGBO(237, 245, 255, 1),
),
)
: Text(
state.isHandled ? '已处理' : '确认处理',
style: TextStyle(
fontSize: 28.sp,
color: const Color.fromRGBO(237, 245, 255, 1),
),
),
),
);
},
),
SizedBox(height: 20.h),
],
Container(
width: double.infinity,
height: 88.h,
......
......@@ -39,7 +39,7 @@ class AbnormalCubit extends Cubit<AbnormalState> {
return AlarmInfo(
alarmType: basic.alertTitle,
deviceInfo: basic.alertDeviceLocation,
alarmLevel: basic.alertLevelText,
alertLevelText: basic.alertLevelText,
urgency: _mapUrgency(basic.alertLevel),
currentTemp: info.alertValue,
voltage: '',
......@@ -59,17 +59,18 @@ class AbnormalCubit extends Cubit<AbnormalState> {
return FlSpot(entry.key.toDouble(), entry.value.value);
}).toList(),
alertDeviceId: basic.alertDeviceId,
alertCount: basic.alertCount,
);
}
String _mapUrgency(String level) {
switch (level) {
case 'high':
return '紧急';
case 'medium':
return '一般';
case 'danger':
return '高警';
case 'warning':
return '中警';
default:
return '一般';
return '普通';
}
}
......
......@@ -3,7 +3,7 @@ import 'package:fl_chart/fl_chart.dart';
class AlarmInfo {
final String alarmType;
final String deviceInfo;
final String alarmLevel;
final String alertLevelText;
final String urgency;
final String currentTemp;
final String voltage;
......@@ -21,11 +21,12 @@ class AlarmInfo {
final List<String> temperatureTimes;
final List<FlSpot> temperatureSpots;
final String alertDeviceId;
final int alertCount;
const AlarmInfo({
required this.alarmType,
required this.deviceInfo,
required this.alarmLevel,
required this.alertLevelText,
required this.urgency,
required this.currentTemp,
required this.voltage,
......@@ -43,6 +44,7 @@ class AlarmInfo {
required this.temperatureTimes,
required this.temperatureSpots,
required this.alertDeviceId,
required this.alertCount,
});
}
......
......@@ -33,8 +33,8 @@ class AlarmInfoBlock extends StatelessWidget {
SizedBox(height: 25.h),
_buildInfoRow(
'告警级别',
'${alarmInfo.alarmLevel}(Level 3)',
valueColor: Color.fromRGBO(255, 100, 101, 1),
alarmInfo.alertLevelText,
valueColor: const Color.fromRGBO(255, 100, 101, 1),
),
SizedBox(height: 25.h),
_buildInfoRow('闭值设置', alarmInfo.threshold),
......@@ -44,13 +44,13 @@ class AlarmInfoBlock extends StatelessWidget {
_buildInfoRow(
'峰值记录',
alarmInfo.peak,
valueColor: Color.fromRGBO(250, 204, 21, 1),
valueColor: const Color.fromRGBO(250, 204, 21, 1),
),
SizedBox(height: 25.h),
_buildInfoRow(
'关联联动',
alarmInfo.linkAction,
valueColor: Color.fromRGBO(73, 149, 234, 1),
valueColor: const Color.fromRGBO(73, 149, 234, 1),
),
],
),
......@@ -71,14 +71,14 @@ class AlarmInfoBlock extends StatelessWidget {
label,
style: TextStyle(
fontSize: 24.sp,
color: Color.fromRGBO(100, 116, 139, 1),
color: const Color.fromRGBO(100, 116, 139, 1),
),
),
Text(
displayValue,
style: TextStyle(
fontSize: 24.sp,
color: valueColor ?? Color.fromRGBO(100, 116, 139, 1),
color: valueColor ?? const Color.fromRGBO(100, 116, 139, 1),
),
),
],
......
......@@ -11,81 +11,108 @@ class TemperatureBlock extends StatelessWidget {
Widget build(BuildContext context) {
return Container(
width: double.infinity,
margin: EdgeInsets.only(top: 10.h),
margin: EdgeInsets.only(top: 20.h),
padding: EdgeInsets.all(25.w),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(25.r),
color: Colors.white,
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
child: Column(
children: [
Container(
width: 64.w,
height: 66.h,
decoration: BoxDecoration(
color: Color.fromRGBO(219, 234, 254, 1),
borderRadius: BorderRadius.circular(15.r),
),
child: Icon(
Icons.thermostat_outlined,
color: Color.fromRGBO(59, 130, 246, 1),
size: 35.sp,
),
),
SizedBox(width: 15.w),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
alarmInfo.alarmType,
style: TextStyle(
fontSize: 28.sp,
color: Colors.black,
fontWeight: FontWeight.bold,
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: 70.w,
height: 66.h,
decoration: BoxDecoration(
color: const Color.fromRGBO(219, 234, 254, 1),
borderRadius: BorderRadius.circular(8.r),
),
SizedBox(height: 8.h),
Text(
alarmInfo.deviceInfo,
style: TextStyle(
fontSize: 24.sp,
color: Color.fromRGBO(100, 116, 139, 1),
),
child: Icon(
Icons.thermostat_outlined,
color: const Color.fromRGBO(59, 130, 246, 1),
size: 40.sp,
),
SizedBox(height: 15.h),
Row(
),
SizedBox(width: 15.w),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
alarmInfo.alarmType,
style: TextStyle(
fontSize: 28.sp,
color: Colors.black,
fontWeight: FontWeight.bold,
),
),
Row(
children: [
Text(
'${alarmInfo.alertLevelText} · ',
style: TextStyle(
fontSize: 24.sp,
color: const Color.fromRGBO(255, 100, 101, 1),
fontWeight: FontWeight.bold,
),
),
Container(
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 5.h),
decoration: BoxDecoration(
color: const Color.fromRGBO(255, 158, 159, 0.5),
borderRadius: BorderRadius.circular(16.r),
),
child: Text(
alarmInfo.urgency,
style: TextStyle(
fontSize: 24.sp,
color: const Color.fromRGBO(255, 100, 101, 1),
),
),
),
],
),
],
),
Text(
'${alarmInfo.alarmLevel}·',
alarmInfo.deviceInfo,
style: TextStyle(
fontSize: 24.sp,
color: Color.fromRGBO(255, 100, 101, 1),
fontWeight: FontWeight.bold,
),
),
Container(
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 5.h),
decoration: BoxDecoration(
color: Color.fromRGBO(255, 158, 159, 0.5),
borderRadius: BorderRadius.circular(16.r),
),
child: Text(
alarmInfo.urgency,
style: TextStyle(
fontSize: 24.sp,
color: Color.fromRGBO(255, 100, 101, 1),
),
color: const Color.fromRGBO(100, 116, 139, 1),
),
),
],
),
],
),
),
],
),
SizedBox(height: 5.h),
Row(
children: [
SizedBox(width: 85.w),
Text(
'告警数量:',
style: TextStyle(
fontSize: 28.sp,
color: const Color.fromRGBO(100, 116, 139, 1),
),
),
Text(
alarmInfo.alertCount.toString(),
style: TextStyle(
fontSize: 28.sp,
color: const Color.fromRGBO(255, 100, 101, 1),
),
),
],
),
],
),
)
);
}
}
\ No newline at end of file
......@@ -7,7 +7,7 @@ import 'package:smart_hotel_app/routes/app_router.gr.dart';
import 'package:smart_hotel_app/services/alert_list_service.dart';
import 'package:smart_hotel_app/views/home/abnormal_list/cubit/abnormal_list_state.dart';
/// AlarmStatus → 告警状态码(API 入参)
/// AlarmStatus → 告警状态码: 0=待处理 1=处理中 2=已确认 3=已关闭 4=误报关闭
String? alarmStatusToApi(AlarmStatus filter) {
switch (filter) {
case AlarmStatus.all:
......@@ -17,7 +17,7 @@ String? alarmStatusToApi(AlarmStatus filter) {
case AlarmStatus.processed:
return '2';
case AlarmStatus.falseAlarm:
return '3';
return '4';
}
}
......@@ -77,6 +77,6 @@ class AbnormalListCubit extends Cubit<AbnormalListState> {
void onAlarmItemTap(AlarmItem item, BuildContext context) {
final alertId = int.tryParse(item.id) ?? 0;
context.pushRoute(AbnormalDetailRoute(alertId: alertId));
context.pushRoute(AbnormalDetailRoute(alertId: alertId, alarmStatus: item.status));
}
}
......@@ -28,22 +28,21 @@ class AlarmItem extends Equatable {
return AlarmItem(
id: item.alertId.toString(),
title: item.alertTitle,
deviceInfo: item.deviceLocationText,
alarmTime: item.alertTime,
deviceInfo: '${item.deviceName}·${item.deviceLocation}',
alarmTime: item.alertTime.isEmpty ? '--' : item.alertTime,
processTime: item.handleTime.isEmpty ? '--' : item.handleTime,
status: _mapAlertStatus(item.alertStatus),
level: item.alertLevel,
level: _mapAlertLevel(item.alertLevel),
urgency: '',
);
}
static AlarmStatus _mapAlertStatus(String status) {
switch (status) {
// 0=待处理 1=处理中 2=已确认 3=已关闭 4=误报关闭
static AlarmStatus _mapAlertStatus(String alertStatus) {
switch (alertStatus) {
case '0':
case '1':
return AlarmStatus.pending;
case '2':
case '3':
return AlarmStatus.processed;
case '4':
return AlarmStatus.falseAlarm;
......@@ -52,6 +51,25 @@ class AlarmItem extends Equatable {
}
}
static String _mapAlertLevel(String alertLevel) {
switch (alertLevel) {
case '3':
case 'danger':
return '高警';
case '2':
case 'warning':
return '中警';
case '1':
case 'info':
return '普通';
default:
return '';
}
}
@override
List<Object?> get props =>
[id, title, deviceInfo, alarmTime, processTime, status, level, urgency];
......
......@@ -82,7 +82,7 @@ class _AbnormalListBodyState extends State<_AbnormalListBody> {
style: TextStyle(
color: const Color.fromRGBO(10, 13, 20, 1),
fontSize: 32.sp,
fontWeight: FontWeight.w200,
fontWeight: FontWeight.w500,
),
),
centerTitle: true,
......@@ -95,18 +95,13 @@ class _AbnormalListBodyState extends State<_AbnormalListBody> {
SliverToBoxAdapter(
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 28.w),
child: Column(
children: [
FilterTabBlock(
currentFilter: state.currentFilter,
onFilterChanged: cubit.setFilter,
allCount: state.allCount,
pendingCount: state.pendingCount,
processedCount: state.processedCount,
falseAlarmCount: state.falseAlarmCount,
),
SizedBox(height: 10.h),
],
child: FilterTabBlock(
currentFilter: state.currentFilter,
onFilterChanged: cubit.setFilter,
allCount: state.allCount,
pendingCount: state.pendingCount,
processedCount: state.processedCount,
falseAlarmCount: state.falseAlarmCount,
),
),
),
......@@ -115,8 +110,7 @@ class _AbnormalListBodyState extends State<_AbnormalListBody> {
sliver: PagedSliverList<int, AlarmItem>(
state: pagingState,
fetchNextPage: fetchNextPage,
builderDelegate:
PagedChildBuilderDelegate<AlarmItem>(
builderDelegate: PagedChildBuilderDelegate<AlarmItem>(
firstPageErrorIndicatorBuilder: (_) => Center(
child: Column(
mainAxisSize: MainAxisSize.min,
......@@ -179,8 +173,7 @@ class _AbnormalListBodyState extends State<_AbnormalListBody> {
itemBuilder: (_, item, __) {
return AlarmListItem(
item: item,
onTap: (i) =>
cubit.onAlarmItemTap(i, context),
onTap: (i) => cubit.onAlarmItemTap(i, context),
);
},
),
......
......@@ -35,12 +35,24 @@ class AlarmListItem extends StatelessWidget {
children: [
_buildTitleRow(),
SizedBox(height: 15.h),
Text(
item.deviceInfo,
style: TextStyle(
fontSize: 24.sp,
color: const Color.fromRGBO(100, 116, 139, 1),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
item.deviceInfo,
style: TextStyle(
fontSize: 24.sp,
color: const Color.fromRGBO(100, 116, 139, 1),
),
),
Text(
item.level,
style: TextStyle(
fontSize: 24.sp,
color: const Color.fromRGBO(255, 100, 101, 1),
),
),
],
),
SizedBox(height: 10.h),
Text(
......@@ -73,7 +85,7 @@ class AlarmListItem extends StatelessWidget {
height: 96.w,
decoration: BoxDecoration(
color: const Color.fromRGBO(237, 245, 255, 1),
borderRadius: BorderRadius.circular(16.r),
borderRadius: BorderRadius.circular(8.r),
),
child: Icon(
Icons.thermostat,
......@@ -95,15 +107,16 @@ class AlarmListItem extends StatelessWidget {
fontWeight: FontWeight.bold,
),
),
Row(
children: [
_buildStatusBadge(),
SizedBox(width: 12.w),
_buildLevelBadge(),
SizedBox(width: 8.w),
_buildUrgencyBadge(),
],
),
_buildStatusBadge(),
// Row(
// children: [
// _buildStatusBadge(),
// SizedBox(width: 12.w),
// _buildLevelBadge(),
// SizedBox(width: 8.w),
// _buildUrgencyBadge(),
// ],
// ),
],
);
}
......@@ -116,7 +129,7 @@ class AlarmListItem extends StatelessWidget {
switch (item.status) {
case AlarmStatus.pending:
bgColor = const Color.fromRGBO(250, 204, 21, 0.15);
bgColor = const Color.fromRGBO(254, 247, 217, 1);
textColor = const Color.fromRGBO(250, 204, 21, 1);
text = '待处理';
icon = Icons.error_outline;
......@@ -134,29 +147,28 @@ class AlarmListItem extends StatelessWidget {
icon = Icons.cancel_outlined;
break;
default:
bgColor = const Color.fromRGBO(100, 116, 139, 0.15);
bgColor = const Color.fromRGBO(100, 116, 139, 0.0);//完全透明
textColor = const Color.fromRGBO(100, 116, 139, 1);
text = '';
}
return Container(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 8.h),
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 4.h),
decoration: BoxDecoration(
color: bgColor,
borderRadius: BorderRadius.circular(12.r),
borderRadius: BorderRadius.circular(40.r),
),
child: Row(
mainAxisSize: MainAxisSize.min,
spacing: 6.w,
children: [
if (icon != null) ...[
Icon(icon, size: 20.w, color: textColor),
SizedBox(width: 6.w),
],
Icon(icon, size: 30.w, color: textColor),
Text(
text,
style: TextStyle(
fontSize: 22.sp,
fontSize: 24.sp,
color: textColor,
fontWeight: FontWeight.w500,
),
),
],
......
......@@ -24,7 +24,7 @@ class FilterTabBlock extends StatelessWidget {
Widget build(BuildContext context) {
return Container(
width: double.infinity,
margin: EdgeInsets.only(top: 10.h),
margin: EdgeInsets.only(top: 20.h),
child: Row(
children: [
_buildTab('全部', AlarmStatus.all, allCount),
......@@ -48,9 +48,14 @@ class FilterTabBlock extends StatelessWidget {
height: 72.h,
decoration: BoxDecoration(
color: isSelected
? const Color.fromRGBO(73, 149, 234, 1)
: const Color.fromRGBO(100, 116, 139, 0.1),
? const Color(0x334995EA)
: const Color(0xFFFFFFFF),
borderRadius: BorderRadius.circular(16.r),
border: isSelected ? Border.all(
color: const Color(0x804995EA),
width: 1.w,
style: BorderStyle.solid,
) : null
),
alignment: Alignment.center,
child: Row(
......@@ -59,24 +64,25 @@ class FilterTabBlock extends StatelessWidget {
Text(
label,
style: TextStyle(
fontSize: 26.sp,
fontSize: 28.sp,
color: isSelected
? Colors.white
: const Color.fromRGBO(100, 116, 139, 1),
? const Color(0xFF4995EA)
: const Color(0xFF64748B),
fontWeight: FontWeight.w500,
),
),
if (count > 0) ...[
SizedBox(width: 6.w),
Text(
'$count',
style: TextStyle(
fontSize: 22.sp,
color: isSelected
? Colors.white
: const Color.fromRGBO(100, 116, 139, 0.8),
),
),
],
// if (count > 0) ...[
// SizedBox(width: 6.w),
// Text(
// '$count',
// style: TextStyle(
// fontSize: 26.sp,
// color: isSelected
// ? Colors.white
// : const Color.fromRGBO(100, 116, 139, 0.8),
// ),
// ),
// ],
],
),
),
......
......@@ -44,7 +44,7 @@ class DeviceDetailView extends StatelessWidget {
style: TextStyle(
color: const Color.fromRGBO(10, 13, 20, 1),
fontSize: 32.sp,
fontWeight: FontWeight.w200,
fontWeight: FontWeight.w500,
),
),
centerTitle: true,
......
......@@ -11,7 +11,7 @@ class StateInfoBlock extends StatelessWidget {
Widget build(BuildContext context) {
return Container(
width: double.infinity,
margin: EdgeInsets.only(top: 10.h),
margin: EdgeInsets.only(top: 20.h),
padding: EdgeInsets.all(25.w),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(25.r),
......@@ -20,15 +20,15 @@ class StateInfoBlock extends StatelessWidget {
child: Row(
children: [
Container(
width: 70.w,
width: 80.w,
height: 70.h,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.r),
color: Color.fromRGBO(219, 234, 254, 1),
color: const Color.fromRGBO(219, 234, 254, 1),
),
child: Icon(
Icons.power,
color: Color.fromRGBO(59, 130, 246, 1),
color: const Color.fromRGBO(59, 130, 246, 1),
size: 32.sp,
),
),
......@@ -47,10 +47,10 @@ class StateInfoBlock extends StatelessWidget {
),
SizedBox(height: 8.h),
Text(
'${deviceInfo.deviceId}·位置: ${deviceInfo.location}',
deviceInfo.location,
style: TextStyle(
fontSize: 24.sp,
color: Color.fromRGBO(100, 116, 139, 1),
color: const Color.fromRGBO(100, 116, 139, 1),
),
),
],
......@@ -60,7 +60,7 @@ class StateInfoBlock extends StatelessWidget {
deviceInfo.status,
style: TextStyle(
fontSize: 24.sp,
color: Color.fromRGBO(20, 184, 166, 1),
color: const Color.fromRGBO(20, 184, 166, 1),
fontWeight: FontWeight.bold,
),
),
......
......@@ -5,6 +5,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:smart_hotel_app/repositories/alert_detail_repository.dart';
import 'package:smart_hotel_app/routes/app_router.gr.dart';
import 'package:smart_hotel_app/services/alert_detail_service.dart';
import 'package:smart_hotel_app/views/home/abnormal_list/cubit/abnormal_list_state.dart';
import 'package:smart_hotel_app/views/home/index/cubit/home_index_cubit.dart';
import 'package:smart_hotel_app/utils/toast_utils.dart';
......@@ -140,7 +141,7 @@ class VoltageOperateBlock extends StatelessWidget {
Expanded(
child: GestureDetector(
onTap: () {
context.pushRoute(AbnormalDetailRoute(alertId: alertId));
context.pushRoute(AbnormalDetailRoute(alertId: alertId, alarmStatus: AlarmStatus.pending));
},
child: Container(
height: 88.h,
......
......@@ -184,7 +184,7 @@ class _InspectionDetailBodyState extends State<_InspectionDetailBody> {
style: TextStyle(
color: const Color.fromRGBO(10, 13, 20, 1),
fontSize: 32.sp,
fontWeight: FontWeight.w200,
fontWeight: FontWeight.w500,
),
),
centerTitle: true,
......
......@@ -51,7 +51,7 @@ class InspectionDeviceView extends StatelessWidget {
style: TextStyle(
color: const Color.fromRGBO(100, 116, 139, 1),
fontSize: 32.sp,
fontWeight: FontWeight.w200,
fontWeight: FontWeight.w500,
),
),
Icon(
......
......@@ -87,7 +87,7 @@ class _InspectionHistoryBodyState extends State<_InspectionHistoryBody> {
style: TextStyle(
color: const Color.fromRGBO(10, 13, 20, 1),
fontSize: 32.sp,
fontWeight: FontWeight.w200,
fontWeight: FontWeight.w500,
),
),
centerTitle: true,
......
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter/material.dart';
import 'package:smart_hotel_app/models/bo/user_info_bo.dart';
import 'package:smart_hotel_app/views/profile/index/cubit/profile_state.dart';
class ProfileCubit extends Cubit<ProfileState> {
ProfileCubit() : super(const ProfileState()) {
final UserInfoBO? _userInfo;
ProfileCubit({UserInfoBO? userInfo})
: _userInfo = userInfo,
super(const ProfileState()) {
initData();
}
void initData() {
emit(state.copyWith(
username: '15391514233',
username: _userInfo?.phonenumber ?? '',
welcomeText: '欢迎来到智能酒店',
menuList: [
const MenuItem(icon: Icons.list, title: '设备列表'),
const MenuItem(icon: Icons.warning_rounded, title: '告警信息'),
const MenuItem(icon: Icons.info_outline, title: '帮助'),
const MenuItem(icon: Icons.person_outline, title: '关于'),
const MenuItem(icon: Icons.logout, title: '退出登录'),
const MenuItem(icon: Icons.logout, title: '注销账号'),
// const MenuItem(icon: Icons.list, title: '设备列表'),
// const MenuItem(icon: Icons.warning_rounded, title: '告警信息'),
// const MenuItem(icon: Icons.info_outline, title: '帮助'),
// const MenuItem(icon: Icons.person_outline, title: '关于'),
// const MenuItem(icon: Icons.logout, title: '退出登录'),
// const MenuItem(icon: Icons.logout, title: '注销账号'),
const MenuItem(icon: 'lib/assets/icon/device_list_bg.png', title: '设备列表'),
const MenuItem(icon: 'lib/assets/icon/alarm_info_bg.png', title: '告警信息'),
const MenuItem(icon: 'lib/assets/icon/help_bg.png', title: '帮助'),
const MenuItem(icon: 'lib/assets/icon/about_bg.png', title: '关于'),
const MenuItem(icon: 'lib/assets/icon/exit_login_bg.png', title: '退出登录'),
const MenuItem(icon: 'lib/assets/icon/logout_account_bg.png', title: '注销账号'),
],
));
}
......
......@@ -2,7 +2,7 @@ import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
class MenuItem {
final IconData icon;
final String icon;
final String title;
final VoidCallback? onTap;
......
......@@ -5,10 +5,12 @@ import 'package:flutter_screenutil/flutter_screenutil.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/views/profile/index/cubit/profile_cubit.dart';
import 'package:smart_hotel_app/views/profile/index/cubit/profile_state.dart';
import 'package:smart_hotel_app/blocs/auth/auth_state.dart';
import 'package:smart_hotel_app/views/profile/index/widget/profile_header_block.dart';
import 'package:smart_hotel_app/views/profile/index/widget/profile_menu_block.dart';
import 'cubit/profile_state.dart';
@RoutePage()
class ProfileView extends StatelessWidget {
const ProfileView({super.key});
......@@ -16,7 +18,11 @@ class ProfileView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (_) => ProfileCubit(),
create: (context) {
final authState = context.read<AuthBloc>().state;
final userInfo = authState is AuthSuccess ? authState.userInfo : null;
return ProfileCubit(userInfo: userInfo);
},
child: _ProfileContent(),
);
}
......@@ -43,14 +49,13 @@ class _ProfileContent extends StatelessWidget {
username: state.username,
welcomeText: state.welcomeText,
),
SizedBox(height: 10.h),
SizedBox(height: 16.h),
Padding(
padding: EdgeInsets.symmetric(horizontal: 28.w),
child: ProfileMenuBlock(
menuList: state.menuList,
onLogout: () {
context
.read<AuthBloc>()
context.read<AuthBloc>()
.add(const AuthLogoutRequestedEvent());
},
),
......
......@@ -31,27 +31,24 @@ class ProfileHeaderBlock extends StatelessWidget {
SizedBox(height: 40.h),
Row(
children: [
Container(
width: 100.w,
height: 100.h,
decoration: const BoxDecoration(
shape: BoxShape.circle,
color: Color.fromRGBO(235, 244, 255, 1.0),
),
child: ClipOval(
child: Image.network(
'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=200&h=200&fit=crop&crop=face',
width: 100.w,
height: 100.h,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
return Icon(
ClipOval(
child: Image.network(
'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=200&h=200&fit=crop&crop=face',
width: 100.r,
height: 100.r,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
return Container(
width: 100.r,
height: 100.r,
color: const Color.fromRGBO(235, 244, 255, 1.0),
child: Icon(
Icons.person,
size: 48.sp,
color: const Color.fromRGBO(66, 165, 245, 1.0),
);
},
),
),
);
},
),
),
SizedBox(width: 24.w),
......
......@@ -21,7 +21,7 @@ class ProfileMenuBlock extends StatelessWidget {
},
child: Container(
width: double.infinity,
padding: EdgeInsets.symmetric(horizontal: 24.w, vertical: 28.h),
padding: EdgeInsets.symmetric(horizontal: 20.w, vertical: 20.h),
margin: EdgeInsets.only(bottom: 16.h),
decoration: BoxDecoration(
color: Colors.white,
......@@ -30,16 +30,17 @@ class ProfileMenuBlock extends StatelessWidget {
child: Row(
children: [
Container(
width: 68.w,
height: 68.h,
width: 112.w,
height: 90.h,
alignment: Alignment.center,
decoration: BoxDecoration(
color: const Color.fromRGBO(229, 241, 255, 1),
borderRadius: BorderRadius.circular(28.r),
borderRadius: BorderRadius.circular(24.r),
),
child: Icon(
child: Image.asset(
item.icon,
color: const Color.fromRGBO(66, 165, 245, 1.0),
size: 40.sp,
width: 48.w,
height: 48.h,
),
),
SizedBox(width: 24.w),
......@@ -53,12 +54,11 @@ class ProfileMenuBlock extends StatelessWidget {
),
),
),
if (item.title == '告警信息' || item.title == '设备列表')
// if (item.title == '告警信息' || item.title == '设备列表')
Icon(Icons.chevron_right,
color: const Color.fromRGBO(100, 116, 139, 1.0),
size: 32.sp,
size: 56.sp,
),
],
),
),
......@@ -83,13 +83,10 @@ class ProfileMenuBlock extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
child: Column(
children: [
...menuList.map((item) => _buildMenuItem(context, item)).toList(),
],
),
return Column(
children: [
...menuList.map((item) => _buildMenuItem(context, item)).toList(),
],
);
}
}
\ No newline at end of file
......@@ -35,7 +35,7 @@ class ServiceDeviceDetailView extends StatelessWidget {
style: TextStyle(
color: const Color.fromRGBO(10, 13, 20, 1),
fontSize: 32.sp,
fontWeight: FontWeight.w200,
fontWeight: FontWeight.w500,
),
),
centerTitle: true,
......
......@@ -46,7 +46,7 @@ class ServiceRoomDetailView extends StatelessWidget {
style: TextStyle(
color: const Color.fromRGBO(10, 13, 20, 1),
fontSize: 32.sp,
fontWeight: FontWeight.w200,
fontWeight: FontWeight.w500,
),
),
centerTitle: true,
......
......@@ -6,7 +6,7 @@ packages:
description:
name: _fe_analyzer_shared
sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "67.0.0"
analyzer:
......@@ -14,7 +14,7 @@ packages:
description:
name: analyzer
sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "6.4.1"
archive:
......@@ -22,7 +22,7 @@ packages:
description:
name: archive
sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.0.9"
args:
......@@ -30,7 +30,7 @@ packages:
description:
name: args
sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.7.0"
async:
......@@ -38,7 +38,7 @@ packages:
description:
name: async
sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.13.1"
auto_route:
......@@ -46,7 +46,7 @@ packages:
description:
name: auto_route
sha256: eb33554581a0a4aa7e6da0f13a44291a55bf71359012f1d9feb41634ff908ff8
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "7.9.2"
auto_route_generator:
......@@ -54,7 +54,7 @@ packages:
description:
name: auto_route_generator
sha256: "11067a3bcd643812518fe26c0c9ec073990286cabfd9d74b6da9ef9b913c4d22"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "7.3.2"
bloc:
......@@ -62,7 +62,7 @@ packages:
description:
name: bloc
sha256: "106842ad6569f0b60297619e9e0b1885c2fb9bf84812935490e6c5275777804e"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "8.1.4"
boolean_selector:
......@@ -70,7 +70,7 @@ packages:
description:
name: boolean_selector
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.2"
build:
......@@ -78,7 +78,7 @@ packages:
description:
name: build
sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.1"
build_config:
......@@ -86,7 +86,7 @@ packages:
description:
name: build_config
sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.2"
build_daemon:
......@@ -94,7 +94,7 @@ packages:
description:
name: build_daemon
sha256: bf05f6e12cfea92d3c09308d7bcdab1906cd8a179b023269eed00c071004b957
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.1.1"
build_resolvers:
......@@ -102,7 +102,7 @@ packages:
description:
name: build_resolvers
sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.2"
build_runner:
......@@ -110,7 +110,7 @@ packages:
description:
name: build_runner
sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.13"
build_runner_core:
......@@ -118,7 +118,7 @@ packages:
description:
name: build_runner_core
sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "7.3.2"
built_collection:
......@@ -126,7 +126,7 @@ packages:
description:
name: built_collection
sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.1.1"
built_value:
......@@ -134,7 +134,7 @@ packages:
description:
name: built_value
sha256: "34e4067d30ce212937df995f03b69992eea683539ceeac7f679a1f1eba055b56"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "8.12.6"
characters:
......@@ -142,7 +142,7 @@ packages:
description:
name: characters
sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.4.1"
checked_yaml:
......@@ -150,7 +150,7 @@ packages:
description:
name: checked_yaml
sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.4"
cli_util:
......@@ -158,7 +158,7 @@ packages:
description:
name: cli_util
sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.4.2"
clock:
......@@ -166,7 +166,7 @@ packages:
description:
name: clock
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.2"
code_assets:
......@@ -174,7 +174,7 @@ packages:
description:
name: code_assets
sha256: bf394f466ba9205f1812a0433b392d6af280f155f56651eda7c18cc32ed493b8
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.1"
code_builder:
......@@ -182,7 +182,7 @@ packages:
description:
name: code_builder
sha256: "6a6cab2ba4680d6423f34a9b972a4c9a94ebe1b62ecec4e1a1f2cba91fd1319d"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.11.1"
collection:
......@@ -190,7 +190,7 @@ packages:
description:
name: collection
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.19.1"
convert:
......@@ -198,7 +198,7 @@ packages:
description:
name: convert
sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.1.2"
crypto:
......@@ -206,7 +206,7 @@ packages:
description:
name: crypto
sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.7"
cupertino_icons:
......@@ -214,7 +214,7 @@ packages:
description:
name: cupertino_icons
sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.9"
dart_style:
......@@ -222,7 +222,7 @@ packages:
description:
name: dart_style
sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.3.6"
dio:
......@@ -230,7 +230,7 @@ packages:
description:
name: dio
sha256: aff32c08f92787a557dd5c0145ac91536481831a01b4648136373cddb0e64f8c
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.9.2"
dio_web_adapter:
......@@ -238,7 +238,7 @@ packages:
description:
name: dio_web_adapter
sha256: "2f9e64323a7c3c7ef69567d5c800424a11f8337b8b228bad02524c9fb3c1f340"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.2"
equatable:
......@@ -246,7 +246,7 @@ packages:
description:
name: equatable
sha256: "3e0141505477fd8ad55d6eb4e7776d3fe8430be8e497ccb1521370c3f21a3e2b"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.8"
fake_async:
......@@ -254,7 +254,7 @@ packages:
description:
name: fake_async
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.3.3"
ffi:
......@@ -262,7 +262,7 @@ packages:
description:
name: ffi
sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.0"
file:
......@@ -270,7 +270,7 @@ packages:
description:
name: file
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "7.0.1"
fixnum:
......@@ -278,7 +278,7 @@ packages:
description:
name: fixnum
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.1"
fl_chart:
......@@ -286,7 +286,7 @@ packages:
description:
name: fl_chart
sha256: f2e9137f261d0f53a820f6b829c80ba570ac915284c8e32789d973834796eca0
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.71.0"
flutter:
......@@ -299,7 +299,7 @@ packages:
description:
name: flutter_bloc
sha256: b594505eac31a0518bdcb4b5b79573b8d9117b193cc80cc12e17d639b10aa27a
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "8.1.6"
flutter_launcher_icons:
......@@ -307,7 +307,7 @@ packages:
description:
name: flutter_launcher_icons
sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.13.1"
flutter_lints:
......@@ -315,7 +315,7 @@ packages:
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.3"
flutter_screenutil:
......@@ -323,7 +323,7 @@ packages:
description:
name: flutter_screenutil
sha256: "8239210dd68bee6b0577aa4a090890342d04a136ce1c81f98ee513fc0ce891de"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.9.3"
flutter_secure_storage:
......@@ -331,7 +331,7 @@ packages:
description:
name: flutter_secure_storage
sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "9.2.4"
flutter_secure_storage_linux:
......@@ -339,7 +339,7 @@ packages:
description:
name: flutter_secure_storage_linux
sha256: be76c1d24a97d0b98f8b54bce6b481a380a6590df992d0098f868ad54dc8f688
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.3"
flutter_secure_storage_macos:
......@@ -347,7 +347,7 @@ packages:
description:
name: flutter_secure_storage_macos
sha256: "6c0a2795a2d1de26ae202a0d78527d163f4acbb11cde4c75c670f3a0fc064247"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.1.3"
flutter_secure_storage_platform_interface:
......@@ -355,7 +355,7 @@ packages:
description:
name: flutter_secure_storage_platform_interface
sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.2"
flutter_secure_storage_web:
......@@ -363,7 +363,7 @@ packages:
description:
name: flutter_secure_storage_web
sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.1"
flutter_secure_storage_windows:
......@@ -371,7 +371,7 @@ packages:
description:
name: flutter_secure_storage_windows
sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.1.2"
flutter_staggered_grid_view:
......@@ -379,7 +379,7 @@ packages:
description:
name: flutter_staggered_grid_view
sha256: "19e7abb550c96fbfeb546b23f3ff356ee7c59a019a651f8f102a4ba9b7349395"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.7.0"
flutter_switch:
......@@ -387,7 +387,7 @@ packages:
description:
name: flutter_switch
sha256: b91477f926bba135d2d203d7b24367492662d8d9c3aa6adb960b14c1087d3c41
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.3.2"
flutter_test:
......@@ -405,7 +405,7 @@ packages:
description:
name: fluttertoast
sha256: "7903c9d5339173497bfecbc23bc4212f5a87e0edfac2e1693fb74465ea67da7e"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "9.1.0"
frontend_server_client:
......@@ -413,7 +413,7 @@ packages:
description:
name: frontend_server_client
sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.0.0"
glob:
......@@ -421,7 +421,7 @@ packages:
description:
name: glob
sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.3"
graphs:
......@@ -429,7 +429,7 @@ packages:
description:
name: graphs
sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.3.2"
hooks:
......@@ -437,7 +437,7 @@ packages:
description:
name: hooks
sha256: "9a62a50b50b769a737bc0a8ff381f333529df3ab746b2f6b02e83760231455ba"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.2"
http_multi_server:
......@@ -445,7 +445,7 @@ packages:
description:
name: http_multi_server
sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.2.2"
http_parser:
......@@ -453,7 +453,7 @@ packages:
description:
name: http_parser
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.1.2"
image:
......@@ -461,7 +461,7 @@ packages:
description:
name: image
sha256: f9881ff4998044947ec38d098bc7c8316ae1186fa786eddffdb867b9bc94dfce
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.8.0"
infinite_scroll_pagination:
......@@ -469,7 +469,7 @@ packages:
description:
name: infinite_scroll_pagination
sha256: b0d28e37cd8f62490ff6aef63f9db93d4c78b7f11b7c6b26f33c69d8476fda78
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.1.1"
io:
......@@ -477,7 +477,7 @@ packages:
description:
name: io
sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.5"
jni:
......@@ -485,7 +485,7 @@ packages:
description:
name: jni
sha256: c2230682d5bc2362c1c9e8d3c7f406d9cbba23ab3f2e203a025dd47e0fb2e68f
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.0"
jni_flutter:
......@@ -493,7 +493,7 @@ packages:
description:
name: jni_flutter
sha256: "8b59e590786050b1cd866677dddaf76b1ade5e7bc751abe04b86e84d379d3ba6"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.1"
js:
......@@ -501,7 +501,7 @@ packages:
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.6.7"
json_annotation:
......@@ -509,7 +509,7 @@ packages:
description:
name: json_annotation
sha256: "2a743920d81b7910627f68ee2c9ac1fc0bfee32b9fc3403587d7c6791ca12f80"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.12.0"
leak_tracker:
......@@ -517,7 +517,7 @@ packages:
description:
name: leak_tracker
sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "11.0.2"
leak_tracker_flutter_testing:
......@@ -525,7 +525,7 @@ packages:
description:
name: leak_tracker_flutter_testing
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.10"
leak_tracker_testing:
......@@ -533,7 +533,7 @@ packages:
description:
name: leak_tracker_testing
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.2"
lints:
......@@ -541,7 +541,7 @@ packages:
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.1"
loading_animation_widget:
......@@ -549,7 +549,7 @@ packages:
description:
name: loading_animation_widget
sha256: "9fe23381f3096e902f39e87e487648ff7f74925e86234353fa885bb9f6c98004"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.3.0"
logger:
......@@ -557,7 +557,7 @@ packages:
description:
name: logger
sha256: "25aee487596a6257655a1e091ec2ae66bc30e7af663592cc3a27e6591e05035c"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.7.0"
logging:
......@@ -565,7 +565,7 @@ packages:
description:
name: logging
sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.3.0"
matcher:
......@@ -573,7 +573,7 @@ packages:
description:
name: matcher
sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.12.19"
material_color_utilities:
......@@ -581,7 +581,7 @@ packages:
description:
name: material_color_utilities
sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.13.0"
meta:
......@@ -589,7 +589,7 @@ packages:
description:
name: meta
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.17.0"
mime:
......@@ -597,7 +597,7 @@ packages:
description:
name: mime
sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.0"
nested:
......@@ -605,7 +605,7 @@ packages:
description:
name: nested
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.0"
objective_c:
......@@ -613,7 +613,7 @@ packages:
description:
name: objective_c
sha256: "6cb691c686fa2838c6deb34980d426145c2a5d537491cb83d463c33cdbc726ed"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "9.4.1"
package_config:
......@@ -621,7 +621,7 @@ packages:
description:
name: package_config
sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.0"
path:
......@@ -629,7 +629,7 @@ packages:
description:
name: path
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.9.1"
path_provider:
......@@ -637,7 +637,7 @@ packages:
description:
name: path_provider
sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.5"
path_provider_android:
......@@ -645,7 +645,7 @@ packages:
description:
name: path_provider_android
sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.3.1"
path_provider_foundation:
......@@ -653,7 +653,7 @@ packages:
description:
name: path_provider_foundation
sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.6.0"
path_provider_linux:
......@@ -661,7 +661,7 @@ packages:
description:
name: path_provider_linux
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.1"
path_provider_platform_interface:
......@@ -669,7 +669,7 @@ packages:
description:
name: path_provider_platform_interface
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.2"
path_provider_windows:
......@@ -677,7 +677,7 @@ packages:
description:
name: path_provider_windows
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.3.0"
petitparser:
......@@ -685,7 +685,7 @@ packages:
description:
name: petitparser
sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "7.0.2"
platform:
......@@ -693,7 +693,7 @@ packages:
description:
name: platform
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.1.6"
plugin_platform_interface:
......@@ -701,7 +701,7 @@ packages:
description:
name: plugin_platform_interface
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.8"
pool:
......@@ -709,7 +709,7 @@ packages:
description:
name: pool
sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.5.2"
posix:
......@@ -717,7 +717,7 @@ packages:
description:
name: posix
sha256: "185ef7606574f789b40f289c233efa52e96dead518aed988e040a10737febb07"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "6.5.0"
provider:
......@@ -725,7 +725,7 @@ packages:
description:
name: provider
sha256: "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "6.1.5+1"
pub_semver:
......@@ -733,7 +733,7 @@ packages:
description:
name: pub_semver
sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.0"
pubspec_parse:
......@@ -741,7 +741,7 @@ packages:
description:
name: pubspec_parse
sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.5.0"
record_use:
......@@ -749,7 +749,7 @@ packages:
description:
name: record_use
sha256: "2551bd8eecfe95d14ae75f6021ad0248be5c27f138c2ec12fcb52b500b3ba1ed"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.6.0"
shelf:
......@@ -757,7 +757,7 @@ packages:
description:
name: shelf
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.4.2"
shelf_web_socket:
......@@ -765,7 +765,7 @@ packages:
description:
name: shelf_web_socket
sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.1"
sky_engine:
......@@ -778,7 +778,7 @@ packages:
description:
name: sliver_tools
sha256: eae28220badfb9d0559207badcbbc9ad5331aac829a88cb0964d330d2a4636a6
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.2.12"
source_gen:
......@@ -786,7 +786,7 @@ packages:
description:
name: source_gen
sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.5.0"
source_span:
......@@ -794,7 +794,7 @@ packages:
description:
name: source_span
sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.10.2"
stack_trace:
......@@ -802,7 +802,7 @@ packages:
description:
name: stack_trace
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.12.1"
stream_channel:
......@@ -810,7 +810,7 @@ packages:
description:
name: stream_channel
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.4"
stream_transform:
......@@ -818,7 +818,7 @@ packages:
description:
name: stream_transform
sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.1"
string_scanner:
......@@ -826,7 +826,7 @@ packages:
description:
name: string_scanner
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.4.1"
term_glyph:
......@@ -834,7 +834,7 @@ packages:
description:
name: term_glyph
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.2"
test_api:
......@@ -842,7 +842,7 @@ packages:
description:
name: test_api
sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.7.10"
timing:
......@@ -850,7 +850,7 @@ packages:
description:
name: timing
sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.2"
typed_data:
......@@ -858,7 +858,7 @@ packages:
description:
name: typed_data
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.4.0"
vector_math:
......@@ -866,7 +866,7 @@ packages:
description:
name: vector_math
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.0"
vm_service:
......@@ -874,7 +874,7 @@ packages:
description:
name: vm_service
sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "15.2.0"
watcher:
......@@ -882,7 +882,7 @@ packages:
description:
name: watcher
sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.2.1"
web:
......@@ -890,7 +890,7 @@ packages:
description:
name: web
sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.1"
web_socket:
......@@ -898,7 +898,7 @@ packages:
description:
name: web_socket
sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.1"
web_socket_channel:
......@@ -906,7 +906,7 @@ packages:
description:
name: web_socket_channel
sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.3"
win32:
......@@ -914,7 +914,7 @@ packages:
description:
name: win32
sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.5.1"
xdg_directories:
......@@ -922,7 +922,7 @@ packages:
description:
name: xdg_directories
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0"
xml:
......@@ -930,7 +930,7 @@ packages:
description:
name: xml
sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025"
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "6.6.1"
yaml:
......@@ -938,7 +938,7 @@ packages:
description:
name: yaml
sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
url: "https://pub.dev"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.1.3"
sdks:
......
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