Skip to content

Commit

Permalink
feat: cover viewer
Browse files Browse the repository at this point in the history
  • Loading branch information
TesteurManiak committed May 6, 2024
1 parent 001a7c7 commit db671ae
Show file tree
Hide file tree
Showing 6 changed files with 71 additions and 5 deletions.
1 change: 1 addition & 0 deletions devtools_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
extensions:
16 changes: 16 additions & 0 deletions lib/features/details/navigation/cover_viewer_page.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import 'package:flutter/material.dart';
import 'package:flutter_manga_reader/features/details/views/cover_viewer_view.dart';

class CoverViewerPage extends PageRouteBuilder<void> {
CoverViewerPage(String? coverUrl)
: super(
opaque: false,
fullscreenDialog: true,
maintainState: true,
pageBuilder: (context, _, __) => _pageBuilder(context, coverUrl),
);

static Widget _pageBuilder(BuildContext context, String? url) {
return CoverViewerView(url);
}
}
29 changes: 29 additions & 0 deletions lib/features/details/views/cover_viewer_view.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import 'package:flutter/material.dart';
import 'package:flutter_manga_reader/core/widgets/app_network_image.dart';

class CoverViewerView extends StatelessWidget {
const CoverViewerView(this.coverUrl, {super.key});

final String? coverUrl;

static const tag = 'cover_viewer';

@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () => Navigator.pop(context),
child: Scaffold(
backgroundColor: Colors.black54,
body: Center(
child: Hero(
tag: tag,
child: AppNetworkImage(
url: coverUrl,
fit: BoxFit.cover,
),
),
),
),
);
}
}
18 changes: 14 additions & 4 deletions lib/features/details/views/details_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import 'package:flutter_manga_reader/core/widgets/gradient_image.dart';
import 'package:flutter_manga_reader/core/widgets/slidable.dart';
import 'package:flutter_manga_reader/core/widgets/sliver_pull_to_refresh.dart';
import 'package:flutter_manga_reader/features/details/controllers/details_controller.dart';
import 'package:flutter_manga_reader/features/details/navigation/cover_viewer_page.dart';
import 'package:flutter_manga_reader/features/details/use_cases/is_manga_favorite.dart';
import 'package:flutter_manga_reader/features/details/views/cover_viewer_view.dart';
import 'package:flutter_manga_reader/features/details/widgets/chapter_tile.dart';
import 'package:flutter_manga_reader/features/details/widgets/details_bottom_bar.dart';
import 'package:flutter_manga_reader/features/details/widgets/details_button.dart';
Expand Down Expand Up @@ -236,10 +238,18 @@ class _SliverHeader extends StatelessWidget {
children: [
ClipRRect(
borderRadius: BorderRadius.circular(6),
child: AppNetworkImage(
url: manga?.thumbnailUrl,
width: size.width / 4,
fit: BoxFit.cover,
child: GestureDetector(
onTap: () {
Navigator.push(context, CoverViewerPage(manga?.thumbnailUrl));
},
child: Hero(
tag: CoverViewerView.tag,
child: AppNetworkImage(
url: manga?.thumbnailUrl,
width: size.width / 4,
fit: BoxFit.cover,
),
),
),
),
Expanded(
Expand Down
7 changes: 6 additions & 1 deletion windows/flutter/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ include(${EPHEMERAL_DIR}/generated_config.cmake)
# https://github.com/flutter/flutter/issues/57146.
set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper")

# Set fallback configurations for older versions of the flutter tool.
if (NOT DEFINED FLUTTER_TARGET_PLATFORM)
set(FLUTTER_TARGET_PLATFORM "windows-x64")
endif()

# === Flutter Library ===
set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll")

Expand Down Expand Up @@ -92,7 +97,7 @@ add_custom_command(
COMMAND ${CMAKE_COMMAND} -E env
${FLUTTER_TOOL_ENVIRONMENT}
"${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat"
windows-x64 $<CONFIG>
${FLUTTER_TARGET_PLATFORM} $<CONFIG>
VERBATIM
)
add_custom_target(flutter_assemble DEPENDS
Expand Down
5 changes: 5 additions & 0 deletions windows/runner/flutter_window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ bool FlutterWindow::OnCreate() {
this->Show();
});

// Flutter can complete the first frame before the "show window" callback is
// registered. The following call ensures a frame is pending to ensure the
// window is shown. It is a no-op if the first frame hasn't completed yet.
flutter_controller_->ForceRedraw();

return true;
}

Expand Down

0 comments on commit db671ae

Please sign in to comment.