mirror of
https://github.com/rainloreley/shlink-manager.git
synced 2024-11-24 02:33:01 +01:00
added core files with l10n
This commit is contained in:
parent
86dcba28e4
commit
9a2d3a7125
|
@ -0,0 +1,3 @@
|
|||
arb-dir: lib/l10n
|
||||
template-arb-file: app_en.arb
|
||||
output-localization-file: app_localizations.dart
|
|
@ -0,0 +1,2 @@
|
|||
{
|
||||
}
|
|
@ -3,6 +3,7 @@ import 'package:shlink_app/views/login_view.dart';
|
|||
import 'package:shlink_app/views/navigationbar_view.dart';
|
||||
import 'globals.dart' as globals;
|
||||
import 'package:dynamic_color/dynamic_color.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
void main() {
|
||||
runApp(const MyApp());
|
||||
|
@ -40,6 +41,18 @@ class MyApp extends StatelessWidget {
|
|||
_defaultDarkColorScheme,
|
||||
useMaterial3: true,
|
||||
),
|
||||
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||||
supportedLocales: AppLocalizations.supportedLocales,
|
||||
localeListResolutionCallback: (locales, supportedLocales) {
|
||||
for (Locale locale in locales!) {
|
||||
if (supportedLocales.contains(locale) ||
|
||||
supportedLocales.where((element) =>
|
||||
element.languageCode == locale.languageCode).isNotEmpty) {
|
||||
return locale;
|
||||
}
|
||||
}
|
||||
return const Locale('en');
|
||||
},
|
||||
home: const InitialPage());
|
||||
});
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import 'package:shlink_app/API/Classes/ShlinkStats/shlink_stats.dart';
|
|||
import 'package:shlink_app/API/server_manager.dart';
|
||||
import 'package:shlink_app/views/short_url_edit_view.dart';
|
||||
import 'package:shlink_app/views/url_list_view.dart';
|
||||
import 'package:shlink_app/widgets/shlink_stats_card_widget.dart';
|
||||
import '../API/Classes/ShortURL/short_url.dart';
|
||||
import '../globals.dart' as globals;
|
||||
|
||||
|
@ -24,7 +25,6 @@ class _HomeViewState extends State<HomeView> {
|
|||
|
||||
@override
|
||||
void initState() {
|
||||
// TODO: implement initState
|
||||
super.initState();
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
loadAllData();
|
||||
|
@ -113,22 +113,22 @@ class _HomeViewState extends State<HomeView> {
|
|||
child: Wrap(
|
||||
alignment: WrapAlignment.spaceEvenly,
|
||||
children: [
|
||||
_ShlinkStatsCardWidget(
|
||||
ShlinkStatsCardWidget(
|
||||
icon: Icons.link,
|
||||
text:
|
||||
"${shlinkStats?.shortUrlsCount.toString() ?? "0"} Short URLs",
|
||||
borderColor: Colors.blue),
|
||||
_ShlinkStatsCardWidget(
|
||||
ShlinkStatsCardWidget(
|
||||
icon: Icons.remove_red_eye,
|
||||
text:
|
||||
"${shlinkStats?.nonOrphanVisits.total ?? "0"} Visits",
|
||||
borderColor: Colors.green),
|
||||
_ShlinkStatsCardWidget(
|
||||
ShlinkStatsCardWidget(
|
||||
icon: Icons.warning,
|
||||
text:
|
||||
"${shlinkStats?.orphanVisits.total ?? "0"} Orphan Visits",
|
||||
borderColor: Colors.red),
|
||||
_ShlinkStatsCardWidget(
|
||||
ShlinkStatsCardWidget(
|
||||
icon: Icons.sell,
|
||||
text:
|
||||
"${shlinkStats?.tagsCount.toString() ?? "0"} Tags",
|
||||
|
@ -245,43 +245,3 @@ class _HomeViewState extends State<HomeView> {
|
|||
));
|
||||
}
|
||||
}
|
||||
|
||||
// stats card widget
|
||||
class _ShlinkStatsCardWidget extends StatefulWidget {
|
||||
const _ShlinkStatsCardWidget(
|
||||
{required this.text, required this.icon, this.borderColor});
|
||||
|
||||
final IconData icon;
|
||||
final Color? borderColor;
|
||||
final String text;
|
||||
|
||||
@override
|
||||
State<_ShlinkStatsCardWidget> createState() => _ShlinkStatsCardWidgetState();
|
||||
}
|
||||
|
||||
class _ShlinkStatsCardWidgetState extends State<_ShlinkStatsCardWidget> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var randomColor = ([...Colors.primaries]..shuffle()).first;
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(4),
|
||||
child: Container(
|
||||
padding: const EdgeInsets.all(12),
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: widget.borderColor ?? randomColor),
|
||||
borderRadius: BorderRadius.circular(8)),
|
||||
child: SizedBox(
|
||||
child: Wrap(
|
||||
children: [
|
||||
Icon(widget.icon),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 4),
|
||||
child: Text(widget.text,
|
||||
style: const TextStyle(fontWeight: FontWeight.bold)),
|
||||
)
|
||||
],
|
||||
),
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
// stats card widget
|
||||
class ShlinkStatsCardWidget extends StatefulWidget {
|
||||
const ShlinkStatsCardWidget(
|
||||
{super.key, required this.text, required this.icon, this.borderColor});
|
||||
|
||||
final IconData icon;
|
||||
final Color? borderColor;
|
||||
final String text;
|
||||
|
||||
@override
|
||||
State<ShlinkStatsCardWidget> createState() => ShlinkStatsCardWidgetState();
|
||||
}
|
||||
|
||||
class ShlinkStatsCardWidgetState extends State<ShlinkStatsCardWidget> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var randomColor = ([...Colors.primaries]..shuffle()).first;
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(4),
|
||||
child: Container(
|
||||
padding: const EdgeInsets.all(12),
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: widget.borderColor ?? randomColor),
|
||||
borderRadius: BorderRadius.circular(8)),
|
||||
child: SizedBox(
|
||||
child: Wrap(
|
||||
children: [
|
||||
Icon(widget.icon),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 4),
|
||||
child: Text(widget.text,
|
||||
style: const TextStyle(fontWeight: FontWeight.bold)),
|
||||
)
|
||||
],
|
||||
),
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
14
pubspec.lock
14
pubspec.lock
|
@ -145,11 +145,10 @@ packages:
|
|||
flutter_launcher_icons:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
path: "."
|
||||
ref: "feat/monochrome-icons-support"
|
||||
resolved-ref: "1902eba83da89b0350a70672ac7c963cd995e017"
|
||||
url: "https://github.com/OutdatedGuy/flutter_launcher_icons.git"
|
||||
source: git
|
||||
name: flutter_launcher_icons
|
||||
sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.13.1"
|
||||
flutter_lints:
|
||||
dependency: "direct dev"
|
||||
|
@ -159,6 +158,11 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
flutter_localizations:
|
||||
dependency: "direct main"
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
flutter_process_text:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
|
@ -37,11 +37,13 @@ dependencies:
|
|||
dartz: ^0.10.1
|
||||
qr_flutter: ^4.1.0
|
||||
tuple: ^2.0.2
|
||||
intl: ^0.18.1
|
||||
intl: any
|
||||
dynamic_color: ^1.6.6
|
||||
url_launcher: 6.1.9
|
||||
package_info_plus: ^4.0.2
|
||||
shared_preferences: ^2.2.2
|
||||
flutter_localizations:
|
||||
sdk: flutter
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
@ -53,6 +55,7 @@ dev_dependencies:
|
|||
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
generate: true
|
||||
|
||||
# flutter pub run flutter_launcher_icons
|
||||
flutter_launcher_icons:
|
||||
|
|
|
@ -14,7 +14,6 @@ void main() {
|
|||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
||||
// Build our app and trigger a frame.
|
||||
await tester.pumpWidget(const MyApp());
|
||||
|
||||
// Verify that our counter starts at 0.
|
||||
expect(find.text('0'), findsOneWidget);
|
||||
expect(find.text('1'), findsNothing);
|
||||
|
|
Loading…
Reference in New Issue
Block a user