2020-09-26 18:27:15 +00:00
|
|
|
import 'dart:io';
|
|
|
|
|
|
|
|
import 'package:flutter/foundation.dart';
|
2021-01-17 14:43:38 +00:00
|
|
|
import 'package:flutter/material.dart';
|
2021-10-26 16:50:34 +00:00
|
|
|
|
|
|
|
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
2023-08-02 10:08:23 +00:00
|
|
|
import 'package:go_router/go_router.dart';
|
2021-06-19 22:24:39 +00:00
|
|
|
import 'package:package_info_plus/package_info_plus.dart';
|
2023-01-26 08:47:30 +00:00
|
|
|
import 'package:url_launcher/url_launcher_string.dart';
|
2021-01-17 14:43:38 +00:00
|
|
|
|
2021-04-09 14:29:48 +00:00
|
|
|
import '../config/app_config.dart';
|
2020-09-26 18:27:15 +00:00
|
|
|
|
|
|
|
abstract class PlatformInfos {
|
|
|
|
static bool get isWeb => kIsWeb;
|
2021-02-07 16:18:38 +00:00
|
|
|
static bool get isLinux => !kIsWeb && Platform.isLinux;
|
|
|
|
static bool get isWindows => !kIsWeb && Platform.isWindows;
|
|
|
|
static bool get isMacOS => !kIsWeb && Platform.isMacOS;
|
|
|
|
static bool get isIOS => !kIsWeb && Platform.isIOS;
|
|
|
|
static bool get isAndroid => !kIsWeb && Platform.isAndroid;
|
2020-10-04 14:11:18 +00:00
|
|
|
|
2021-02-07 16:18:38 +00:00
|
|
|
static bool get isCupertinoStyle => isIOS || isMacOS;
|
2020-11-22 21:48:10 +00:00
|
|
|
|
2021-02-07 16:18:38 +00:00
|
|
|
static bool get isMobile => isAndroid || isIOS;
|
2020-10-04 14:11:18 +00:00
|
|
|
|
|
|
|
/// For desktops which don't support ChachedNetworkImage yet
|
2021-02-07 16:18:38 +00:00
|
|
|
static bool get isBetaDesktop => isWindows || isLinux;
|
2020-10-04 14:11:18 +00:00
|
|
|
|
2021-02-07 16:18:38 +00:00
|
|
|
static bool get isDesktop => isLinux || isWindows || isMacOS;
|
2020-10-28 07:05:10 +00:00
|
|
|
|
2020-09-26 18:27:15 +00:00
|
|
|
static bool get usesTouchscreen => !isMobile;
|
2021-01-17 14:43:38 +00:00
|
|
|
|
2022-06-20 13:35:22 +00:00
|
|
|
static bool get platformCanRecord => (isMobile || isMacOS);
|
|
|
|
|
2021-02-07 16:18:38 +00:00
|
|
|
static String get clientName =>
|
2021-06-20 10:44:09 +00:00
|
|
|
'${AppConfig.applicationName} ${isWeb ? 'web' : Platform.operatingSystem}${kReleaseMode ? '' : 'Debug'}';
|
2021-02-07 16:18:38 +00:00
|
|
|
|
2021-01-17 14:43:38 +00:00
|
|
|
static Future<String> getVersion() async {
|
|
|
|
var version = kIsWeb ? 'Web' : 'Unknown';
|
|
|
|
try {
|
|
|
|
version = (await PackageInfo.fromPlatform()).version;
|
|
|
|
} catch (_) {}
|
|
|
|
return version;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void showDialog(BuildContext context) async {
|
2021-04-14 08:37:15 +00:00
|
|
|
final version = await PlatformInfos.getVersion();
|
2021-01-17 14:43:38 +00:00
|
|
|
showAboutDialog(
|
|
|
|
context: context,
|
|
|
|
children: [
|
|
|
|
Text('Version: $version'),
|
2023-08-07 16:40:02 +00:00
|
|
|
TextButton.icon(
|
2023-01-26 08:47:30 +00:00
|
|
|
onPressed: () => launchUrlString(AppConfig.sourceCodeUrl),
|
2023-08-07 16:40:02 +00:00
|
|
|
icon: const Icon(Icons.source_outlined),
|
|
|
|
label: Text(L10n.of(context)!.sourceCode),
|
2021-01-17 14:43:38 +00:00
|
|
|
),
|
2023-08-07 16:40:02 +00:00
|
|
|
TextButton.icon(
|
2023-01-26 08:47:30 +00:00
|
|
|
onPressed: () => launchUrlString(AppConfig.emojiFontUrl),
|
2023-08-07 16:40:02 +00:00
|
|
|
icon: const Icon(Icons.emoji_emotions_outlined),
|
|
|
|
label: const Text(AppConfig.emojiFontName),
|
2021-01-17 14:43:38 +00:00
|
|
|
),
|
2023-08-07 16:40:02 +00:00
|
|
|
Builder(
|
2023-08-11 12:07:51 +00:00
|
|
|
builder: (innerContext) {
|
2023-08-07 16:40:02 +00:00
|
|
|
return TextButton.icon(
|
|
|
|
onPressed: () {
|
|
|
|
context.go('/logs');
|
2023-08-11 12:07:51 +00:00
|
|
|
Navigator.of(innerContext).pop();
|
2023-08-07 16:40:02 +00:00
|
|
|
},
|
|
|
|
icon: const Icon(Icons.list_outlined),
|
|
|
|
label: const Text('Logs'),
|
|
|
|
);
|
|
|
|
},
|
2021-06-26 08:43:07 +00:00
|
|
|
),
|
2021-01-17 14:43:38 +00:00
|
|
|
],
|
2022-11-02 10:45:05 +00:00
|
|
|
applicationIcon: Image.asset(
|
|
|
|
'assets/logo.png',
|
|
|
|
width: 64,
|
|
|
|
height: 64,
|
|
|
|
filterQuality: FilterQuality.medium,
|
|
|
|
),
|
2021-01-17 14:43:38 +00:00
|
|
|
applicationName: AppConfig.applicationName,
|
|
|
|
);
|
|
|
|
}
|
2020-09-26 18:27:15 +00:00
|
|
|
}
|