mirror of
https://github.com/darkmoonight/Rain.git
synced 2025-06-28 20:19:58 +00:00
minor improvements
This commit is contained in:
parent
e39177e9e7
commit
613512ef86
8 changed files with 234 additions and 124 deletions
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -21,8 +21,6 @@ allprojects {
|
|||
rootProject.buildDir = '../build'
|
||||
subprojects {
|
||||
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
||||
}
|
||||
subprojects {
|
||||
project.evaluationDependsOn(':app')
|
||||
}
|
||||
|
||||
|
|
|
@ -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),
|
||||
),
|
||||
|
|
|
@ -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'),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
|
@ -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,
|
||||
),
|
||||
],
|
||||
|
|
|
@ -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',
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue