This commit is contained in:
kodjodevf 2023-04-12 17:51:29 +01:00
parent 8bba523ba6
commit 054fa0642c
17 changed files with 242 additions and 15 deletions

View file

@ -14,6 +14,7 @@ import 'package:mangayomi/views/manga/detail/manga_reader_detail.dart';
import 'package:mangayomi/views/manga/home/manga_home_screen.dart';
import 'package:mangayomi/views/manga/home/manga_search_screen.dart';
import 'package:mangayomi/views/manga/reader/manga_reader_view.dart';
import 'package:mangayomi/views/more/about_screen.dart';
import 'package:mangayomi/views/more/more_screen.dart';
import 'package:mangayomi/views/more/settings/appearance/appearance_screen.dart';
import 'package:mangayomi/views/more/settings/settings_screen.dart';
@ -217,6 +218,19 @@ class AsyncRouterNotifier extends ChangeNotifier {
);
},
),
GoRoute(
path: "/about",
name: "about",
builder: (context, state) {
return const AboutScreen();
},
pageBuilder: (context, state) {
return CustomTransition(
key: state.pageKey,
child: const AboutScreen(),
);
},
),
];
}

View file

@ -10,9 +10,7 @@ import 'package:mangayomi/utils/cached_network.dart';
import 'package:mangayomi/utils/headers.dart';
import 'package:mangayomi/utils/lang.dart';
import 'package:mangayomi/views/library/search_text_form_field.dart';
import 'package:mangayomi/views/manga/home/manga_home_screen.dart';
import 'package:mangayomi/views/widgets/bottom_text_widget.dart';
import 'package:mangayomi/views/widgets/manga_image_card_widget.dart';
class GlobalSearchScreen extends ConsumerStatefulWidget {
const GlobalSearchScreen({

View file

@ -1,5 +1,3 @@
import 'dart:developer';
import 'package:intl/intl.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
@ -52,6 +50,7 @@ class _HistoryScreenState extends ConsumerState<HistoryScreen> {
},
onSuffixPressed: () {
_textEditingController.clear();
setState(() {});
},
onPressed: () {
setState(() {

View file

@ -1,5 +1,3 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:hive_flutter/hive_flutter.dart';
@ -62,6 +60,7 @@ class _LibraryScreenState extends ConsumerState<LibraryScreen>
controller: _textEditingController,
onSuffixPressed: () {
_textEditingController.clear();
setState(() {});
},
)
: IconButton(

View file

@ -1,5 +1,3 @@
import 'dart:developer';
import 'package:mangayomi/providers/hive_provider.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'library_state_provider.g.dart';

View file

@ -33,8 +33,10 @@ class SeachFormTextField extends StatelessWidget {
icon: const Icon(
Icons.arrow_back,
)),
suffixIcon: IconButton(
onPressed: onSuffixPressed, icon: const Icon(Icons.clear)),
suffixIcon: controller.text.isEmpty
? null
: IconButton(
onPressed: onSuffixPressed, icon: const Icon(Icons.clear)),
enabledBorder: const OutlineInputBorder(
borderSide: BorderSide.none,
),

View file

@ -1,5 +1,3 @@
import 'dart:developer';
import 'package:mangayomi/models/manga_history.dart';
import 'package:mangayomi/models/manga_reader.dart';
import 'package:mangayomi/models/model_manga.dart';

View file

@ -0,0 +1,105 @@
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:package_info_plus/package_info_plus.dart';
class AboutScreen extends StatefulWidget {
const AboutScreen({super.key});
@override
State<AboutScreen> createState() => _AboutScreenState();
}
class _AboutScreenState extends State<AboutScreen> {
Future<void> _launchInBrowser(Uri url) async {
if (!await launchUrl(
url,
mode: LaunchMode.externalApplication,
)) {
throw 'Could not launch $url';
}
}
PackageInfo _packageInfo = PackageInfo(
appName: 'Unknown',
packageName: 'Unknown',
version: 'Unknown',
buildNumber: 'Unknown',
buildSignature: 'Unknown',
installerStore: 'Unknown',
);
Future<void> _initPackageInfo() async {
final info = await PackageInfo.fromPlatform();
if (mounted) {
setState(() {
_packageInfo = info;
});
}
}
@override
void initState() {
_initPackageInfo();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('About'),
),
body: Column(
children: [
const SizedBox(height: 150, child: Center(child: Text("LOGO"))),
Flexible(
flex: 3,
child: Column(
children: [
const Divider(
color: Colors.grey,
),
ListTile(
onTap: () {},
title: const Text('Version'),
subtitle: Text(
'Beta (${_packageInfo.version})',
style: const TextStyle(fontSize: 12),
),
),
ListTile(
onTap: () {},
title: const Text('Check for update'),
),
// ListTile(
// onTap: () {},
// title: const Text("What's news"),
// ),
// ListTile(
// onTap: () {},
// title: const Text('Help translation'),
// ),
// ListTile(
// onTap: () {},
// title: const Text('Privacy policy'),
// ),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
IconButton(
onPressed: () {
_launchInBrowser(Uri.parse(
'https://github.com/kodjodevf/mangayomi'));
},
icon: const Icon(FontAwesomeIcons.github))
],
)
],
),
),
],
),
);
}
}

View file

@ -1,4 +1,3 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:mangayomi/views/more/widgets/incognito_mode_widget.dart';
@ -77,7 +76,9 @@ class MoreScreen extends StatelessWidget {
title: 'Settings',
),
ListTileWidget(
onTap: () {},
onTap: () {
context.push('/about');
},
icon: Icons.info_outline,
title: 'About',
),

View file

@ -10,14 +10,32 @@ class SettingsScreen extends StatelessWidget {
return Scaffold(
appBar: AppBar(
title: const Text("Settings"),
actions: [],
),
body: Column(
children: [
ListTileWidget(
title: 'General', icon: Icons.tune_rounded, onTap: () {}),
ListTileWidget(
title: 'Appearance',
icon: Icons.color_lens_rounded,
onTap: () => context.push('/appearance')),
ListTileWidget(
title: 'Library',
icon: Icons.collections_bookmark_rounded,
onTap: () {}),
ListTileWidget(
title: 'Reader',
icon: Icons.chrome_reader_mode_rounded,
onTap: () {}),
ListTileWidget(
title: 'Explore', icon: Icons.explore_rounded, onTap: () {}),
ListTileWidget(
onTap: () {
context.push('/about');
},
icon: Icons.info_outline,
title: 'About',
),
],
),
);

View file

@ -7,9 +7,13 @@
#include "generated_plugin_registrant.h"
#include <flutter_js/flutter_js_plugin.h>
#include <url_launcher_linux/url_launcher_plugin.h>
void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) flutter_js_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterJsPlugin");
flutter_js_plugin_register_with_registrar(flutter_js_registrar);
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
}

View file

@ -4,6 +4,7 @@
list(APPEND FLUTTER_PLUGIN_LIST
flutter_js
url_launcher_linux
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST

View file

@ -6,11 +6,15 @@ import FlutterMacOS
import Foundation
import flutter_js
import package_info_plus
import path_provider_foundation
import sqflite
import url_launcher_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FlutterJsPlugin.register(with: registry.registrar(forPlugin: "FlutterJsPlugin"))
FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
}

View file

@ -608,6 +608,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.0"
package_info_plus:
dependency: "direct main"
description:
name: package_info_plus
sha256: cbff87676c352d97116af6dbea05aa28c4d65eb0f6d5677a520c11a69ca9a24d
url: "https://pub.dev"
source: hosted
version: "3.1.0"
package_info_plus_platform_interface:
dependency: transitive
description:
name: package_info_plus_platform_interface
sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
path:
dependency: transitive
description:
@ -925,6 +941,70 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.3.1"
url_launcher:
dependency: "direct main"
description:
name: url_launcher
sha256: "75f2846facd11168d007529d6cd8fcb2b750186bea046af9711f10b907e1587e"
url: "https://pub.dev"
source: hosted
version: "6.1.10"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
sha256: dd729390aa936bf1bdf5cd1bc7468ff340263f80a2c4f569416507667de8e3c8
url: "https://pub.dev"
source: hosted
version: "6.0.26"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2"
url: "https://pub.dev"
source: hosted
version: "6.1.4"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
sha256: "206fb8334a700ef7754d6a9ed119e7349bc830448098f21a69bf1b4ed038cabc"
url: "https://pub.dev"
source: hosted
version: "3.0.4"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
sha256: "91ee3e75ea9dadf38036200c5d3743518f4a5eb77a8d13fda1ee5764373f185e"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
url_launcher_platform_interface:
dependency: transitive
description:
name: url_launcher_platform_interface
sha256: "6c9ca697a5ae218ce56cece69d46128169a58aa8653c1b01d26fcd4aad8c4370"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
url_launcher_web:
dependency: transitive
description:
name: url_launcher_web
sha256: "81fe91b6c4f84f222d186a9d23c73157dc4c8e1c71489c4d08be1ad3b228f1aa"
url: "https://pub.dev"
source: hosted
version: "2.0.16"
url_launcher_windows:
dependency: transitive
description:
name: url_launcher_windows
sha256: a83ba3607a507758669cfafb03f9de09bf6e6280c14d9b9cb18f013e406dcacd
url: "https://pub.dev"
source: hosted
version: "3.0.5"
uuid:
dependency: transitive
description:

View file

@ -53,6 +53,8 @@ dependencies:
# rive: ^0.10.3
google_fonts: ^4.0.3
# draggable_menu: ^0.2.0
url_launcher: ^6.1.10
package_info_plus: ^3.0.2
# The following adds the Cupertino Icons font to your application.

View file

@ -7,8 +7,11 @@
#include "generated_plugin_registrant.h"
#include <flutter_js/flutter_js_plugin.h>
#include <url_launcher_windows/url_launcher_windows.h>
void RegisterPlugins(flutter::PluginRegistry* registry) {
FlutterJsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FlutterJsPlugin"));
UrlLauncherWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
}

View file

@ -4,6 +4,7 @@
list(APPEND FLUTTER_PLUGIN_LIST
flutter_js
url_launcher_windows
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST