Skip to content
This repository has been archived by the owner on Nov 7, 2023. It is now read-only.

Commit

Permalink
refactor(settings_page): split about into developers and about
Browse files Browse the repository at this point in the history
  • Loading branch information
zyrouge committed Nov 5, 2021
1 parent 1061cbb commit 9016bb1
Show file tree
Hide file tree
Showing 7 changed files with 127 additions and 44 deletions.
7 changes: 7 additions & 0 deletions lib/config/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,11 @@ abstract class Config {

static const String releasesURL =
'https://api.github.com/repos/$repoAuthor/$repoName/releases?per_page=20';

static const String gitHubURL = 'https://github.com/$repoAuthor/$repoName';
static const String gitHubIssuesURL = '$gitHubURL/issues';
static const String websiteURL = 'https://yukino-app.github.io';
static const String discordURL = 'https://yukino-app.github.io/discord';
static const String wikiURL = 'https://yukino-app.github.io/wiki';
static const String patreonURL = 'https://yukino-app.github.io/patreon';
}
7 changes: 7 additions & 0 deletions lib/modules/translator/translations.dart
Original file line number Diff line number Diff line change
Expand Up @@ -139,4 +139,11 @@ abstract class TranslationSentences {
String about();
String copyLogsToClipboard();
String copiedLogsToClipboard();
String github();
String patreon();
String website();
String wiki();
String discord();
String developers();
String reportABug();
}
21 changes: 21 additions & 0 deletions lib/modules/translator/translations/en.dart
Original file line number Diff line number Diff line change
Expand Up @@ -405,4 +405,25 @@ class Sentences extends TranslationSentences {

@override
String copiedLogsToClipboard() => 'Copied logs to clipboard.';

@override
String github() => 'GitHub';

@override
String patreon() => 'Patreon';

@override
String website() => 'Website';

@override
String wiki() => 'Wiki';

@override
String discord() => 'Discord';

@override
String developers() => 'Developers';

@override
String reportABug() => 'Report a bug';
}
28 changes: 15 additions & 13 deletions lib/ui/components/trackers/profile_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,13 @@ class _ProfilePageState extends State<ProfilePage>
)
.toList();

late final TabController tabController;
late final PageController pageController;
late final TabController tabController = TabController(
length: tabs.length,
vsync: this,
);
late final PageController pageController = PageController(
initialPage: tabController.index,
);

final Widget loader = const Center(
child: CircularProgressIndicator(),
Expand All @@ -67,26 +72,23 @@ class _ProfilePageState extends State<ProfilePage>
void initState() {
super.initState();

tabController = TabController(
length: tabs.length,
vsync: this,
);

pageController = PageController(
initialPage: tabController.index,
);

tabController.addListener(() {
tabController.addListener(() async {
if (tabController.index != pageController.page &&
pageController.hasClients) {
pageController.animateToPage(
await pageController.animateToPage(
tabController.index,
duration: Defaults.animationsSlower,
curve: Curves.easeInOut,
);
}
});

pageController.addListener(() {
if (tabController.index != pageController.page) {
tabController.animateTo(pageController.page!.toInt());
}
});

onReady(() async {
final dynamic _user = await widget.getUserInfo();

Expand Down
56 changes: 28 additions & 28 deletions lib/ui/pages/settings_page/setting_labels/about.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,30 @@
import 'package:clipboard/clipboard.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../../../config/app.dart';
import '../../../../modules/app/state.dart';
import '../../../../modules/database/database.dart';
import '../../../../modules/helpers/assets.dart';
import '../../../../modules/helpers/logger.dart';
import '../../../../modules/helpers/ui.dart';
import '../../../../modules/translator/translator.dart';
import '../../../../modules/utils/function.dart';
import '../../../components/size_aware_builder.dart';

class _Link {
const _Link(this.text, this.url, [this.icon = Icons.link]);

final String url;
final String text;
final IconData icon;
}

final List<_Link> _links = <_Link>[
_Link(Translator.t.website(), Config.websiteURL, Icons.language),
_Link(Translator.t.wiki(), Config.wikiURL, Icons.article),
_Link(Translator.t.patreon(), Config.patreonURL, Icons.favorite),
_Link(Translator.t.reportABug(), Config.gitHubIssuesURL, Icons.bug_report),
_Link(Translator.t.github(), Config.gitHubURL),
_Link(Translator.t.discord(), Config.discordURL),
];

List<Widget> getSettingsAbout(
final BuildContext context,
final SettingsSchema settings,
Expand Down Expand Up @@ -97,30 +111,16 @@ List<Widget> getSettingsAbout(
),
),
),
ListTile(
leading: Icon(
Icons.feed,
color: Theme.of(context).primaryColor,
..._links.map(
(final _Link x) => ListTile(
leading: Icon(
x.icon,
color: Theme.of(context).primaryColor,
),
title: Text(x.text),
onTap: () async {
await launch(x.url);
},
),
title: Text(Translator.t.copyLogsToClipboard()),
onTap: () async {
final String logs = await Logger.read();
await FlutterClipboard.copy(logs);

// ignore: use_build_context_synchronously
FunctionUtils.withValue(
context,
(final BuildContext context) =>
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
Translator.t.copiedLogsToClipboard(),
style: Theme.of(context).textTheme.bodyText1,
),
backgroundColor: Theme.of(context).cardColor,
),
),
);
},
),
];
40 changes: 40 additions & 0 deletions lib/ui/pages/settings_page/setting_labels/developers.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import 'package:clipboard/clipboard.dart';
import 'package:flutter/material.dart';
import '../../../../modules/database/database.dart';
import '../../../../modules/helpers/logger.dart';
import '../../../../modules/translator/translator.dart';
import '../../../../modules/utils/function.dart';

List<Widget> getSettingsDevelopers(
final BuildContext context,
final SettingsSchema settings,
final Future<void> Function() save,
) =>
<Widget>[
ListTile(
leading: Icon(
Icons.feed,
color: Theme.of(context).primaryColor,
),
title: Text(Translator.t.copyLogsToClipboard()),
onTap: () async {
final String logs = await Logger.read();
await FlutterClipboard.copy(logs);

// ignore: use_build_context_synchronously
FunctionUtils.withValue(
context,
(final BuildContext context) =>
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
Translator.t.copiedLogsToClipboard(),
style: Theme.of(context).textTheme.bodyText1,
),
backgroundColor: Theme.of(context).cardColor,
),
),
);
},
),
];
12 changes: 9 additions & 3 deletions lib/ui/pages/settings_page/settings_page.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import './setting_labels/about.dart';
import './setting_labels/anime.dart';
import './setting_labels/developers.dart';
import './setting_labels/manga.dart';
import './setting_labels/preference.dart';
import '../../../config/defaults.dart';
Expand All @@ -15,6 +16,7 @@ enum Pages {
preference,
anime,
manga,
developers,
about,
}

Expand All @@ -34,9 +36,7 @@ class SettingsCategory {
class Page extends StatefulWidget {
const Page({
final Key? key,
}) : super(
key: key,
);
}) : super(key: key);

@override
_PageState createState() => _PageState();
Expand All @@ -62,6 +62,12 @@ class _PageState extends State<Page> {
Icons.book,
getSettingsManga,
),
SettingsCategory(
Translator.t.developers(),
Pages.developers,
Icons.developer_mode,
getSettingsDevelopers,
),
SettingsCategory(
Translator.t.about(),
Pages.about,
Expand Down

0 comments on commit 9016bb1

Please sign in to comment.