minor improvements

This commit is contained in:
Yoshi 2023-10-10 12:54:55 +03:00
parent e39177e9e7
commit 613512ef86
8 changed files with 234 additions and 124 deletions

View file

@ -25,6 +25,7 @@ An application for viewing the weather
- Выбор между градусами Цельсия и Фаренгейта
- Выбор между форматом времени 12 и 24-часовым
- Уведомления
- Виджет
Также мы постарались сделать дизайн максимально удобным и красивым. -->
@ -43,6 +44,7 @@ The following options are provided:
- Choose between Celsius and Fahrenheit
- Choosing between 12-hour and 24-hour time formats
- Notifications
- Widget
We also tried to make the design as convenient and beautiful as possible.

View file

@ -89,7 +89,7 @@ flutter {
dependencies {
implementation "androidx.core:core-remoteviews:1.0.0"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
// Remove this for FLOSS version

View file

@ -21,8 +21,6 @@ allprojects {
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}

View file

@ -79,7 +79,8 @@ class _WeatherPageState extends State<WeatherPage> {
child: SizedBox(
height: 136,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 5),
padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 5),
child: ScrollablePositionedList.separated(
key: const PageStorageKey(0),
physics: const AlwaysScrollableScrollPhysics(),
@ -91,7 +92,8 @@ class _WeatherPageState extends State<WeatherPage> {
);
},
scrollDirection: Axis.horizontal,
itemScrollController: weatherController.itemScrollController,
itemScrollController:
weatherController.itemScrollController,
itemCount: mainWeather.time!.length,
itemBuilder: (ctx, i) {
final i24 = (i / 24).floor();
@ -109,8 +111,10 @@ class _WeatherPageState extends State<WeatherPage> {
vertical: 5,
),
decoration: BoxDecoration(
color:
i == hourOfDay ? context.theme.colorScheme.primaryContainer : Colors.transparent,
color: i == hourOfDay
? context
.theme.colorScheme.primaryContainer
: Colors.transparent,
borderRadius: const BorderRadius.all(
Radius.circular(20),
),

View file

@ -88,13 +88,18 @@ class _SettingsPageState extends State<SettingsPage> {
text: 'theme'.tr,
dropdown: true,
dropdownName: settings.theme?.tr,
dropdownList: <String>['system'.tr, 'dark'.tr, 'light'.tr],
dropdownList: <String>[
'system'.tr,
'dark'.tr,
'light'.tr
],
dropdownCange: (String? newValue) {
ThemeMode themeMode = newValue?.tr == 'system'.tr
? ThemeMode.system
: newValue?.tr == 'dark'.tr
? ThemeMode.dark
: ThemeMode.light;
ThemeMode themeMode =
newValue?.tr == 'system'.tr
? ThemeMode.system
: newValue?.tr == 'dark'.tr
? ThemeMode.dark
: ThemeMode.light;
String theme = newValue?.tr == 'system'.tr
? 'system'
: newValue?.tr == 'dark'.tr
@ -113,7 +118,8 @@ class _SettingsPageState extends State<SettingsPage> {
value: settings.amoledTheme,
onChange: (value) {
themeController.saveOledTheme(value);
MyApp.updateAppState(context, newAmoledTheme: value);
MyApp.updateAppState(context,
newAmoledTheme: value);
},
),
SettingCard(
@ -124,7 +130,8 @@ class _SettingsPageState extends State<SettingsPage> {
value: settings.materialColor,
onChange: (value) {
themeController.saveMaterialTheme(value);
MyApp.updateAppState(context, newMaterialColor: value);
MyApp.updateAppState(context,
newMaterialColor: value);
},
),
const SizedBox(height: 10),
@ -168,7 +175,8 @@ class _SettingsPageState extends State<SettingsPage> {
value: settings.location,
onChange: (value) async {
if (value) {
bool serviceEnabled = await Geolocator.isLocationServiceEnabled();
bool serviceEnabled = await Geolocator
.isLocationServiceEnabled();
if (!serviceEnabled) {
if (!mounted) return;
await showAdaptiveDialog(
@ -179,21 +187,31 @@ class _SettingsPageState extends State<SettingsPage> {
'location'.tr,
style: context.textTheme.titleLarge,
),
content: Text('no_location'.tr, style: context.textTheme.titleMedium),
content: Text('no_location'.tr,
style: context
.textTheme.titleMedium),
actions: [
TextButton(
onPressed: () => Get.back(result: false),
onPressed: () =>
Get.back(result: false),
child: Text('cancel'.tr,
style: context.theme.textTheme.titleMedium
?.copyWith(color: Colors.blueAccent))),
style: context.theme
.textTheme.titleMedium
?.copyWith(
color: Colors
.blueAccent))),
TextButton(
onPressed: () {
Geolocator.openLocationSettings();
Geolocator
.openLocationSettings();
Get.back(result: true);
},
child: Text('settings'.tr,
style: context.theme.textTheme.titleMedium
?.copyWith(color: Colors.green))),
style: context.theme
.textTheme.titleMedium
?.copyWith(
color:
Colors.green))),
],
);
},
@ -217,15 +235,19 @@ class _SettingsPageState extends State<SettingsPage> {
switcher: true,
value: settings.notifications,
onChange: (value) async {
final resultExact = await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation<AndroidFlutterLocalNotificationsPlugin>()
?.requestExactAlarmsPermission();
final resultExact =
await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>()
?.requestExactAlarmsPermission();
final result = Platform.isIOS
? await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation<IOSFlutterLocalNotificationsPlugin>()
.resolvePlatformSpecificImplementation<
IOSFlutterLocalNotificationsPlugin>()
?.requestPermissions()
: await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation<AndroidFlutterLocalNotificationsPlugin>()
.resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>()
?.requestNotificationsPermission();
if (result != null && resultExact != null) {
isar.writeTxnSync(() {
@ -233,7 +255,8 @@ class _SettingsPageState extends State<SettingsPage> {
isar.settings.putSync(settings);
});
if (value) {
weatherController.notlification(weatherController.mainWeather);
weatherController.notlification(
weatherController.mainWeather);
} else {
flutterLocalNotificationsPlugin.cancelAll();
}
@ -259,10 +282,12 @@ class _SettingsPageState extends State<SettingsPage> {
settings.timeRange = int.parse(newValue!);
isar.settings.putSync(settings);
});
MyApp.updateAppState(context, newTimeRange: int.parse(newValue!));
MyApp.updateAppState(context,
newTimeRange: int.parse(newValue!));
if (settings.notifications) {
flutterLocalNotificationsPlugin.cancelAll();
weatherController.notlification(weatherController.mainWeather);
weatherController.notlification(
weatherController.mainWeather);
}
},
),
@ -273,18 +298,27 @@ class _SettingsPageState extends State<SettingsPage> {
info: true,
infoSettings: true,
textInfo: settings.timeformat == '12'
? DateFormat.jm().format(
DateFormat.Hm().parse(weatherController.timeConvert(timeStart).format(context)))
: DateFormat.Hm().format(
DateFormat.Hm().parse(weatherController.timeConvert(timeStart).format(context))),
? DateFormat.jm().format(DateFormat.Hm()
.parse(weatherController
.timeConvert(timeStart)
.format(context)))
: DateFormat.Hm().format(DateFormat.Hm()
.parse(weatherController
.timeConvert(timeStart)
.format(context))),
onPressed: () async {
final TimeOfDay? timeStartPicker = await showTimePicker(
final TimeOfDay? timeStartPicker =
await showTimePicker(
context: context,
initialTime: weatherController.timeConvert(timeStart),
initialTime:
weatherController.timeConvert(timeStart),
builder: (context, child) {
final Widget mediaQueryWrapper = MediaQuery(
data: MediaQuery.of(context).copyWith(
alwaysUse24HourFormat: settings.timeformat == '12' ? false : true,
alwaysUse24HourFormat:
settings.timeformat == '12'
? false
: true,
),
child: child!,
);
@ -293,14 +327,18 @@ class _SettingsPageState extends State<SettingsPage> {
);
if (timeStartPicker != null) {
isar.writeTxnSync(() {
settings.timeStart = timeStartPicker.format(context);
settings.timeStart =
timeStartPicker.format(context);
isar.settings.putSync(settings);
});
if (!mounted) return;
MyApp.updateAppState(context, newTimeStart: timeStartPicker.format(context));
MyApp.updateAppState(context,
newTimeStart:
timeStartPicker.format(context));
if (settings.notifications) {
flutterLocalNotificationsPlugin.cancelAll();
weatherController.notlification(weatherController.mainWeather);
weatherController.notlification(
weatherController.mainWeather);
}
}
},
@ -312,18 +350,27 @@ class _SettingsPageState extends State<SettingsPage> {
info: true,
infoSettings: true,
textInfo: settings.timeformat == '12'
? DateFormat.jm().format(
DateFormat.Hm().parse(weatherController.timeConvert(timeEnd).format(context)))
: DateFormat.Hm().format(
DateFormat.Hm().parse(weatherController.timeConvert(timeEnd).format(context))),
? DateFormat.jm().format(DateFormat.Hm()
.parse(weatherController
.timeConvert(timeEnd)
.format(context)))
: DateFormat.Hm().format(DateFormat.Hm()
.parse(weatherController
.timeConvert(timeEnd)
.format(context))),
onPressed: () async {
final TimeOfDay? timeEndPicker = await showTimePicker(
final TimeOfDay? timeEndPicker =
await showTimePicker(
context: context,
initialTime: weatherController.timeConvert(timeEnd),
initialTime:
weatherController.timeConvert(timeEnd),
builder: (context, child) {
final Widget mediaQueryWrapper = MediaQuery(
data: MediaQuery.of(context).copyWith(
alwaysUse24HourFormat: settings.timeformat == '12' ? false : true,
alwaysUse24HourFormat:
settings.timeformat == '12'
? false
: true,
),
child: child!,
);
@ -332,14 +379,18 @@ class _SettingsPageState extends State<SettingsPage> {
);
if (timeEndPicker != null) {
isar.writeTxnSync(() {
settings.timeEnd = timeEndPicker.format(context);
settings.timeEnd =
timeEndPicker.format(context);
isar.settings.putSync(settings);
});
if (!mounted) return;
MyApp.updateAppState(context, newTimeEnd: timeEndPicker.format(context));
MyApp.updateAppState(context,
newTimeEnd:
timeEndPicker.format(context));
if (settings.notifications) {
flutterLocalNotificationsPlugin.cancelAll();
weatherController.notlification(weatherController.mainWeather);
weatherController.notlification(
weatherController.mainWeather);
}
}
},
@ -383,10 +434,15 @@ class _SettingsPageState extends State<SettingsPage> {
text: 'degrees'.tr,
dropdown: true,
dropdownName: settings.degrees.tr,
dropdownList: <String>['celsius'.tr, 'fahrenheit'.tr],
dropdownList: <String>[
'celsius'.tr,
'fahrenheit'.tr
],
dropdownCange: (String? newValue) async {
isar.writeTxnSync(() {
settings.degrees = newValue == 'celsius'.tr ? 'celsius' : 'fahrenheit';
settings.degrees = newValue == 'celsius'.tr
? 'celsius'
: 'fahrenheit';
isar.settings.putSync(settings);
});
await weatherController.deleteAll(false);
@ -401,10 +457,16 @@ class _SettingsPageState extends State<SettingsPage> {
text: 'measurements'.tr,
dropdown: true,
dropdownName: settings.measurements.tr,
dropdownList: <String>['metric'.tr, 'imperial'.tr],
dropdownList: <String>[
'metric'.tr,
'imperial'.tr
],
dropdownCange: (String? newValue) async {
isar.writeTxnSync(() {
settings.measurements = newValue == 'metric'.tr ? 'metric' : 'imperial';
settings.measurements =
newValue == 'metric'.tr
? 'metric'
: 'imperial';
isar.settings.putSync(settings);
});
await weatherController.deleteAll(false);
@ -422,7 +484,8 @@ class _SettingsPageState extends State<SettingsPage> {
dropdownList: <String>['12'.tr, '24'.tr],
dropdownCange: (String? newValue) {
isar.writeTxnSync(() {
settings.timeformat = newValue == '12'.tr ? '12' : '24';
settings.timeformat =
newValue == '12'.tr ? '12' : '24';
isar.settings.putSync(settings);
});
setState(() {});
@ -443,7 +506,8 @@ class _SettingsPageState extends State<SettingsPage> {
text: 'language'.tr,
info: true,
infoSettings: true,
textInfo: appLanguages.firstWhere((element) => (element['locale'] == locale),
textInfo: appLanguages.firstWhere(
(element) => (element['locale'] == locale),
orElse: () => appLanguages.first)['name'],
onPressed: () {
showModalBottomSheet(
@ -470,7 +534,8 @@ class _SettingsPageState extends State<SettingsPage> {
itemBuilder: (context, index) {
return Card(
elevation: 4,
margin: const EdgeInsets.symmetric(horizontal: 10, vertical: 5),
margin: const EdgeInsets.symmetric(
horizontal: 10, vertical: 5),
child: ListTile(
title: Text(
appLanguages[index]['name'],
@ -478,8 +543,11 @@ class _SettingsPageState extends State<SettingsPage> {
textAlign: TextAlign.center,
),
onTap: () {
MyApp.updateAppState(context, newLocale: appLanguages[index]['locale']);
updateLanguage(appLanguages[index]['locale']);
MyApp.updateAppState(context,
newLocale: appLanguages[index]
['locale']);
updateLanguage(
appLanguages[index]['locale']);
},
),
);
@ -521,13 +589,15 @@ class _SettingsPageState extends State<SettingsPage> {
elevation: 4,
icon: const Icon(Iconsax.card),
text: 'DonationAlerts',
onPressed: () => urlLauncher('https://www.donationalerts.com/r/yoshimok'),
onPressed: () => urlLauncher(
'https://www.donationalerts.com/r/yoshimok'),
),
SettingCard(
elevation: 4,
icon: const Icon(Iconsax.wallet),
text: 'ЮMoney',
onPressed: () => urlLauncher('https://yoomoney.ru/to/4100117672775961'),
onPressed: () => urlLauncher(
'https://yoomoney.ru/to/4100117672775961'),
),
const SizedBox(height: 10),
],
@ -545,30 +615,34 @@ class _SettingsPageState extends State<SettingsPage> {
info: true,
textInfo: '$appVersion',
),
SettingCard(
icon: const Icon(Iconsax.document),
text: 'license'.tr,
onPressed: () => Get.to(
LicensePage(
applicationIcon: Container(
width: 100,
height: 100,
margin: const EdgeInsets.symmetric(vertical: 5),
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(20)),
image: DecorationImage(
image: AssetImage('assets/icons/icon.png'))),
),
applicationName: 'Rain',
applicationVersion: appVersion,
),
transition: Transition.downToUp,
),
),
SettingCard(
icon: Image.asset(
'assets/images/github.png',
scale: 20,
),
text: '${'project'.tr} GitHub',
onPressed: () => urlLauncher('https://github.com/DarkMooNight/Rain'),
),
SettingCard(
icon: const Icon(Iconsax.document),
text: 'license'.tr,
onPressed: () => Get.to(
LicensePage(
applicationIcon: const SizedBox(
width: 100,
height: 100,
child: Image(
image: AssetImage('assets/icons/icon.png'),
),
),
applicationName: 'Rain',
applicationVersion: appVersion,
),
),
onPressed: () =>
urlLauncher('https://github.com/DarkMooNight/Rain'),
),
],
),

View file

@ -68,7 +68,8 @@ class _WeatherDailyState extends State<WeatherDaily> {
children: [
Expanded(
child: Text(
DateFormat.EEEE(locale.languageCode).format(weatherData['timeDaily'][index]),
DateFormat.EEEE(locale.languageCode)
.format(weatherData['timeDaily'][index]),
style: labelLarge,
),
),
@ -77,13 +78,15 @@ class _WeatherDailyState extends State<WeatherDaily> {
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
statusWeather.getImage7Day(weatherCodeDaily[index]),
statusWeather
.getImage7Day(weatherCodeDaily[index]),
scale: 3,
),
const SizedBox(width: 5),
Expanded(
child: Text(
statusWeather.getText(weatherCodeDaily[index]),
statusWeather
.getText(weatherCodeDaily[index]),
style: labelLarge,
overflow: TextOverflow.ellipsis,
),
@ -96,7 +99,9 @@ class _WeatherDailyState extends State<WeatherDaily> {
mainAxisAlignment: MainAxisAlignment.end,
children: [
Text(
statusData.getDegree(weatherData['temperature2MMin'][index].round()),
statusData.getDegree(
weatherData['temperature2MMin'][index]
.round()),
style: labelLarge,
),
Text(
@ -104,7 +109,9 @@ class _WeatherDailyState extends State<WeatherDaily> {
style: bodyMediumGrey,
),
Text(
statusData.getDegree(weatherData['temperature2MMax'][index].round()),
statusData.getDegree(
weatherData['temperature2MMax'][index]
.round()),
style: bodyMediumGrey,
),
],

View file

@ -39,7 +39,8 @@ class Translation extends Translations {
'hPa': 'гПа',
'settings': 'Настр.',
'no_inter': 'Нет интернета',
'on_inter': 'Включите интернет для получения метеорологических данных.',
'on_inter':
'Включите интернет для получения метеорологических данных.',
'location': 'Местоположение',
'no_location':
'Включите службу определения местоположения для получения метеорологических данных для текущего местоположения.',
@ -110,7 +111,7 @@ class Translation extends Translations {
'system': 'Системная',
'dark': 'Тёмная',
'light': 'Светлая',
'license': 'Лицензия',
'license': 'Лицензии',
},
'en_US': {
'start': 'Get Started',
@ -150,7 +151,8 @@ class Translation extends Translations {
'no_inter': 'No Internet',
'on_inter': 'Turn on the Internet to get meteorological data.',
'location': 'Location',
'no_location': 'Enable the location service to get weather data for the current location.',
'no_location':
'Enable the location service to get weather data for the current location.',
'theme': 'Theme',
'low': 'Low',
'high': 'High',
@ -162,7 +164,8 @@ class Translation extends Translations {
'district': 'District',
'noWeatherCard': 'Add a city',
'deletedCardWeather': 'Deleting a city',
'deletedCardWeatherQuery': 'Are you sure you want to delete the city?',
'deletedCardWeatherQuery':
'Are you sure you want to delete the city?',
'delete': 'Delete',
'cancel': 'Cancel',
'time': 'Time in the city',
@ -218,7 +221,7 @@ class Translation extends Translations {
'system': 'System',
'dark': 'Dark',
'light': 'Light',
'license': 'License',
'license': 'Licenses',
},
'fr_FR': {
'start': 'Démarrer',
@ -256,7 +259,8 @@ class Translation extends Translations {
'hPa': 'hPa',
'settings': 'Par.',
'no_inter': 'Pas de réseau',
'on_inter': 'Connectez-vous à internet pour obtenir des données météorologiques.',
'on_inter':
'Connectez-vous à internet pour obtenir des données météorologiques.',
'location': 'Localisation',
'no_location':
'Activez le service de localisation pour obtenir les données météorologiques de l\'endroit actuel.',
@ -271,7 +275,8 @@ class Translation extends Translations {
'district': 'District',
'noWeatherCard': 'Ajouter une ville',
'deletedCardWeather': 'Supprimer une ville',
'deletedCardWeatherQuery': 'Êtes-vous sûr de vouloir supprimer la ville ?',
'deletedCardWeatherQuery':
'Êtes-vous sûr de vouloir supprimer la ville ?',
'delete': 'Supprimer',
'cancel': 'Annuler',
'time': 'Heure locale',
@ -327,7 +332,7 @@ class Translation extends Translations {
'system': 'Système',
'dark': 'Sombre',
'light': 'Clair',
'license': 'Licence',
'license': 'Licences',
},
'it_IT': {
'start': 'Clicca per iniziare',
@ -365,9 +370,11 @@ class Translation extends Translations {
'hPa': 'hPa',
'settings': 'Imposta.',
'no_inter': 'Non c\'è connessione Internet',
'on_inter': 'Attiva la connessione Internet per avere dati meteorologici.',
'on_inter':
'Attiva la connessione Internet per avere dati meteorologici.',
'location': 'Posizione',
'no_location': 'Abilita il servizio di localizzazione per ottenere i dati meteo per la posizione corrente.',
'no_location':
'Abilita il servizio di localizzazione per ottenere i dati meteo per la posizione corrente.',
'theme': 'Tema',
'low': 'Basso',
'high': 'Alto',
@ -379,7 +386,8 @@ class Translation extends Translations {
'district': 'Regione',
'noWeatherCard': 'Aggiungi una città',
'deletedCardWeather': 'Rimozione della città',
'deletedCardWeatherQuery': 'Sei sicuro di voler rimuovere questa città?',
'deletedCardWeatherQuery':
'Sei sicuro di voler rimuovere questa città?',
'delete': 'Elimina',
'cancel': 'Annulla',
'time': 'Orario locale',
@ -435,7 +443,7 @@ class Translation extends Translations {
'system': 'Sistema',
'dark': 'Scuro',
'light': 'Chiaro',
'license': 'Licenza',
'license': 'Licenze',
},
'de_DE': {
'start': 'Los gehts',
@ -473,9 +481,11 @@ class Translation extends Translations {
'hPa': 'hPa',
'settings': 'Einstellungen',
'no_inter': 'Keine Internetverbindung',
'on_inter': 'Schalte das Internet ein, um meteorologische Daten zu erhalten.',
'on_inter':
'Schalte das Internet ein, um meteorologische Daten zu erhalten.',
'location': 'Standort',
'no_location': 'Aktiviere den Standortdienst, um Wetterdaten für den aktuellen Standort zu erhalten.',
'no_location':
'Aktiviere den Standortdienst, um Wetterdaten für den aktuellen Standort zu erhalten.',
'theme': 'Thema',
'low': 'Niedrig',
'high': 'Hoch',
@ -487,7 +497,8 @@ class Translation extends Translations {
'district': 'Bezirk',
'noWeatherCard': 'Füge eine Stadt hinzu',
'deletedCardWeather': 'Stadt löschen',
'deletedCardWeatherQuery': 'Sind Sie sicher, dass Sie die Stadt löschen möchten?',
'deletedCardWeatherQuery':
'Sind Sie sicher, dass Sie die Stadt löschen möchten?',
'delete': 'Löschen',
'cancel': 'Abbrechen',
'time': 'Ortszeit',
@ -543,7 +554,7 @@ class Translation extends Translations {
'system': 'System',
'dark': 'Dunkel',
'light': 'Hell',
'license': 'Lizenz',
'license': 'Lizenzen',
},
'tr_TR': {
'start': 'Başlat',
@ -583,7 +594,8 @@ class Translation extends Translations {
'no_inter': 'İnternet yok',
'on_inter': 'Hava durumu verilerini almak için interneti açın.',
'location': 'Konum',
'no_location': 'Mevcut konumun hava durumu verilerini almak için konum servisini açın.',
'no_location':
'Mevcut konumun hava durumu verilerini almak için konum servisini açın.',
'theme': 'Tema',
'low': 'Düşük',
'high': 'Yüksek',
@ -595,7 +607,8 @@ class Translation extends Translations {
'district': 'İlçe',
'noWeatherCard': 'Şehri ekle',
'deletedCardWeather': 'Şehir silme',
'deletedCardWeatherQuery': 'Şehri silmek istediğinizden emin misiniz?',
'deletedCardWeatherQuery':
'Şehri silmek istediğinizden emin misiniz?',
'delete': 'Sil',
'cancel': 'İptal',
'time': 'Şehirde Saat',
@ -651,7 +664,7 @@ class Translation extends Translations {
'system': 'Sistem',
'dark': 'Karanlık',
'light': 'Aydınlık',
'license': 'Lisans',
'license': 'Lisanslar',
},
'pt_BR': {
'start': 'Iniciar',
@ -691,7 +704,8 @@ class Translation extends Translations {
'no_inter': 'Sem conexão',
'on_inter': 'Conecte-se a internet para atualizar os dados de clima.',
'location': 'Localização',
'no_location': 'Habilite a localização para obter dados de clima do local atual.',
'no_location':
'Habilite a localização para obter dados de clima do local atual.',
'theme': 'Tema',
'low': 'Baixo',
'high': 'Alto',
@ -703,7 +717,8 @@ class Translation extends Translations {
'district': 'Distrito',
'noWeatherCard': 'Adicione uma cidade',
'deletedCardWeather': 'Deletando a cidade',
'deletedCardWeatherQuery': 'Você tem certeza que deseja remover esta cidade?',
'deletedCardWeatherQuery':
'Você tem certeza que deseja remover esta cidade?',
'delete': 'Deletar',
'cancel': 'Cancelar',
'time': 'Clima na cidade',
@ -759,7 +774,7 @@ class Translation extends Translations {
'system': 'Sistema',
'dark': 'Escuro',
'light': 'Claro',
'license': 'Licença',
'license': 'Licenças',
},
'es_ES': {
'start': 'Empezar',
@ -797,9 +812,11 @@ class Translation extends Translations {
'hPa': 'hPa',
'settings': 'Ajustes',
'no_inter': 'Sin conexión a Internet',
'on_inter': 'Conéctate a Internet para obtener información meteorológica.',
'on_inter':
'Conéctate a Internet para obtener información meteorológica.',
'location': 'Ubicación',
'no_location': 'Activa la localización para obtener información meteorológica para tu ubicación actual.',
'no_location':
'Activa la localización para obtener información meteorológica para tu ubicación actual.',
'theme': 'Tema',
'low': 'Bajo',
'high': 'Alto',
@ -811,7 +828,8 @@ class Translation extends Translations {
'district': 'Distrito',
'noWeatherCard': 'Añadir una ciudad',
'deletedCardWeather': 'Eliminar una ciudad',
'deletedCardWeatherQuery': '¿Estás seguro de que quieres eliminar la ciudad?',
'deletedCardWeatherQuery':
'¿Estás seguro de que quieres eliminar la ciudad?',
'delete': 'Eliminar',
'cancel': 'Cancelar',
'time': 'Hora en la ciudad',
@ -867,7 +885,7 @@ class Translation extends Translations {
'system': 'Sistema',
'dark': 'Oscuro',
'light': 'Claro',
'license': 'Licencia',
'license': 'Licencias',
},
'sk_SK': {
'start': 'Začať',
@ -905,9 +923,11 @@ class Translation extends Translations {
'hPa': 'hPa',
'settings': 'Set.',
'no_inter': 'Žiadny internet',
'on_inter': 'Pripojte sa na internet a získajte meteorologické údaje.',
'on_inter':
'Pripojte sa na internet a získajte meteorologické údaje.',
'location': 'Poloha',
'no_location': 'Ak chcete získať údaje o počasí pre aktuálnu polohu, povoľte službu určovania polohy.',
'no_location':
'Ak chcete získať údaje o počasí pre aktuálnu polohu, povoľte službu určovania polohy.',
'theme': 'Téma',
'low': 'Nízky',
'high': 'Vysoký',
@ -975,7 +995,7 @@ class Translation extends Translations {
'system': 'Systém',
'dark': 'Tmavá',
'light': 'Svetlá',
'license': 'Licencia',
'license': 'Licencie',
},
'nl_NL': {
'start': 'Beginnen',
@ -1013,9 +1033,11 @@ class Translation extends Translations {
'hPa': 'hPa',
'settings': 'Instellingen.',
'no_inter': 'Geen Internet',
'on_inter': 'Schakel Internet in om meteorologische gegevens te ontvangen.',
'on_inter':
'Schakel Internet in om meteorologische gegevens te ontvangen.',
'location': 'Locatie',
'no_location': 'Schakel de locatiedienst in om weer gegevens voor de huidige locatie te ontvangen.',
'no_location':
'Schakel de locatiedienst in om weer gegevens voor de huidige locatie te ontvangen.',
'theme': 'Thema',
'low': 'Laag',
'high': 'Hoog',
@ -1027,7 +1049,8 @@ class Translation extends Translations {
'district': 'District',
'noWeatherCard': 'Voeg een stad toe',
'deletedCardWeather': 'Verwijder een city',
'deletedCardWeatherQuery': 'Weet je zeker dat je de stad wilt verwijderen?',
'deletedCardWeatherQuery':
'Weet je zeker dat je de stad wilt verwijderen?',
'delete': 'Verwijder',
'cancel': 'Annuleer',
'time': 'Tijd in de stad',
@ -1083,7 +1106,7 @@ class Translation extends Translations {
'system': 'Systeem',
'dark': 'Donker',
'light': 'Licht',
'license': 'Licentie',
'license': 'Licenties',
},
"hi_IN": {
'start': 'शुरू करें',
@ -1231,7 +1254,8 @@ class Translation extends Translations {
'no_inter': 'Fără Internet',
'on_inter': 'Pornește Internetul pentru a obține date meteorologice.',
'location': 'Locație',
'no_location': 'Activează serviciul de localizare pentru a obține date meteorologice pentru locația curentă.',
'no_location':
'Activează serviciul de localizare pentru a obține date meteorologice pentru locația curentă.',
'theme': 'Temă',
'low': 'Scăzut',
'high': 'Ridicat',
@ -1299,7 +1323,7 @@ class Translation extends Translations {
'system': 'Sistem',
'dark': 'Întunecat',
'light': 'Luminos',
'license': 'Licență',
'license': 'Licențe',
},
'zh_CN': {
'start': '开始',
@ -1446,7 +1470,8 @@ class Translation extends Translations {
'no_inter': 'Brak internetu',
'on_inter': 'Włącz Internet, aby uzyskać dane meteorologiczne.',
'location': 'Lokalizacja',
'no_location': 'Włącz usługę lokalizacyjną, aby uzyskać dane pogodowe dla bieżącej lokalizacji.',
'no_location':
'Włącz usługę lokalizacyjną, aby uzyskać dane pogodowe dla bieżącej lokalizacji.',
'theme': 'Motyw',
'low': 'Niski',
'high': 'Wysoki',
@ -1514,7 +1539,7 @@ class Translation extends Translations {
'system': 'System',
'dark': 'Ciemny',
'light': 'Jasny',
'license': 'Licencja',
'license': 'Licencje',
},
};
}

View file

@ -753,10 +753,10 @@ packages:
dependency: transitive
description:
name: platform
sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102
sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59"
url: "https://pub.dev"
source: hosted
version: "3.1.2"
version: "3.1.3"
plugin_platform_interface:
dependency: transitive
description: