Improve UI of empty Explore and Category pages.

This commit is contained in:
2025-01-26 12:35:49 +08:00
parent ba4eff66db
commit 2534c55ffb
4 changed files with 42 additions and 21 deletions

View File

@@ -6,6 +6,7 @@ class NetworkError extends StatelessWidget {
required this.message,
this.retry,
this.withAppbar = true,
this.buttonText,
});
final String message;
@@ -14,6 +15,8 @@ class NetworkError extends StatelessWidget {
final bool withAppbar;
final String? buttonText;
@override
Widget build(BuildContext context) {
var cfe = CloudflareException.fromString(message);
@@ -60,7 +63,7 @@ class NetworkError extends StatelessWidget {
else
FilledButton(
onPressed: retry,
child: Text('Retry'.tl),
child: Text(buttonText ?? 'Retry'.tl),
),
],
),

View File

@@ -10,6 +10,7 @@ import 'package:venera/utils/ext.dart';
import 'package:venera/utils/translations.dart';
import 'category_comics_page.dart';
import 'comic_source_page.dart';
class CategoriesPage extends StatefulWidget {
const CategoriesPage({super.key});
@@ -63,23 +64,31 @@ class _CategoriesPageState extends State<CategoriesPage> {
appdata.settings.removeListener(onSettingsChanged);
}
Widget buildEmpty() {
var msg = "No Category Pages".tl;
msg += '\n';
VoidCallback onTap;
if (ComicSource.isEmpty) {
msg += "Please add some sources".tl;
onTap = () {
context.to(() => ComicSourcePage());
};
} else {
msg += "Please check your settings".tl;
onTap = addPage;
}
return NetworkError(
message: msg,
retry: onTap,
withAppbar: false,
buttonText: "Manage".tl,
);
}
@override
Widget build(BuildContext context) {
if (categories.isEmpty) {
var msg = "No Category Pages".tl;
msg += '\n';
if (ComicSource.isEmpty) {
msg += "Add a comic source in home page".tl;
} else {
msg += "Please check your settings".tl;
}
return NetworkError(
message: msg,
retry: () {
setState(() {});
},
withAppbar: false,
);
return buildEmpty();
}
return Material(

View File

@@ -5,6 +5,7 @@ import 'package:venera/foundation/appdata.dart';
import 'package:venera/foundation/comic_source/comic_source.dart';
import 'package:venera/foundation/res.dart';
import 'package:venera/foundation/state_controller.dart';
import 'package:venera/pages/comic_source_page.dart';
import 'package:venera/pages/search_result_page.dart';
import 'package:venera/pages/settings/settings_page.dart';
import 'package:venera/utils/ext.dart';
@@ -122,15 +123,21 @@ class _ExplorePageState extends State<ExplorePage>
Widget buildEmpty() {
var msg = "No Explore Pages".tl;
msg += '\n';
VoidCallback onTap;
if (ComicSource.isEmpty) {
msg += "Add a comic source in home page".tl;
msg += "Please add some sources".tl;
onTap = () {
context.to(() => ComicSourcePage());
};
} else {
msg += "Please check your settings".tl;
onTap = addPage;
}
return NetworkError(
message: msg,
retry: onSettingsChanged,
retry: onTap,
withAppbar: false,
buttonText: "Manage".tl,
);
}