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

View file

@ -89,7 +89,7 @@ flutter {
dependencies { dependencies {
implementation "androidx.core:core-remoteviews:1.0.0" 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 // Remove this for FLOSS version

View file

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

View file

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

View file

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

View file

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

View file

@ -39,7 +39,8 @@ class Translation extends Translations {
'hPa': 'гПа', 'hPa': 'гПа',
'settings': 'Настр.', 'settings': 'Настр.',
'no_inter': 'Нет интернета', 'no_inter': 'Нет интернета',
'on_inter': 'Включите интернет для получения метеорологических данных.', 'on_inter':
'Включите интернет для получения метеорологических данных.',
'location': 'Местоположение', 'location': 'Местоположение',
'no_location': 'no_location':
'Включите службу определения местоположения для получения метеорологических данных для текущего местоположения.', 'Включите службу определения местоположения для получения метеорологических данных для текущего местоположения.',
@ -110,7 +111,7 @@ class Translation extends Translations {
'system': 'Системная', 'system': 'Системная',
'dark': 'Тёмная', 'dark': 'Тёмная',
'light': 'Светлая', 'light': 'Светлая',
'license': 'Лицензия', 'license': 'Лицензии',
}, },
'en_US': { 'en_US': {
'start': 'Get Started', 'start': 'Get Started',
@ -150,7 +151,8 @@ class Translation extends Translations {
'no_inter': 'No Internet', 'no_inter': 'No Internet',
'on_inter': 'Turn on the Internet to get meteorological data.', 'on_inter': 'Turn on the Internet to get meteorological data.',
'location': 'Location', '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', 'theme': 'Theme',
'low': 'Low', 'low': 'Low',
'high': 'High', 'high': 'High',
@ -162,7 +164,8 @@ class Translation extends Translations {
'district': 'District', 'district': 'District',
'noWeatherCard': 'Add a city', 'noWeatherCard': 'Add a city',
'deletedCardWeather': 'Deleting 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', 'delete': 'Delete',
'cancel': 'Cancel', 'cancel': 'Cancel',
'time': 'Time in the city', 'time': 'Time in the city',
@ -218,7 +221,7 @@ class Translation extends Translations {
'system': 'System', 'system': 'System',
'dark': 'Dark', 'dark': 'Dark',
'light': 'Light', 'light': 'Light',
'license': 'License', 'license': 'Licenses',
}, },
'fr_FR': { 'fr_FR': {
'start': 'Démarrer', 'start': 'Démarrer',
@ -256,7 +259,8 @@ class Translation extends Translations {
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Par.', 'settings': 'Par.',
'no_inter': 'Pas de réseau', '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', 'location': 'Localisation',
'no_location': 'no_location':
'Activez le service de localisation pour obtenir les données météorologiques de l\'endroit actuel.', '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', 'district': 'District',
'noWeatherCard': 'Ajouter une ville', 'noWeatherCard': 'Ajouter une ville',
'deletedCardWeather': 'Supprimer 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', 'delete': 'Supprimer',
'cancel': 'Annuler', 'cancel': 'Annuler',
'time': 'Heure locale', 'time': 'Heure locale',
@ -327,7 +332,7 @@ class Translation extends Translations {
'system': 'Système', 'system': 'Système',
'dark': 'Sombre', 'dark': 'Sombre',
'light': 'Clair', 'light': 'Clair',
'license': 'Licence', 'license': 'Licences',
}, },
'it_IT': { 'it_IT': {
'start': 'Clicca per iniziare', 'start': 'Clicca per iniziare',
@ -365,9 +370,11 @@ class Translation extends Translations {
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Imposta.', 'settings': 'Imposta.',
'no_inter': 'Non c\'è connessione Internet', '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', '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', 'theme': 'Tema',
'low': 'Basso', 'low': 'Basso',
'high': 'Alto', 'high': 'Alto',
@ -379,7 +386,8 @@ class Translation extends Translations {
'district': 'Regione', 'district': 'Regione',
'noWeatherCard': 'Aggiungi una città', 'noWeatherCard': 'Aggiungi una città',
'deletedCardWeather': 'Rimozione della città', 'deletedCardWeather': 'Rimozione della città',
'deletedCardWeatherQuery': 'Sei sicuro di voler rimuovere questa città?', 'deletedCardWeatherQuery':
'Sei sicuro di voler rimuovere questa città?',
'delete': 'Elimina', 'delete': 'Elimina',
'cancel': 'Annulla', 'cancel': 'Annulla',
'time': 'Orario locale', 'time': 'Orario locale',
@ -435,7 +443,7 @@ class Translation extends Translations {
'system': 'Sistema', 'system': 'Sistema',
'dark': 'Scuro', 'dark': 'Scuro',
'light': 'Chiaro', 'light': 'Chiaro',
'license': 'Licenza', 'license': 'Licenze',
}, },
'de_DE': { 'de_DE': {
'start': 'Los gehts', 'start': 'Los gehts',
@ -473,9 +481,11 @@ class Translation extends Translations {
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Einstellungen', 'settings': 'Einstellungen',
'no_inter': 'Keine Internetverbindung', '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', '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', 'theme': 'Thema',
'low': 'Niedrig', 'low': 'Niedrig',
'high': 'Hoch', 'high': 'Hoch',
@ -487,7 +497,8 @@ class Translation extends Translations {
'district': 'Bezirk', 'district': 'Bezirk',
'noWeatherCard': 'Füge eine Stadt hinzu', 'noWeatherCard': 'Füge eine Stadt hinzu',
'deletedCardWeather': 'Stadt löschen', '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', 'delete': 'Löschen',
'cancel': 'Abbrechen', 'cancel': 'Abbrechen',
'time': 'Ortszeit', 'time': 'Ortszeit',
@ -543,7 +554,7 @@ class Translation extends Translations {
'system': 'System', 'system': 'System',
'dark': 'Dunkel', 'dark': 'Dunkel',
'light': 'Hell', 'light': 'Hell',
'license': 'Lizenz', 'license': 'Lizenzen',
}, },
'tr_TR': { 'tr_TR': {
'start': 'Başlat', 'start': 'Başlat',
@ -583,7 +594,8 @@ class Translation extends Translations {
'no_inter': 'İnternet yok', 'no_inter': 'İnternet yok',
'on_inter': 'Hava durumu verilerini almak için interneti açın.', 'on_inter': 'Hava durumu verilerini almak için interneti açın.',
'location': 'Konum', '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', 'theme': 'Tema',
'low': 'Düşük', 'low': 'Düşük',
'high': 'Yüksek', 'high': 'Yüksek',
@ -595,7 +607,8 @@ class Translation extends Translations {
'district': 'İlçe', 'district': 'İlçe',
'noWeatherCard': 'Şehri ekle', 'noWeatherCard': 'Şehri ekle',
'deletedCardWeather': 'Şehir silme', 'deletedCardWeather': 'Şehir silme',
'deletedCardWeatherQuery': 'Şehri silmek istediğinizden emin misiniz?', 'deletedCardWeatherQuery':
'Şehri silmek istediğinizden emin misiniz?',
'delete': 'Sil', 'delete': 'Sil',
'cancel': 'İptal', 'cancel': 'İptal',
'time': 'Şehirde Saat', 'time': 'Şehirde Saat',
@ -651,7 +664,7 @@ class Translation extends Translations {
'system': 'Sistem', 'system': 'Sistem',
'dark': 'Karanlık', 'dark': 'Karanlık',
'light': 'Aydınlık', 'light': 'Aydınlık',
'license': 'Lisans', 'license': 'Lisanslar',
}, },
'pt_BR': { 'pt_BR': {
'start': 'Iniciar', 'start': 'Iniciar',
@ -691,7 +704,8 @@ class Translation extends Translations {
'no_inter': 'Sem conexão', 'no_inter': 'Sem conexão',
'on_inter': 'Conecte-se a internet para atualizar os dados de clima.', 'on_inter': 'Conecte-se a internet para atualizar os dados de clima.',
'location': 'Localização', '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', 'theme': 'Tema',
'low': 'Baixo', 'low': 'Baixo',
'high': 'Alto', 'high': 'Alto',
@ -703,7 +717,8 @@ class Translation extends Translations {
'district': 'Distrito', 'district': 'Distrito',
'noWeatherCard': 'Adicione uma cidade', 'noWeatherCard': 'Adicione uma cidade',
'deletedCardWeather': 'Deletando a 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', 'delete': 'Deletar',
'cancel': 'Cancelar', 'cancel': 'Cancelar',
'time': 'Clima na cidade', 'time': 'Clima na cidade',
@ -759,7 +774,7 @@ class Translation extends Translations {
'system': 'Sistema', 'system': 'Sistema',
'dark': 'Escuro', 'dark': 'Escuro',
'light': 'Claro', 'light': 'Claro',
'license': 'Licença', 'license': 'Licenças',
}, },
'es_ES': { 'es_ES': {
'start': 'Empezar', 'start': 'Empezar',
@ -797,9 +812,11 @@ class Translation extends Translations {
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Ajustes', 'settings': 'Ajustes',
'no_inter': 'Sin conexión a Internet', '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', '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', 'theme': 'Tema',
'low': 'Bajo', 'low': 'Bajo',
'high': 'Alto', 'high': 'Alto',
@ -811,7 +828,8 @@ class Translation extends Translations {
'district': 'Distrito', 'district': 'Distrito',
'noWeatherCard': 'Añadir una ciudad', 'noWeatherCard': 'Añadir una ciudad',
'deletedCardWeather': 'Eliminar 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', 'delete': 'Eliminar',
'cancel': 'Cancelar', 'cancel': 'Cancelar',
'time': 'Hora en la ciudad', 'time': 'Hora en la ciudad',
@ -867,7 +885,7 @@ class Translation extends Translations {
'system': 'Sistema', 'system': 'Sistema',
'dark': 'Oscuro', 'dark': 'Oscuro',
'light': 'Claro', 'light': 'Claro',
'license': 'Licencia', 'license': 'Licencias',
}, },
'sk_SK': { 'sk_SK': {
'start': 'Začať', 'start': 'Začať',
@ -905,9 +923,11 @@ class Translation extends Translations {
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Set.', 'settings': 'Set.',
'no_inter': 'Žiadny internet', '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', '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', 'theme': 'Téma',
'low': 'Nízky', 'low': 'Nízky',
'high': 'Vysoký', 'high': 'Vysoký',
@ -975,7 +995,7 @@ class Translation extends Translations {
'system': 'Systém', 'system': 'Systém',
'dark': 'Tmavá', 'dark': 'Tmavá',
'light': 'Svetlá', 'light': 'Svetlá',
'license': 'Licencia', 'license': 'Licencie',
}, },
'nl_NL': { 'nl_NL': {
'start': 'Beginnen', 'start': 'Beginnen',
@ -1013,9 +1033,11 @@ class Translation extends Translations {
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Instellingen.', 'settings': 'Instellingen.',
'no_inter': 'Geen Internet', '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', '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', 'theme': 'Thema',
'low': 'Laag', 'low': 'Laag',
'high': 'Hoog', 'high': 'Hoog',
@ -1027,7 +1049,8 @@ class Translation extends Translations {
'district': 'District', 'district': 'District',
'noWeatherCard': 'Voeg een stad toe', 'noWeatherCard': 'Voeg een stad toe',
'deletedCardWeather': 'Verwijder een city', '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', 'delete': 'Verwijder',
'cancel': 'Annuleer', 'cancel': 'Annuleer',
'time': 'Tijd in de stad', 'time': 'Tijd in de stad',
@ -1083,7 +1106,7 @@ class Translation extends Translations {
'system': 'Systeem', 'system': 'Systeem',
'dark': 'Donker', 'dark': 'Donker',
'light': 'Licht', 'light': 'Licht',
'license': 'Licentie', 'license': 'Licenties',
}, },
"hi_IN": { "hi_IN": {
'start': 'शुरू करें', 'start': 'शुरू करें',
@ -1231,7 +1254,8 @@ class Translation extends Translations {
'no_inter': 'Fără Internet', 'no_inter': 'Fără Internet',
'on_inter': 'Pornește Internetul pentru a obține date meteorologice.', 'on_inter': 'Pornește Internetul pentru a obține date meteorologice.',
'location': 'Locație', '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ă', 'theme': 'Temă',
'low': 'Scăzut', 'low': 'Scăzut',
'high': 'Ridicat', 'high': 'Ridicat',
@ -1299,7 +1323,7 @@ class Translation extends Translations {
'system': 'Sistem', 'system': 'Sistem',
'dark': 'Întunecat', 'dark': 'Întunecat',
'light': 'Luminos', 'light': 'Luminos',
'license': 'Licență', 'license': 'Licențe',
}, },
'zh_CN': { 'zh_CN': {
'start': '开始', 'start': '开始',
@ -1446,7 +1470,8 @@ class Translation extends Translations {
'no_inter': 'Brak internetu', 'no_inter': 'Brak internetu',
'on_inter': 'Włącz Internet, aby uzyskać dane meteorologiczne.', 'on_inter': 'Włącz Internet, aby uzyskać dane meteorologiczne.',
'location': 'Lokalizacja', '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', 'theme': 'Motyw',
'low': 'Niski', 'low': 'Niski',
'high': 'Wysoki', 'high': 'Wysoki',
@ -1514,7 +1539,7 @@ class Translation extends Translations {
'system': 'System', 'system': 'System',
'dark': 'Ciemny', 'dark': 'Ciemny',
'light': 'Jasny', 'light': 'Jasny',
'license': 'Licencja', 'license': 'Licencje',
}, },
}; };
} }

View file

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