From f5eb9c8634c41b88bace4bf7ffe654c8ffea7b10 Mon Sep 17 00:00:00 2001 From: Shatanik Mahanty Date: Sun, 17 Mar 2024 20:04:16 +0530 Subject: [PATCH] Enhancement: Check previous icon before calling set icon --- lib/app/controller/controller.dart | 13 +- lib/app/data/weather.dart | 1 + lib/app/data/weather.g.dart | 310 +++++++++++++++++---- lib/app/widgets/daily/info_daily_card.dart | 51 ++-- pubspec.lock | 83 ++++-- 5 files changed, 344 insertions(+), 114 deletions(-) diff --git a/lib/app/controller/controller.dart b/lib/app/controller/controller.dart index f01b016..72d9fc6 100644 --- a/lib/app/controller/controller.dart +++ b/lib/app/controller/controller.dart @@ -145,10 +145,17 @@ class WeatherController extends GetxController { _mainWeather.value = await WeatherAPI().getWeatherData(_latitude.value, _longitude.value); + /// Try setting the app icon based on the current weather final weatherCode = _mainWeather.value.weathercode![hourOfDay.value]; - print(StatusWeather().getAppIcon(weatherCode)); - print(StatusWeather().getText(weatherCode)); - AppIconService().changeIcon(StatusWeather().getAppIcon(weatherCode)); + final weatherIcon = StatusWeather().getAppIcon(weatherCode); + print("Stored app icon: ${settings.currentAppIcon}, Weather icon: $weatherIcon"); + if (settings.currentAppIcon != weatherIcon) { + settings.currentAppIcon = weatherIcon; + isar.writeTxnSync(() { + isar.settings.putSync(settings); + }); + AppIconService().changeIcon(StatusWeather().getAppIcon(weatherCode)); + } notificationCheck(); diff --git a/lib/app/data/weather.dart b/lib/app/data/weather.dart index 115d0eb..b2757c8 100644 --- a/lib/app/data/weather.dart +++ b/lib/app/data/weather.dart @@ -20,6 +20,7 @@ class Settings { int? timeRange; String? timeStart; String? timeEnd; + String? currentAppIcon; } @collection diff --git a/lib/app/data/weather.g.dart b/lib/app/data/weather.g.dart index aebb11e..ad2e4ef 100644 --- a/lib/app/data/weather.g.dart +++ b/lib/app/data/weather.g.dart @@ -22,73 +22,78 @@ const SettingsSchema = CollectionSchema( name: r'amoledTheme', type: IsarType.bool, ), - r'degrees': PropertySchema( + r'currentAppIcon': PropertySchema( id: 1, + name: r'currentAppIcon', + type: IsarType.string, + ), + r'degrees': PropertySchema( + id: 2, name: r'degrees', type: IsarType.string, ), r'language': PropertySchema( - id: 2, + id: 3, name: r'language', type: IsarType.string, ), r'location': PropertySchema( - id: 3, + id: 4, name: r'location', type: IsarType.bool, ), r'materialColor': PropertySchema( - id: 4, + id: 5, name: r'materialColor', type: IsarType.bool, ), r'measurements': PropertySchema( - id: 5, + id: 6, name: r'measurements', type: IsarType.string, ), r'notifications': PropertySchema( - id: 6, + id: 7, name: r'notifications', type: IsarType.bool, ), r'onboard': PropertySchema( - id: 7, + id: 8, name: r'onboard', type: IsarType.bool, ), r'theme': PropertySchema( - id: 8, + id: 9, name: r'theme', type: IsarType.string, ), r'timeEnd': PropertySchema( - id: 9, + id: 10, name: r'timeEnd', type: IsarType.string, ), r'timeRange': PropertySchema( - id: 10, + id: 11, name: r'timeRange', type: IsarType.long, ), r'timeStart': PropertySchema( - id: 11, + id: 12, name: r'timeStart', type: IsarType.string, ), r'timeformat': PropertySchema( - id: 12, + id: 13, name: r'timeformat', type: IsarType.string, ), r'widgetBackgroundColor': PropertySchema( - id: 13, + id: 14, name: r'widgetBackgroundColor', type: IsarType.string, ), r'widgetTextColor': PropertySchema( - id: 14, + id: 15, name: r'widgetTextColor', type: IsarType.string, ) @@ -113,6 +118,12 @@ int _settingsEstimateSize( Map> allOffsets, ) { var bytesCount = offsets.last; + { + final value = object.currentAppIcon; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } bytesCount += 3 + object.degrees.length * 3; { final value = object.language; @@ -162,20 +173,21 @@ void _settingsSerialize( Map> allOffsets, ) { writer.writeBool(offsets[0], object.amoledTheme); - writer.writeString(offsets[1], object.degrees); - writer.writeString(offsets[2], object.language); - writer.writeBool(offsets[3], object.location); - writer.writeBool(offsets[4], object.materialColor); - writer.writeString(offsets[5], object.measurements); - writer.writeBool(offsets[6], object.notifications); - writer.writeBool(offsets[7], object.onboard); - writer.writeString(offsets[8], object.theme); - writer.writeString(offsets[9], object.timeEnd); - writer.writeLong(offsets[10], object.timeRange); - writer.writeString(offsets[11], object.timeStart); - writer.writeString(offsets[12], object.timeformat); - writer.writeString(offsets[13], object.widgetBackgroundColor); - writer.writeString(offsets[14], object.widgetTextColor); + writer.writeString(offsets[1], object.currentAppIcon); + writer.writeString(offsets[2], object.degrees); + writer.writeString(offsets[3], object.language); + writer.writeBool(offsets[4], object.location); + writer.writeBool(offsets[5], object.materialColor); + writer.writeString(offsets[6], object.measurements); + writer.writeBool(offsets[7], object.notifications); + writer.writeBool(offsets[8], object.onboard); + writer.writeString(offsets[9], object.theme); + writer.writeString(offsets[10], object.timeEnd); + writer.writeLong(offsets[11], object.timeRange); + writer.writeString(offsets[12], object.timeStart); + writer.writeString(offsets[13], object.timeformat); + writer.writeString(offsets[14], object.widgetBackgroundColor); + writer.writeString(offsets[15], object.widgetTextColor); } Settings _settingsDeserialize( @@ -186,21 +198,22 @@ Settings _settingsDeserialize( ) { final object = Settings(); object.amoledTheme = reader.readBool(offsets[0]); - object.degrees = reader.readString(offsets[1]); + object.currentAppIcon = reader.readStringOrNull(offsets[1]); + object.degrees = reader.readString(offsets[2]); object.id = id; - object.language = reader.readStringOrNull(offsets[2]); - object.location = reader.readBool(offsets[3]); - object.materialColor = reader.readBool(offsets[4]); - object.measurements = reader.readString(offsets[5]); - object.notifications = reader.readBool(offsets[6]); - object.onboard = reader.readBool(offsets[7]); - object.theme = reader.readStringOrNull(offsets[8]); - object.timeEnd = reader.readStringOrNull(offsets[9]); - object.timeRange = reader.readLongOrNull(offsets[10]); - object.timeStart = reader.readStringOrNull(offsets[11]); - object.timeformat = reader.readString(offsets[12]); - object.widgetBackgroundColor = reader.readStringOrNull(offsets[13]); - object.widgetTextColor = reader.readStringOrNull(offsets[14]); + object.language = reader.readStringOrNull(offsets[3]); + object.location = reader.readBool(offsets[4]); + object.materialColor = reader.readBool(offsets[5]); + object.measurements = reader.readString(offsets[6]); + object.notifications = reader.readBool(offsets[7]); + object.onboard = reader.readBool(offsets[8]); + object.theme = reader.readStringOrNull(offsets[9]); + object.timeEnd = reader.readStringOrNull(offsets[10]); + object.timeRange = reader.readLongOrNull(offsets[11]); + object.timeStart = reader.readStringOrNull(offsets[12]); + object.timeformat = reader.readString(offsets[13]); + object.widgetBackgroundColor = reader.readStringOrNull(offsets[14]); + object.widgetTextColor = reader.readStringOrNull(offsets[15]); return object; } @@ -214,33 +227,35 @@ P _settingsDeserializeProp

( case 0: return (reader.readBool(offset)) as P; case 1: - return (reader.readString(offset)) as P; - case 2: return (reader.readStringOrNull(offset)) as P; + case 2: + return (reader.readString(offset)) as P; case 3: - return (reader.readBool(offset)) as P; + return (reader.readStringOrNull(offset)) as P; case 4: return (reader.readBool(offset)) as P; case 5: - return (reader.readString(offset)) as P; - case 6: return (reader.readBool(offset)) as P; + case 6: + return (reader.readString(offset)) as P; case 7: return (reader.readBool(offset)) as P; case 8: - return (reader.readStringOrNull(offset)) as P; + return (reader.readBool(offset)) as P; case 9: return (reader.readStringOrNull(offset)) as P; case 10: - return (reader.readLongOrNull(offset)) as P; + return (reader.readStringOrNull(offset)) as P; case 11: - return (reader.readStringOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 12: - return (reader.readString(offset)) as P; - case 13: return (reader.readStringOrNull(offset)) as P; + case 13: + return (reader.readString(offset)) as P; case 14: return (reader.readStringOrNull(offset)) as P; + case 15: + return (reader.readStringOrNull(offset)) as P; default: throw IsarError('Unknown property with id $propertyId'); } @@ -345,6 +360,159 @@ extension SettingsQueryFilter }); } + QueryBuilder + currentAppIconIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'currentAppIcon', + )); + }); + } + + QueryBuilder + currentAppIconIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'currentAppIcon', + )); + }); + } + + QueryBuilder currentAppIconEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'currentAppIcon', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + currentAppIconGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'currentAppIcon', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + currentAppIconLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'currentAppIcon', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder currentAppIconBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'currentAppIcon', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + currentAppIconStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'currentAppIcon', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + currentAppIconEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'currentAppIcon', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + currentAppIconContains(String value, {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'currentAppIcon', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder currentAppIconMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'currentAppIcon', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder + currentAppIconIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'currentAppIcon', + value: '', + )); + }); + } + + QueryBuilder + currentAppIconIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'currentAppIcon', + value: '', + )); + }); + } + QueryBuilder degreesEqualTo( String value, { bool caseSensitive = true, @@ -1815,6 +1983,18 @@ extension SettingsQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByCurrentAppIcon() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'currentAppIcon', Sort.asc); + }); + } + + QueryBuilder sortByCurrentAppIconDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'currentAppIcon', Sort.desc); + }); + } + QueryBuilder sortByDegrees() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'degrees', Sort.asc); @@ -1999,6 +2179,18 @@ extension SettingsQuerySortThenBy }); } + QueryBuilder thenByCurrentAppIcon() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'currentAppIcon', Sort.asc); + }); + } + + QueryBuilder thenByCurrentAppIconDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'currentAppIcon', Sort.desc); + }); + } + QueryBuilder thenByDegrees() { return QueryBuilder.apply(this, (query) { return query.addSortBy(r'degrees', Sort.asc); @@ -2189,6 +2381,14 @@ extension SettingsQueryWhereDistinct }); } + QueryBuilder distinctByCurrentAppIcon( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'currentAppIcon', + caseSensitive: caseSensitive); + }); + } + QueryBuilder distinctByDegrees( {bool caseSensitive = true}) { return QueryBuilder.apply(this, (query) { @@ -2299,6 +2499,12 @@ extension SettingsQueryProperty }); } + QueryBuilder currentAppIconProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'currentAppIcon'); + }); + } + QueryBuilder degreesProperty() { return QueryBuilder.apply(this, (query) { return query.addPropertyName(r'degrees'); diff --git a/lib/app/widgets/daily/info_daily_card.dart b/lib/app/widgets/daily/info_daily_card.dart index 71b634d..42e76d7 100644 --- a/lib/app/widgets/daily/info_daily_card.dart +++ b/lib/app/widgets/daily/info_daily_card.dart @@ -69,8 +69,7 @@ class _InfoDailyCardState extends State { highlightColor: Colors.transparent, ), title: Text( - DateFormat.MMMMEEEEd(locale.languageCode) - .format(timeDaily[pageIndex]), + DateFormat.MMMMEEEEd(locale.languageCode).format(timeDaily[pageIndex]), style: textTheme.titleMedium?.copyWith( fontWeight: FontWeight.w600, fontSize: 18, @@ -88,17 +87,13 @@ class _InfoDailyCardState extends State { itemCount: timeDaily.length, itemBuilder: (context, index) { final indexedWeatherCodeDaily = weatherCodeDaily[index]; - final apparentTemperatureMin = - weatherData.apparentTemperatureMin?[index]; - final apparentTemperatureMax = - weatherData.apparentTemperatureMax?[index]; + final apparentTemperatureMin = weatherData.apparentTemperatureMin?[index]; + final apparentTemperatureMax = weatherData.apparentTemperatureMax?[index]; final uvIndexMax = weatherData.uvIndexMax?[index]; - final windDirection10MDominant = - weatherData.winddirection10MDominant?[index]; + final windDirection10MDominant = weatherData.winddirection10MDominant?[index]; final windSpeed10MMax = weatherData.windspeed10MMax?[index]; final windGusts10MMax = weatherData.windgusts10MMax?[index]; - final precipitationProbabilityMax = - weatherData.precipitationProbabilityMax?[index]; + final precipitationProbabilityMax = weatherData.precipitationProbabilityMax?[index]; final rainSum = weatherData.rainSum?[index]; final precipitationSum = weatherData.precipitationSum?[index]; @@ -114,8 +109,7 @@ class _InfoDailyCardState extends State { const SizedBox(height: 15), Image( image: AssetImage( - statusWeather - .getImageNowDaily(indexedWeatherCodeDaily), + statusWeather.getImageNowDaily(indexedWeatherCodeDaily), ), fit: BoxFit.fill, height: 200, @@ -136,8 +130,7 @@ class _InfoDailyCardState extends State { ), const SizedBox(height: 5), Text( - DateFormat.MMMMEEEEd(locale.languageCode) - .format(timeDaily[index]), + DateFormat.MMMMEEEEd(locale.languageCode).format(timeDaily[index]), style: textTheme.labelLarge?.copyWith( color: Colors.grey, fontSize: 16, @@ -164,16 +157,14 @@ class _InfoDailyCardState extends State { ? const Offstage() : DescWeather( imageName: 'assets/images/cold.png', - value: statusData.getDegree( - apparentTemperatureMin.round()), + value: statusData.getDegree(apparentTemperatureMin.round()), desc: 'apparentTemperatureMin'.tr, ), apparentTemperatureMax == null ? const Offstage() : DescWeather( imageName: 'assets/images/hot.png', - value: statusData.getDegree( - apparentTemperatureMax.round()), + value: statusData.getDegree(apparentTemperatureMax.round()), desc: 'apparentTemperatureMax'.tr, ), uvIndexMax == null @@ -182,8 +173,7 @@ class _InfoDailyCardState extends State { imageName: 'assets/images/uv.png', value: '${uvIndexMax.round()}', desc: 'uvIndex'.tr, - message: message - .getUvIndex(uvIndexMax.round()), + message: message.getUvIndex(uvIndexMax.round()), ), windDirection10MDominant == null ? const Offstage() @@ -191,31 +181,26 @@ class _InfoDailyCardState extends State { imageName: 'assets/images/windsock.png', value: '$windDirection10MDominant°', desc: 'direction'.tr, - message: message.getDirection( - windDirection10MDominant), + message: message.getDirection(windDirection10MDominant), ), windSpeed10MMax == null ? const Offstage() : DescWeather( imageName: 'assets/images/wind.png', - value: statusData - .getSpeed(windSpeed10MMax.round()), + value: statusData.getSpeed(windSpeed10MMax.round()), desc: 'wind'.tr, ), windGusts10MMax == null ? const Offstage() : DescWeather( - imageName: - 'assets/images/windgusts.png', - value: statusData - .getSpeed(windGusts10MMax.round()), + imageName: 'assets/images/windgusts.png', + value: statusData.getSpeed(windGusts10MMax.round()), desc: 'windgusts'.tr, ), precipitationProbabilityMax == null ? const Offstage() : DescWeather( - imageName: - 'assets/images/precipitation_probability.png', + imageName: 'assets/images/precipitation_probability.png', value: '$precipitationProbabilityMax%', desc: 'precipitationProbability'.tr, ), @@ -223,16 +208,14 @@ class _InfoDailyCardState extends State { ? const Offstage() : DescWeather( imageName: 'assets/images/water.png', - value: statusData - .getPrecipitation(rainSum), + value: statusData.getPrecipitation(rainSum), desc: 'rain'.tr, ), precipitationSum == null ? const Offstage() : DescWeather( imageName: 'assets/images/rainfall.png', - value: statusData - .getPrecipitation(precipitationSum), + value: statusData.getPrecipitation(precipitationSum), desc: 'precipitation'.tr, ), ], diff --git a/pubspec.lock b/pubspec.lock index a33634f..72e2dfe 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -157,10 +157,10 @@ packages: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.2" + version: "1.18.0" connectivity_plus: dependency: "direct main" description: @@ -241,6 +241,15 @@ packages: url: "https://pub.dev" source: hosted version: "1.6.8" + dynamic_icon_flutter: + dependency: "direct main" + description: + path: "." + ref: HEAD + resolved-ref: "89572bba0af66d198675571bf70f117ccbc9b049" + url: "https://github.com/chuanpham/dynamic_icon_flutter.git" + source: git + version: "0.0.8" fake_async: dependency: transitive description: @@ -637,6 +646,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + url: "https://pub.dev" + source: hosted + version: "10.0.0" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + url: "https://pub.dev" + source: hosted + version: "2.0.1" lints: dependency: transitive description: @@ -657,26 +690,26 @@ packages: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.11.0" mime: dependency: transitive description: @@ -721,10 +754,10 @@ packages: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" path_provider: dependency: "direct main" description: @@ -902,18 +935,18 @@ packages: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" stream_transform: dependency: transitive description: @@ -942,10 +975,10 @@ packages: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.6.1" time: dependency: transitive description: @@ -1074,6 +1107,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + url: "https://pub.dev" + source: hosted + version: "13.0.0" watcher: dependency: transitive description: @@ -1082,14 +1123,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" - web: - dependency: transitive - description: - name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 - url: "https://pub.dev" - source: hosted - version: "0.1.4-beta" web_socket_channel: dependency: transitive description: @@ -1147,5 +1180,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.1.5 <4.0.0" + dart: ">=3.2.0-0 <4.0.0" flutter: ">=3.13.0"