Commit 97a606335a85f84208ec76a88865e08cf585e04f

Authored by 常守达
1 parent aa24744a

feat(bridge): 预留Android接口

... ... @@ -11,12 +11,11 @@ class HealthKitHostApiImpl(
private val activity: MainActivity,
) : HealthKitHostApi {
override fun checkHealthAppAuthorization(): Boolean {
return HuaweiHealthBridge.checkHealthAppAuthorization(activity.applicationContext)
override fun checkHealthAppAuthorization(callback: (Result<Boolean>) -> Unit) {
}
override fun getHealthServerAuthUrl(): String {
return HuaweiHealthBridge.getHealthServerAuthUrl()
override fun getHealthServerAuthUrl(callback: (Result<String>) -> Unit) {
}
override fun requestHealthClientAuthorization(): Boolean {
... ... @@ -35,33 +34,124 @@ class HealthKitHostApiImpl(
)
}
override fun fetchHrvData(startTime: Long, endTime: Long): List<HealthUploadDataPoint> = emptyList()
override fun fetchHrvData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchHeartRateData(startTime: Long, endTime: Long): List<HealthUploadDataPoint> = emptyList()
override fun fetchHeartRateData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchWalkingHeartRateData(startTime: Long, endTime: Long): List<HealthUploadDataPoint> = emptyList()
override fun fetchWalkingHeartRateData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchRestingHeartRateData(startTime: Long, endTime: Long): List<HealthUploadDataPoint> = emptyList()
override fun fetchRestingHeartRateData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchSleepingHeartRateData(startTime: Long, endTime: Long): List<HealthUploadDataPoint> = emptyList()
override fun fetchSleepingHeartRateData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchOxygenSaturationData(startTime: Long, endTime: Long): List<HealthUploadDataPoint> = emptyList()
override fun fetchOxygenSaturationData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchActiveEnergyData(startTime: Long, endTime: Long): List<HealthUploadDataPoint> = emptyList()
override fun fetchActiveEnergyData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchExerciseData(startTime: Long, endTime: Long): List<HealthUploadDataPoint> = emptyList()
override fun fetchExerciseData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchStandData(startTime: Long, endTime: Long): List<HealthUploadDataPoint> = emptyList()
override fun fetchStandData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchStepCountData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchStepCountData(startTime: Long, endTime: Long): List<HealthUploadDataPoint> = emptyList()
override fun fetchSleepData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthSleepUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchSleepData(startTime: Long, endTime: Long): List<HealthSleepUploadDataPoint> = emptyList()
override fun fetchSleepingWristTemperatureData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchSleepingWristTemperatureData(startTime: Long, endTime: Long): List<HealthUploadDataPoint> = emptyList()
override fun fetchRespiratoryRateData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchRespiratoryRateData(startTime: Long, endTime: Long): List<HealthUploadDataPoint> = emptyList()
override fun fetchIrregularHeartRhythmData(
startTime: Long,
endTime: Long,
callback: (Result<List<HealthUploadDataPoint>>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchIrregularHeartRhythmData(startTime: Long, endTime: Long): List<HealthUploadDataPoint> = emptyList()
override fun fetchActivityTargetData(
startTime: Long,
endTime: Long,
callback: (Result<HealthActivityTargetData?>) -> Unit
) {
TODO("Not yet implemented")
}
override fun fetchActivityTargetData(startTime: Long, endTime: Long): HealthActivityTargetData? = null
}
... ...
... ... @@ -4,6 +4,7 @@ import android.content.pm.PackageManager
import android.content.res.Resources
import android.os.Build
import android.webkit.WebSettings
import com.doublefeel.app.pigeon.platform.AppleSignInModel
import com.doublefeel.app.pigeon.platform.PlatformHostApi
import kotlin.math.max
import kotlin.math.min
... ... @@ -54,4 +55,8 @@ class PlatformHostApiImpl(private val application: android.app.Application) : Pl
return "${systemUa.trim()} $customAgent".trim()
}
override fun requestAppleSignIn(callback: (Result<AppleSignInModel?>) -> Unit) {
}
}
... ...
... ... @@ -50,4 +50,8 @@ class WearEngineHostApiImpl(
override fun sendWatchSyncPayload(jsonPayload: String): Boolean {
return sendTextMessage(jsonPayload)
}
override fun pickImageAndRemoveBackground(): String? {
return null
}
}
... ...
... ... @@ -62,7 +62,8 @@ import 'app_localizations_zh.dart';
/// be consistent with the languages listed in the AppLocalizations.supportedLocales
/// property.
abstract class AppLocalizations {
AppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString());
AppLocalizations(String locale)
: localeName = intl.Intl.canonicalizedLocale(locale.toString());
final String localeName;
... ... @@ -70,7 +71,8 @@ abstract class AppLocalizations {
return Localizations.of<AppLocalizations>(context, AppLocalizations);
}
static const LocalizationsDelegate<AppLocalizations> delegate = _AppLocalizationsDelegate();
static const LocalizationsDelegate<AppLocalizations> delegate =
_AppLocalizationsDelegate();
/// A list of this localizations delegate along with the default localizations
/// delegates.
... ... @@ -82,7 +84,8 @@ abstract class AppLocalizations {
/// Additional delegates can be added by appending to this list in
/// MaterialApp. This list does not have to be used at all if a custom list
/// of delegates is preferred or required.
static const List<LocalizationsDelegate<dynamic>> localizationsDelegates = <LocalizationsDelegate<dynamic>>[
static const List<LocalizationsDelegate<dynamic>> localizationsDelegates =
<LocalizationsDelegate<dynamic>>[
delegate,
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
... ... @@ -525,7 +528,8 @@ abstract class AppLocalizations {
///
/// In zh, this message translates to:
/// **'你们现在可以查看彼此的 HRV、压力与睡眠变化,并在对方疲惫时及时送上关心。'**
String get youCanNowViewEachOtherSHrvStressLevelsAndSleepPatternsAndReachOutToCheckInWhenTheOtherPersonSeemsTired;
String
get youCanNowViewEachOtherSHrvStressLevelsAndSleepPatternsAndReachOutToCheckInWhenTheOtherPersonSeemsTired;
/// No description provided for @bindPartnerTitle.
///
... ... @@ -1734,7 +1738,8 @@ abstract class AppLocalizations {
String get dailyActions;
}
class _AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations> {
class _AppLocalizationsDelegate
extends LocalizationsDelegate<AppLocalizations> {
const _AppLocalizationsDelegate();
@override
... ... @@ -1743,25 +1748,25 @@ class _AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations>
}
@override
bool isSupported(Locale locale) => <String>['en', 'zh'].contains(locale.languageCode);
bool isSupported(Locale locale) =>
<String>['en', 'zh'].contains(locale.languageCode);
@override
bool shouldReload(_AppLocalizationsDelegate old) => false;
}
AppLocalizations lookupAppLocalizations(Locale locale) {
// Lookup logic when only language code is specified.
switch (locale.languageCode) {
case 'en': return AppLocalizationsEn();
case 'zh': return AppLocalizationsZh();
case 'en':
return AppLocalizationsEn();
case 'zh':
return AppLocalizationsZh();
}
throw FlutterError(
'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely '
'an issue with the localizations generation tool. Please file an issue '
'on GitHub with a reproducible sample app and the gen-l10n configuration '
'that was used.'
);
'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely '
'an issue with the localizations generation tool. Please file an issue '
'on GitHub with a reproducible sample app and the gen-l10n configuration '
'that was used.');
}
... ...
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
... ... @@ -67,10 +69,12 @@ class AppLocalizationsEn extends AppLocalizations {
String get settings => 'Settings';
@override
String get onboardingIntroTitle => 'DoubleFeel is a health companion app built for Apple Watch';
String get onboardingIntroTitle =>
'DoubleFeel is a health companion app built for Apple Watch';
@override
String get onboardingIntroBody => 'We hope to help you\n<em>notice changes in your mind and body, and help the people who love you</em> see when you are <em>tired or need support</em>';
String get onboardingIntroBody =>
'We hope to help you\n<em>notice changes in your mind and body, and help the people who love you</em> see when you are <em>tired or need support</em>';
@override
String get onboardingStateQuestion => 'Which of these often happens to you?';
... ... @@ -82,16 +86,19 @@ class AppLocalizationsEn extends AppLocalizations {
String get onboardingStateTired => 'I get tired easily';
@override
String get onboardingStatePoorRest => 'I wake up but still do not feel rested';
String get onboardingStatePoorRest =>
'I wake up but still do not feel rested';
@override
String get onboardingStateNeedStimulants => 'I rely on cigarettes, alcohol, coffee, or other stimulants to stay alert';
String get onboardingStateNeedStimulants =>
'I rely on cigarettes, alcohol, coffee, or other stimulants to stay alert';
@override
String get onboardingStateNone => 'None of the above';
@override
String get onboardingStressGoalQuestion => 'What do you want to learn by understanding stress?';
String get onboardingStressGoalQuestion =>
'What do you want to learn by understanding stress?';
@override
String get onboardingStressGoalSource => 'Understand where stress comes from';
... ... @@ -100,7 +107,8 @@ class AppLocalizationsEn extends AppLocalizations {
String get onboardingStressGoalReminder => 'Get reminded when stress appears';
@override
String get onboardingStressGoalLovedOnes => 'Let people who care about me know my stress state';
String get onboardingStressGoalLovedOnes =>
'Let people who care about me know my stress state';
@override
String get onboardingStressGoalRelax => 'Understand stress and feel lighter';
... ... @@ -109,7 +117,8 @@ class AppLocalizationsEn extends AppLocalizations {
String get onboardingStressGoalBodyTalk => 'Communicate better with my body';
@override
String get onboardingReliefQuestion => 'Which methods do you think can ease stress?';
String get onboardingReliefQuestion =>
'Which methods do you think can ease stress?';
@override
String get onboardingReliefSleep => 'Regular sleep';
... ... @@ -133,7 +142,8 @@ class AppLocalizationsEn extends AppLocalizations {
String get onboardingKeyDataTitle => 'Did you know?';
@override
String get onboardingKeyDataSubtitle => 'Everyone has a magical and important body metric that can help us:';
String get onboardingKeyDataSubtitle =>
'Everyone has a magical and important body metric that can help us:';
@override
String get onboardingKeyDataStress => 'Monitor stress';
... ... @@ -148,7 +158,8 @@ class AppLocalizationsEn extends AppLocalizations {
String get onboardingKeyDataHabits => 'Build healthy habits';
@override
String get onboardingKeyDataLovedOnes => 'Help important people care about your state in time';
String get onboardingKeyDataLovedOnes =>
'Help important people care about your state in time';
@override
String get onboardingTellMeWhatItIs => 'Tell me what it is!';
... ... @@ -157,16 +168,19 @@ class AppLocalizationsEn extends AppLocalizations {
String get onboardingHrvTitle => 'It is HRV, heart rate variability';
@override
String get onboardingHrvSubtitle => 'It helps us measure overall stress and health';
String get onboardingHrvSubtitle =>
'It helps us measure overall stress and health';
@override
String get onboardingHrvDescription => 'Heart rate variability (HRV) is the tiny variation in time between heartbeats. It reflects autonomic nervous system activity and how the body responds to stress.';
String get onboardingHrvDescription =>
'Heart rate variability (HRV) is the tiny variation in time between heartbeats. It reflects autonomic nervous system activity and how the body responds to stress.';
@override
String get onboardingTellMeMore => 'Tell me more';
@override
String get onboardingResearchTitle => 'Many studies show that HRV changes are closely related to how our body and mind feel';
String get onboardingResearchTitle =>
'Many studies show that HRV changes are closely related to how our body and mind feel';
@override
String get onboardingResearchFatigue => 'Physical fatigue';
... ... @@ -184,25 +198,30 @@ class AppLocalizationsEn extends AppLocalizations {
String get onboardingHealthPermissionTitle => 'Allow health data access';
@override
String get onboardingHealthPermissionBody => 'DoubleFeel needs connected wearable health data to send reminders, count stress moments, and provide suggestions.';
String get onboardingHealthPermissionBody =>
'DoubleFeel needs connected wearable health data to send reminders, count stress moments, and provide suggestions.';
@override
String get onboardingHealthPermissionPrivacy => 'Your health data is stored locally. We do not upload any related data.';
String get onboardingHealthPermissionPrivacy =>
'Your health data is stored locally. We do not upload any related data.';
@override
String get onboardingNotificationTitle => 'Turn on notifications';
@override
String get onboardingNotificationSubtitle => 'Learn about every body change in time';
String get onboardingNotificationSubtitle =>
'Learn about every body change in time';
@override
String get onboardingNotificationBody => 'After Apple Watch data updates, we can remind you in time and help you act to improve your stress state.';
String get onboardingNotificationBody =>
'After Apple Watch data updates, we can remind you in time and help you act to improve your stress state.';
@override
String get onboardingMemberTitle => 'Get an annual membership offer';
@override
String get onboardingMemberBody => 'Start your pressure alert and health companion journey, so love and care are always present.';
String get onboardingMemberBody =>
'Start your pressure alert and health companion journey, so love and care are always present.';
@override
String get onboardingMemberOriginalPrice => 'Original ¥72.00/year';
... ... @@ -217,13 +236,16 @@ class AppLocalizationsEn extends AppLocalizations {
String get onboardingMemberAllOptions => 'View all purchase options';
@override
String get healthCompanionIsNowAvailable => 'Health Companion is now available';
String get healthCompanionIsNowAvailable =>
'Health Companion is now available';
@override
String get youCanNowViewEachOtherSHrvStressLevelsAndSleepPatternsAndReachOutToCheckInWhenTheOtherPersonSeemsTired => 'You can now view each other\'s HRV, stress levels, and sleep patterns, and reach out to check in when the other person seems tired.';
String get youCanNowViewEachOtherSHrvStressLevelsAndSleepPatternsAndReachOutToCheckInWhenTheOtherPersonSeemsTired =>
'You can now view each other\'s HRV, stress levels, and sleep patterns, and reach out to check in when the other person seems tired.';
@override
String get bindPartnerTitle => 'Add a Close Contact\nOne more person to care about your health';
String get bindPartnerTitle =>
'Add a Close Contact\nOne more person to care about your health';
@override
String get bindPartnerMyId => 'My ID';
... ... @@ -262,7 +284,8 @@ class AppLocalizationsEn extends AppLocalizations {
String get onboardingResearchGoodSleep => 'Good Sleep';
@override
String get loginSlogan => 'Start your pressure alert and health companion journey\nso love and care are always present';
String get loginSlogan =>
'Start your pressure alert and health companion journey\nso love and care are always present';
@override
String get loginWithPhone => 'Sign in with Phone';
... ... @@ -312,13 +335,15 @@ class AppLocalizationsEn extends AppLocalizations {
String get phoneLoginCodeHint => 'Enter verification code';
@override
String get phoneLoginAutoRegisterHint => 'Unregistered numbers will be registered automatically';
String get phoneLoginAutoRegisterHint =>
'Unregistered numbers will be registered automatically';
@override
String get phoneLoginLoggingIn => 'Signing in...';
@override
String get loginAgreeToTermsToast => 'Please read and agree to the Terms of Service and Privacy Policy first';
String get loginAgreeToTermsToast =>
'Please read and agree to the Terms of Service and Privacy Policy first';
@override
String get phoneLoginInvalidPhone => 'Invalid phone number';
... ... @@ -330,10 +355,12 @@ class AppLocalizationsEn extends AppLocalizations {
String get phoneLoginInvalidCode => 'Invalid verification code';
@override
String get todayHealthDataAuthTitle => 'Unable to access heart rate health data';
String get todayHealthDataAuthTitle =>
'Unable to access heart rate health data';
@override
String get todayHealthDataAuthDescription => 'DoubleFeel needs permission to access your health data to provide stress reminders, real-time stress statistics, and health suggestions. Otherwise, some app features may not work properly. Your health data is stored locally only and will not be uploaded to any server.';
String get todayHealthDataAuthDescription =>
'DoubleFeel needs permission to access your health data to provide stress reminders, real-time stress statistics, and health suggestions. Otherwise, some app features may not work properly. Your health data is stored locally only and will not be uploaded to any server.';
@override
String get todayHealthDataAuthAction => 'Authorize health data access';
... ... @@ -354,19 +381,24 @@ class AppLocalizationsEn extends AppLocalizations {
String get todayFaqLinkNoData => 'What if the app or watch face has no data?';
@override
String get todayFaqLinkHrvRealtimeUpdate => 'How can HRV data update in real time?';
String get todayFaqLinkHrvRealtimeUpdate =>
'How can HRV data update in real time?';
@override
String get todayFaqLinkWatchNoStatusNotification => 'Why can\'t my watch receive status notifications?';
String get todayFaqLinkWatchNoStatusNotification =>
'Why can\'t my watch receive status notifications?';
@override
String get todayFaqLinkWatchNoStatusAndInteractionNotification => 'Why can\'t my watch receive status and interaction notifications?';
String get todayFaqLinkWatchNoStatusAndInteractionNotification =>
'Why can\'t my watch receive status and interaction notifications?';
@override
String get todayFaqLinkWatchFaceDataDelay => 'Why is watch face data delayed or not updating?';
String get todayFaqLinkWatchFaceDataDelay =>
'Why is watch face data delayed or not updating?';
@override
String get todayFaqLinkWatchFaceBlackScreen => 'Why does the watch face turn black?';
String get todayFaqLinkWatchFaceBlackScreen =>
'Why does the watch face turn black?';
@override
String get todayStressStatusTitle => 'Overall stress status';
... ... @@ -393,136 +425,176 @@ class AppLocalizationsEn extends AppLocalizations {
String get todayStressStatusInsufficientData => 'Insufficient data';
@override
String get todayStressStatusOverloadDescription => 'Your current HRV is much lower than your long-term average, which may indicate fatigue, high stress, or insufficient recovery. Rest is recommended.';
String get todayStressStatusOverloadDescription =>
'Your current HRV is much lower than your long-term average, which may indicate fatigue, high stress, or insufficient recovery. Rest is recommended.';
@override
String get todayStressStatusCautionDescription => 'Your current HRV is below the normal range, and your body may be accumulating stress. Pay attention to rest and recovery.';
String get todayStressStatusCautionDescription =>
'Your current HRV is below the normal range, and your body may be accumulating stress. Pay attention to rest and recovery.';
@override
String get todayStressStatusNormalDescription => 'Your current body state is within your normal fluctuation range.';
String get todayStressStatusNormalDescription =>
'Your current body state is within your normal fluctuation range.';
@override
String get todayStressStatusExcellentDescription => 'Your current HRV is higher than your recent average, indicating better recovery and overall state.';
String get todayStressStatusExcellentDescription =>
'Your current HRV is higher than your recent average, indicating better recovery and overall state.';
@override
String get todayStressStatusInsufficientDataDescription => 'There is not enough available data to accurately assess your stress state yet.';
String get todayStressStatusInsufficientDataDescription =>
'There is not enough available data to accurately assess your stress state yet.';
@override
String get todayHrvMeasurementIntro => 'Apple Watch measures HRV every 2-5 hours by default. If you want to measure it manually right now, follow these steps:';
String get todayHrvMeasurementIntro =>
'Apple Watch measures HRV every 2-5 hours by default. If you want to measure it manually right now, follow these steps:';
@override
String get todayHrvMeasurementStep1 => '1. Wear your Apple Watch snugly, sit down, and stay calm';
String get todayHrvMeasurementStep1 =>
'1. Wear your Apple Watch snugly, sit down, and stay calm';
@override
String get todayHrvMeasurementStep2 => '2. Open Mindfulness on Apple Watch and start Breathe';
String get todayHrvMeasurementStep2 =>
'2. Open Mindfulness on Apple Watch and start Breathe';
@override
String get todayHrvMeasurementStep3 => '3. Keep breathing steadily and wait 1-3 minutes';
String get todayHrvMeasurementStep3 =>
'3. Keep breathing steadily and wait 1-3 minutes';
@override
String get todayHrvMeasurementStep4 => '4. After breathing is complete, lock and unlock your iPhone once';
String get todayHrvMeasurementStep4 =>
'4. After breathing is complete, lock and unlock your iPhone once';
@override
String get todayHrvMeasurementStep5 => '5. Wait about one minute. StressWatch will receive and display your data';
String get todayHrvMeasurementStep5 =>
'5. Wait about one minute. StressWatch will receive and display your data';
@override
String get todayHrvMeasurementHint => 'Tip: Data comes from Apple Watch. After measurement, there may be delays or data may not sync immediately. If this happens, measure again and wait for the data to be read.';
String get todayHrvMeasurementHint =>
'Tip: Data comes from Apple Watch. After measurement, there may be delays or data may not sync immediately. If this happens, measure again and wait for the data to be read.';
@override
String get todayHrvMeasurementWarning => 'Note: Health permissions must be enabled, and Low Power Mode must be turned off.';
String get todayHrvMeasurementWarning =>
'Note: Health permissions must be enabled, and Low Power Mode must be turned off.';
@override
String get todayStressStatusWhatTitle => 'What is overall stress status?';
@override
String get todayStressStatusWhatDescription1 => 'DoubleFeel combines your HRV (heart rate variability), resting heart rate, and body-state changes from the past 30 days to assess your overall stress level.';
String get todayStressStatusWhatDescription1 =>
'DoubleFeel combines your HRV (heart rate variability), resting heart rate, and body-state changes from the past 30 days to assess your overall stress level.';
@override
String get todayStressStatusWhatDescription2 => 'Because HRV fluctuates with emotions, exercise, sleep, and fatigue, a single reading has limited value. We recommend focusing on your overall stress status across the day, which is more stable and useful. It helps you understand your body state and helps close contacts notice changes in time.';
String get todayStressStatusWhatDescription2 =>
'Because HRV fluctuates with emotions, exercise, sleep, and fatigue, a single reading has limited value. We recommend focusing on your overall stress status across the day, which is more stable and useful. It helps you understand your body state and helps close contacts notice changes in time.';
@override
String get todayStressStatusWhyHrvTitle => 'Why use HRV (heart rate variability)?';
String get todayStressStatusWhyHrvTitle =>
'Why use HRV (heart rate variability)?';
@override
String get todayStressStatusWhyHrvDescription => 'HRV is an important metric for measuring body stress and recovery capacity.';
String get todayStressStatusWhyHrvDescription =>
'HRV is an important metric for measuring body stress and recovery capacity.';
@override
String get todayStressStatusUsually => 'In general:';
@override
String get todayStressStatusHrvHigher => '· Higher HRV usually means better recovery';
String get todayStressStatusHrvHigher =>
'· Higher HRV usually means better recovery';
@override
String get todayStressStatusHrvLower => '· Lower HRV may indicate fatigue, stress, or insufficient sleep';
String get todayStressStatusHrvLower =>
'· Lower HRV may indicate fatigue, stress, or insufficient sleep';
@override
String get todayStressStatusHrvChangesFast => '· HRV changes quickly, making it useful for short-term body-state changes.';
String get todayStressStatusHrvChangesFast =>
'· HRV changes quickly, making it useful for short-term body-state changes.';
@override
String get todayStressStatusAppWatchDifferenceTitle => 'How are stress statuses on the phone app and Apple Watch different?';
String get todayStressStatusAppWatchDifferenceTitle =>
'How are stress statuses on the phone app and Apple Watch different?';
@override
String get todayStressStatusAppWatchDifferenceApp => 'The phone app home page shows the day\'s overall stress status, combining HRV, resting heart rate, and overall trends.';
String get todayStressStatusAppWatchDifferenceApp =>
'The phone app home page shows the day\'s overall stress status, combining HRV, resting heart rate, and overall trends.';
@override
String get todayStressStatusAppWatchDifferenceWatch => 'Apple Watch shows the most recent real-time stress status, which is better for quickly checking your current body changes.';
String get todayStressStatusAppWatchDifferenceWatch =>
'Apple Watch shows the most recent real-time stress status, which is better for quickly checking your current body changes.';
@override
String get todayStressStatusWaitingDataTitle => 'Why does Waiting for data appear?';
String get todayStressStatusWaitingDataTitle =>
'Why does Waiting for data appear?';
@override
String get todayStressStatusWaitingDataDescription1 => 'Waiting for data means the current amount of collected data is not enough to generate a reliable stress assessment.';
String get todayStressStatusWaitingDataDescription1 =>
'Waiting for data means the current amount of collected data is not enough to generate a reliable stress assessment.';
@override
String get todayStressStatusWaitingDataDescription2 => 'Please keep wearing your Apple Watch and wait for the system to collect data automatically.';
String get todayStressStatusWaitingDataDescription2 =>
'Please keep wearing your Apple Watch and wait for the system to collect data automatically.';
@override
String get todayStressStatusWaitingDataReasonsIntro => 'Possible reasons include:';
String get todayStressStatusWaitingDataReasonsIntro =>
'Possible reasons include:';
@override
String get todayStressStatusWaitingDataReason1 => '1. Not enough HRV samples';
@override
String get todayStressStatusWaitingDataReason2 => '2. Missing resting heart rate data';
String get todayStressStatusWaitingDataReason2 =>
'2. Missing resting heart rate data';
@override
String get todayStressStatusWaitingDataReason3 => '3. Apple Watch has not been worn long enough';
String get todayStressStatusWaitingDataReason3 =>
'3. Apple Watch has not been worn long enough';
@override
String get todayStressStatusWaitingDataReason4 => '4. Apple Health permissions are not enabled';
String get todayStressStatusWaitingDataReason4 =>
'4. Apple Health permissions are not enabled';
@override
String get todayHrvPrincipleHowMeasureTitle => 'How does DoubleFeel measure stress status?';
String get todayHrvPrincipleHowMeasureTitle =>
'How does DoubleFeel measure stress status?';
@override
String get todayHrvPrincipleHowMeasureDescription1 => 'When you wear Apple Watch normally, the system automatically collects your heart rate data and syncs it to Apple Health.';
String get todayHrvPrincipleHowMeasureDescription1 =>
'When you wear Apple Watch normally, the system automatically collects your heart rate data and syncs it to Apple Health.';
@override
String get todayHrvPrincipleHowMeasureDescription2 => 'DoubleFeel calculates HRV (heart rate variability) indicators based on this data to assess your body stress and recovery state.';
String get todayHrvPrincipleHowMeasureDescription2 =>
'DoubleFeel calculates HRV (heart rate variability) indicators based on this data to assess your body stress and recovery state.';
@override
String get todayHrvPrincipleHowMeasureDescription3 => 'HRV is sensitive to stress, fatigue, sleep, emotions, and recovery, so it helps us notice body-state changes earlier.';
String get todayHrvPrincipleHowMeasureDescription3 =>
'HRV is sensitive to stress, fatigue, sleep, emotions, and recovery, so it helps us notice body-state changes earlier.';
@override
String get todayHrvPrincipleHowMeasureDescription4 => 'To make results more accurate, DoubleFeel compares your current HRV state with your own 30-day average instead of comparing it directly with other people.';
String get todayHrvPrincipleHowMeasureDescription4 =>
'To make results more accurate, DoubleFeel compares your current HRV state with your own 30-day average instead of comparing it directly with other people.';
@override
String get todayRealtimeStressWhatTitle => 'What is real-time stress?';
@override
String get todayRealtimeStressWhatDescription1 => 'Real-time stress is a body stress indicator dynamically generated by DoubleFeel based on your current HRV, heart rate state, and changes in your personal history.';
String get todayRealtimeStressWhatDescription1 =>
'Real-time stress is a body stress indicator dynamically generated by DoubleFeel based on your current HRV, heart rate state, and changes in your personal history.';
@override
String get todayRealtimeStressWhatDescription2 => 'A higher stress value means your body state is deviating more from your usual baseline and may reflect fatigue, insufficient recovery, or high stress.';
String get todayRealtimeStressWhatDescription2 =>
'A higher stress value means your body state is deviating more from your usual baseline and may reflect fatigue, insufficient recovery, or high stress.';
@override
String get todayRealtimeStressWhatDescription3 => 'It helps you notice body changes faster and adjust rest, exercise, and daily rhythm in time.';
String get todayRealtimeStressWhatDescription3 =>
'It helps you notice body changes faster and adjust rest, exercise, and daily rhythm in time.';
@override
String get todayRealtimeStressDivisionTitle => 'How is real-time stress divided?';
String get todayRealtimeStressDivisionTitle =>
'How is real-time stress divided?';
@override
String get todayRealtimeStressDivisionIntro => 'Real-time stress is shown as a percentage:';
String get todayRealtimeStressDivisionIntro =>
'Real-time stress is shown as a percentage:';
@override
String get todayRealtimeStressExcellentRange => 'Excellent: 1%-20%';
... ... @@ -537,79 +609,103 @@ class AppLocalizationsEn extends AppLocalizations {
String get todayRealtimeStressOverloadRange => 'Stress overload: 81%-100%';
@override
String get todayRealtimeStressExcellentDescription => 'Your recovery state is good and you are generally relaxed.';
String get todayRealtimeStressExcellentDescription =>
'Your recovery state is good and you are generally relaxed.';
@override
String get todayRealtimeStressNormalDescription => 'Your body is within the normal fluctuation range.';
String get todayRealtimeStressNormalDescription =>
'Your body is within the normal fluctuation range.';
@override
String get todayRealtimeStressCautionDescription => 'Your body may be accumulating stress and needs proper rest and recovery.';
String get todayRealtimeStressCautionDescription =>
'Your body may be accumulating stress and needs proper rest and recovery.';
@override
String get todayRealtimeStressOverloadDescription => 'Your body stress is clearly high. Reduce load and pay attention to sleep and recovery.';
String get todayRealtimeStressOverloadDescription =>
'Your body stress is clearly high. Reduce load and pay attention to sleep and recovery.';
@override
String get todayRealtimeStressDivisionBaseline => 'These ranges are adjusted dynamically based on your personal baseline and should not be directly compared between users.';
String get todayRealtimeStressDivisionBaseline =>
'These ranges are adjusted dynamically based on your personal baseline and should not be directly compared between users.';
@override
String get todayRealtimeStressDivisionAwake => 'Real-time stress mainly reflects body stress changes while awake.';
String get todayRealtimeStressDivisionAwake =>
'Real-time stress mainly reflects body stress changes while awake.';
@override
String get todayRealtimeStressLowBetterTitle => 'Is lower real-time stress always better?';
String get todayRealtimeStressLowBetterTitle =>
'Is lower real-time stress always better?';
@override
String get todayRealtimeStressLowBetterNo => 'Not necessarily.';
@override
String get todayRealtimeStressLowBetterType => 'Body stress can be normal or abnormal.';
String get todayRealtimeStressLowBetterType =>
'Body stress can be normal or abnormal.';
@override
String get todayRealtimeStressLowBetterExample => 'For example, real-time stress rising briefly during or after exercise is a normal recovery response. It can also rise temporarily during focused work or emotional excitement, which are normal body adjustments.';
String get todayRealtimeStressLowBetterExample =>
'For example, real-time stress rising briefly during or after exercise is a normal recovery response. It can also rise temporarily during focused work or emotional excitement, which are normal body adjustments.';
@override
String get todayRealtimeStressLowBetterHighStress => 'But if stress remains high while resting, sitting for a long time, or after poor sleep, it may indicate physical fatigue, mental stress, insufficient sleep recovery, incomplete exercise recovery, too much caffeine, alcohol, stimulants, or possible discomfort.';
String get todayRealtimeStressLowBetterHighStress =>
'But if stress remains high while resting, sitting for a long time, or after poor sleep, it may indicate physical fatigue, mental stress, insufficient sleep recovery, incomplete exercise recovery, too much caffeine, alcohol, stimulants, or possible discomfort.';
@override
String get todayRealtimeStressLowBetterTrend => 'DoubleFeel focuses more on your long-term trend than on a single fluctuation.';
String get todayRealtimeStressLowBetterTrend =>
'DoubleFeel focuses more on your long-term trend than on a single fluctuation.';
@override
String get todayRealtimeStressScenarioTitle => 'When should HRV and real-time stress be used?';
String get todayRealtimeStressScenarioTitle =>
'When should HRV and real-time stress be used?';
@override
String get todayRealtimeStressScenarioHrvDefault => 'With Apple Watch default settings, HRV updates every 2-5 hours.';
String get todayRealtimeStressScenarioHrvDefault =>
'With Apple Watch default settings, HRV updates every 2-5 hours.';
@override
String get todayRealtimeStressScenarioRegionLimit => 'In some regions, Apple Watch breathing features may be limited, which can affect HRV update frequency. Turning on breathing features may also consume more battery.';
String get todayRealtimeStressScenarioRegionLimit =>
'In some regions, Apple Watch breathing features may be limited, which can affect HRV update frequency. Turning on breathing features may also consume more battery.';
@override
String get todayRealtimeStressScenarioIntro => 'To address the long interval between HRV updates, DoubleFeel designed real-time stress:';
String get todayRealtimeStressScenarioIntro =>
'To address the long interval between HRV updates, DoubleFeel designed real-time stress:';
@override
String get todayRealtimeStressScenarioUpdateEvery6Min => '· Real-time stress updates every 6 minutes';
String get todayRealtimeStressScenarioUpdateEvery6Min =>
'· Real-time stress updates every 6 minutes';
@override
String get todayRealtimeStressScenarioTimely => '· It can reflect body-state changes more promptly';
String get todayRealtimeStressScenarioTimely =>
'· It can reflect body-state changes more promptly';
@override
String get todayRealtimeStressScenarioConsistentTrend => '· In most cases, the real-time stress trend is consistent with the HRV trend';
String get todayRealtimeStressScenarioConsistentTrend =>
'· In most cases, the real-time stress trend is consistent with the HRV trend';
@override
String get todayRealtimeStressScenarioSummary => 'This lets users see long-term HRV trends while also using real-time stress as a short-term body-state reference.';
String get todayRealtimeStressScenarioSummary =>
'This lets users see long-term HRV trends while also using real-time stress as a short-term body-state reference.';
@override
String get todayFaqNoDataTitle => 'What if the app or watch face has no data?';
String get todayFaqNoDataTitle =>
'What if the app or watch face has no data?';
@override
String get todayFaqNoDataDescription1 => '1. Confirm that Apple Watch is on watchOS 10.0 or above and iPhone is on iOS 14 or above. You can check system versions in About.';
String get todayFaqNoDataDescription1 =>
'1. Confirm that Apple Watch is on watchOS 10.0 or above and iPhone is on iOS 14 or above. You can check system versions in About.';
@override
String get todayFaqNoDataDescription2 => '2. Confirm all permissions are enabled: iPhone Health > Sharing > Apps > DoubleFeel > Turn On All Permissions.';
String get todayFaqNoDataDescription2 =>
'2. Confirm all permissions are enabled: iPhone Health > Sharing > Apps > DoubleFeel > Turn On All Permissions.';
@override
String get todayFaqNoDataDescription3 => '3. Confirm the device is not in Low Power Mode, low battery, or worn too loosely, as these can affect data collection.';
String get todayFaqNoDataDescription3 =>
'3. Confirm the device is not in Low Power Mode, low battery, or worn too loosely, as these can affect data collection.';
@override
String get todayFaqContactPrefix => 'If everything above is correct, you can ';
String get todayFaqContactPrefix =>
'If everything above is correct, you can ';
@override
String get todayFaqContactAction => 'contact us';
... ... @@ -618,70 +714,90 @@ class AppLocalizationsEn extends AppLocalizations {
String get todayFaqContactSuffix => '.';
@override
String get todayFaqWatchNoNotificationTitle => 'Watch cannot receive status notifications?';
String get todayFaqWatchNoNotificationTitle =>
'Watch cannot receive status notifications?';
@override
String get todayFaqWatchNoNotificationDescription1 => 'Apple Watch and iPhone notifications have priority rules: when your iPhone is unlocked and the screen is on, notifications only appear on the phone and will not appear on the watch.';
String get todayFaqWatchNoNotificationDescription1 =>
'Apple Watch and iPhone notifications have priority rules: when your iPhone is unlocked and the screen is on, notifications only appear on the phone and will not appear on the watch.';
@override
String get todayFaqWatchNoNotificationDescription2 => 'If stress data displays and updates normally but your watch does not receive notifications, try the following:';
String get todayFaqWatchNoNotificationDescription2 =>
'If stress data displays and updates normally but your watch does not receive notifications, try the following:';
@override
String get todayFaqWatchNoNotificationCheckPhoneNotification => '1. Check whether iPhone notifications are enabled (Settings > DoubleFeel > Notifications).';
String get todayFaqWatchNoNotificationCheckPhoneNotification =>
'1. Check whether iPhone notifications are enabled (Settings > DoubleFeel > Notifications).';
@override
String get todayFaqWatchNoNotificationCheckPhoneBackgroundRefresh => '2. Check whether iPhone Background App Refresh is enabled (Settings > DoubleFeel > Background App Refresh).';
String get todayFaqWatchNoNotificationCheckPhoneBackgroundRefresh =>
'2. Check whether iPhone Background App Refresh is enabled (Settings > DoubleFeel > Background App Refresh).';
@override
String get todayFaqWatchNoNotificationCheckWatchBackgroundRefresh => '3. Check whether Apple Watch Background App Refresh is enabled (Settings > General > Background App Refresh, and make sure DoubleFeel is enabled).';
String get todayFaqWatchNoNotificationCheckWatchBackgroundRefresh =>
'3. Check whether Apple Watch Background App Refresh is enabled (Settings > General > Background App Refresh, and make sure DoubleFeel is enabled).';
@override
String get todayFaqWatchNoNotificationCheckModes => '4. Make sure Low Power, Focus, Do Not Disturb, Theater, Sleep, and similar modes are off.';
String get todayFaqWatchNoNotificationCheckModes =>
'4. Make sure Low Power, Focus, Do Not Disturb, Theater, Sleep, and similar modes are off.';
@override
String get todayFaqWatchNoNotificationReinstall => '5. Reinstall DoubleFeel and restart Apple Watch and iPhone.';
String get todayFaqWatchNoNotificationReinstall =>
'5. Reinstall DoubleFeel and restart Apple Watch and iPhone.';
@override
String get todayFaqWatchFaceDelayTitle => 'Watch face data not updating or delayed?';
String get todayFaqWatchFaceDelayTitle =>
'Watch face data not updating or delayed?';
@override
String get todayFaqWatchFaceDelayDescription1 => 'Due to Apple system limits, all watch faces, third-party or official, may have delays from a few minutes to half an hour. Developers cannot control the refresh frequency.';
String get todayFaqWatchFaceDelayDescription1 =>
'Due to Apple system limits, all watch faces, third-party or official, may have delays from a few minutes to half an hour. Developers cannot control the refresh frequency.';
@override
String get todayFaqWatchFaceDelayIfOverOneHour => 'If the phone data refreshes but the watch face still has not updated after more than 1 hour:';
String get todayFaqWatchFaceDelayIfOverOneHour =>
'If the phone data refreshes but the watch face still has not updated after more than 1 hour:';
@override
String get todayFaqWatchFaceDelayOpenWatchApp => 'Manually open DoubleFeel on Apple Watch and wait about 1 minute.';
String get todayFaqWatchFaceDelayOpenWatchApp =>
'Manually open DoubleFeel on Apple Watch and wait about 1 minute.';
@override
String get todayFaqWatchFaceDelayIfStill => 'If it still does not update:';
@override
String get todayFaqWatchFaceDelayRestartApp => 'Close the DoubleFeel background process and restart it.';
String get todayFaqWatchFaceDelayRestartApp =>
'Close the DoubleFeel background process and restart it.';
@override
String get todayFaqWatchFaceDelayCheckIntro => 'If it still does not work, check:';
String get todayFaqWatchFaceDelayCheckIntro =>
'If it still does not work, check:';
@override
String get todayFaqWatchFaceDelayCheckData => '· Whether both phone and watch apps can show HRV data normally.';
String get todayFaqWatchFaceDelayCheckData =>
'· Whether both phone and watch apps can show HRV data normally.';
@override
String get todayFaqWatchFaceDelayCheckPhoneHealth => '· Make sure all permissions are enabled on iPhone: iOS Settings > Privacy & Security > Health > DoubleFeel.';
String get todayFaqWatchFaceDelayCheckPhoneHealth =>
'· Make sure all permissions are enabled on iPhone: iOS Settings > Privacy & Security > Health > DoubleFeel.';
@override
String get todayFaqWatchFaceDelayCheckWatchHealth => '· Make sure all permissions are enabled on Apple Watch: Settings > Health > Data Sources & Access > DoubleFeel.';
String get todayFaqWatchFaceDelayCheckWatchHealth =>
'· Make sure all permissions are enabled on Apple Watch: Settings > Health > Data Sources & Access > DoubleFeel.';
@override
String get todayFaqWatchFaceDelayCheckBackgroundRefresh => '· Confirm DoubleFeel is enabled in Apple Watch > Settings > General > Background App Refresh.';
String get todayFaqWatchFaceDelayCheckBackgroundRefresh =>
'· Confirm DoubleFeel is enabled in Apple Watch > Settings > General > Background App Refresh.';
@override
String get todayFaqWatchFaceDelayRestartWatch => '· If it still does not refresh automatically, restart Apple Watch. Long runtimes or high background usage may cause watch face updates to pause.';
String get todayFaqWatchFaceDelayRestartWatch =>
'· If it still does not refresh automatically, restart Apple Watch. Long runtimes or high background usage may cause watch face updates to pause.';
@override
String get todayFaqWatchFaceBlackScreenTitle => 'Watch face turns black?';
@override
String get todayFaqWatchFaceBlackScreenDescription => 'If the custom interactive watch face turns black after being added and only shows time and date, long-press the watch face, tap Edit, swipe left to Complications, choose DoubleFeel, and add each component again as needed.';
String get todayFaqWatchFaceBlackScreenDescription =>
'If the custom interactive watch face turns black after being added and only shows time and date, long-press the watch face, tap Edit, swipe left to Complications, choose DoubleFeel, and add each component again as needed.';
@override
String get today => 'Today';
... ... @@ -699,16 +815,19 @@ class AppLocalizationsEn extends AppLocalizations {
String get allPlans => 'All Plans';
@override
String get clickToAddTheHrvThemedWatchFace => 'Click to add the HRV-themed watch face';
String get clickToAddTheHrvThemedWatchFace =>
'Click to add the HRV-themed watch face';
@override
String get stayOnTopOfYourHealthFluctuations => 'Stay on top of your health fluctuations';
String get stayOnTopOfYourHealthFluctuations =>
'Stay on top of your health fluctuations';
@override
String get addACloseContact => 'Add a close contact';
@override
String get oneMorePersonLookingOutForYourHealth => 'One more person looking out for your health';
String get oneMorePersonLookingOutForYourHealth =>
'One more person looking out for your health';
@override
String get addAFriend => 'Add a friend';
... ... @@ -765,7 +884,8 @@ class AppLocalizationsEn extends AppLocalizations {
String get questionsAndFeedback => 'Questions and Feedback';
@override
String get ifYouWouldLikeUsToReplyPleaseProvideYourEmailAddress => 'If you would like us to reply, please provide your email address';
String get ifYouWouldLikeUsToReplyPleaseProvideYourEmailAddress =>
'If you would like us to reply, please provide your email address';
@override
String get uploadProof => 'Upload Proof';
... ... @@ -774,7 +894,8 @@ class AppLocalizationsEn extends AppLocalizations {
String get frequentlyAskedQuestions => 'Frequently Asked Questions';
@override
String get areYouSureYouWantToDeleteYourAccount => 'Are you sure you want to delete your account?';
String get areYouSureYouWantToDeleteYourAccount =>
'Are you sure you want to delete your account?';
@override
String get accountSettings => 'Account Settings';
... ...
... ... @@ -133,10 +133,10 @@ packages:
dependency: transitive
description:
name: characters
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.0"
checked_yaml:
dependency: transitive
description:
... ... @@ -149,10 +149,10 @@ packages:
dependency: transitive
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
url: "https://pub.dev"
source: hosted
version: "1.1.1"
version: "1.1.2"
code_builder:
dependency: transitive
description:
... ... @@ -165,10 +165,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
url: "https://pub.dev"
source: hosted
version: "1.19.0"
version: "1.19.1"
convert:
dependency: transitive
description:
... ... @@ -237,10 +237,10 @@ packages:
dependency: transitive
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
version: "1.3.3"
ffi:
dependency: transitive
description:
... ... @@ -426,7 +426,7 @@ packages:
dependency: transitive
description:
path: image_cropper_for_web
ref: "br_v9.1.0_ohos"
ref: "65c2c99891882ea59732959a672f3d5993a837bb"
resolved-ref: "65c2c99891882ea59732959a672f3d5993a837bb"
url: "https://gitcode.com/openharmony-sig/fluttertpc_image_cropper.git"
source: git
... ... @@ -435,7 +435,7 @@ packages:
dependency: transitive
description:
path: image_cropper_platform_interface
ref: "br_v9.1.0_ohos"
ref: "65c2c99891882ea59732959a672f3d5993a837bb"
resolved-ref: "65c2c99891882ea59732959a672f3d5993a837bb"
url: "https://gitcode.com/openharmony-sig/fluttertpc_image_cropper.git"
source: git
... ... @@ -517,10 +517,10 @@ packages:
dependency: "direct main"
description:
name: intl
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
url: "https://pub.dev"
source: hosted
version: "0.19.0"
version: "0.20.2"
io:
dependency: transitive
description:
... ... @@ -549,26 +549,26 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
url: "https://pub.dev"
source: hosted
version: "10.0.7"
version: "11.0.2"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
url: "https://pub.dev"
source: hosted
version: "3.0.8"
version: "3.0.10"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
version: "3.0.2"
lints:
dependency: transitive
description:
... ... @@ -597,10 +597,10 @@ packages:
dependency: transitive
description:
name: matcher
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
url: "https://pub.dev"
source: hosted
version: "0.12.16+1"
version: "0.12.17"
material_color_utilities:
dependency: transitive
description:
... ... @@ -613,10 +613,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
url: "https://pub.dev"
source: hosted
version: "1.15.0"
version: "1.17.0"
mime:
dependency: transitive
description:
... ... @@ -645,10 +645,10 @@ packages:
dependency: transitive
description:
name: path
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.dev"
source: hosted
version: "1.9.0"
version: "1.9.1"
path_provider:
dependency: transitive
description:
... ... @@ -966,18 +966,18 @@ packages:
dependency: transitive
description:
name: stack_trace
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.12.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.4"
stream_transform:
dependency: transitive
description:
... ... @@ -1006,10 +1006,10 @@ packages:
dependency: "direct main"
description:
name: table_calendar
sha256: b2896b7c86adf3a4d9c911d860120fe3dbe03c85db43b22fd61f14ee78cdbb63
sha256: "0c0c6219878b363a2d5f40c7afb159d845f253d061dc3c822aa0d5fe0f721982"
url: "https://pub.dev"
source: hosted
version: "3.1.3"
version: "3.2.0"
term_glyph:
dependency: transitive
description:
... ... @@ -1022,10 +1022,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
url: "https://pub.dev"
source: hosted
version: "0.7.3"
version: "0.7.7"
timing:
dependency: transitive
description:
... ... @@ -1054,10 +1054,10 @@ packages:
dependency: transitive
description:
name: vector_math
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
url: "https://pub.dev"
source: hosted
version: "2.1.4"
version: "2.2.0"
vm_service:
dependency: transitive
description:
... ... @@ -1111,8 +1111,8 @@ packages:
dependency: transitive
description:
path: "packages/webview_flutter/webview_flutter_android"
ref: "br_webview_flutter-v4.13.0_ohos"
resolved-ref: ecd3d0b6195945ee0660c324d45f1acbc6198cc3
ref: de942e79c9057b32ad31106508bd87c0d60aef83
resolved-ref: de942e79c9057b32ad31106508bd87c0d60aef83
url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
source: git
version: "4.7.0"
... ... @@ -1120,8 +1120,8 @@ packages:
dependency: transitive
description:
path: "packages/webview_flutter/webview_flutter_ohos"
ref: "br_webview_flutter-v4.13.0_ohos"
resolved-ref: ecd3d0b6195945ee0660c324d45f1acbc6198cc3
ref: de942e79c9057b32ad31106508bd87c0d60aef83
resolved-ref: de942e79c9057b32ad31106508bd87c0d60aef83
url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
source: git
version: "4.7.0"
... ... @@ -1129,8 +1129,8 @@ packages:
dependency: transitive
description:
path: "packages/webview_flutter/webview_flutter_platform_interface"
ref: "br_webview_flutter-v4.13.0_ohos"
resolved-ref: ecd3d0b6195945ee0660c324d45f1acbc6198cc3
ref: de942e79c9057b32ad31106508bd87c0d60aef83
resolved-ref: de942e79c9057b32ad31106508bd87c0d60aef83
url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
source: git
version: "2.13.1"
... ... @@ -1138,8 +1138,8 @@ packages:
dependency: transitive
description:
path: "packages/webview_flutter/webview_flutter_wkwebview"
ref: "br_webview_flutter-v4.13.0_ohos"
resolved-ref: ecd3d0b6195945ee0660c324d45f1acbc6198cc3
ref: de942e79c9057b32ad31106508bd87c0d60aef83
resolved-ref: de942e79c9057b32ad31106508bd87c0d60aef83
url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
source: git
version: "3.22.0"
... ... @@ -1160,5 +1160,5 @@ packages:
source: hosted
version: "3.1.3"
sdks:
dart: ">=3.6.2 <4.0.0"
dart: ">=3.8.0-0 <4.0.0"
flutter: ">=3.27.0"
... ...