diff --git a/lib/pages/detail/view.dart b/lib/pages/detail/view.dart index 258901cf..9475a773 100644 --- a/lib/pages/detail/view.dart +++ b/lib/pages/detail/view.dart @@ -27,11 +27,11 @@ class DetailPage extends StatefulWidget { Key? key, required this.url, required this.package, - this.heroTag, + this.tag, }) : super(key: key); final String url; final String package; - final String? heroTag; + final String? tag; @override State createState() => _DetailPageState(); @@ -46,15 +46,18 @@ class _DetailPageState extends State { DetailPageController( package: widget.package, url: widget.url, - heroTag: widget.heroTag, + heroTag: widget.tag, ), + tag: widget.tag, ); super.initState(); } @override void dispose() { - Get.delete(); + Get.delete( + tag: widget.tag, + ); super.dispose(); } @@ -95,7 +98,9 @@ class _DetailPageState extends State { c.detail?.title ?? '', controller: c.scrollController, ), - flexibleSpace: const DetailAppbarflexibleSpace(), + flexibleSpace: DetailAppbarflexibleSpace( + tag: widget.tag, + ), bottom: TabBar( tabs: tabs, ), @@ -139,8 +144,13 @@ class _DetailPageState extends State { padding: const EdgeInsets.all(8), child: TabBarView( children: [ - if (!LayoutUtils.isTablet) const DetailEpisodes(), - const DetailOverView(), + if (!LayoutUtils.isTablet) + DetailEpisodes( + tag: widget.tag, + ), + DetailOverView( + tag: widget.tag, + ), if (c.type == ExtensionType.bangumi) Obx(() { if (c.tmdbDetail == null || c.tmdbDetail!.casts.isEmpty) { diff --git a/lib/pages/detail/widgets/detail_appbar_flexible_space.dart b/lib/pages/detail/widgets/detail_appbar_flexible_space.dart index 6ac6c2f0..9071aadf 100644 --- a/lib/pages/detail/widgets/detail_appbar_flexible_space.dart +++ b/lib/pages/detail/widgets/detail_appbar_flexible_space.dart @@ -10,15 +10,18 @@ import 'package:miru_app/widgets/cover.dart'; class DetailAppbarflexibleSpace extends StatefulWidget { const DetailAppbarflexibleSpace({ Key? key, + this.tag, }) : super(key: key); + final String? tag; + @override State createState() => _DetailAppbarflexibleSpaceState(); } class _DetailAppbarflexibleSpaceState extends State { - final DetailPageController c = Get.find(); + late DetailPageController c = Get.find(tag: widget.tag); double _offset = 1; @@ -122,7 +125,9 @@ class _DetailAppbarflexibleSpaceState extends State { style: Get.theme.textTheme.titleLarge, ), const SizedBox(height: 10), - const DetailExtensionTile(), + DetailExtensionTile( + tag: widget.tag, + ), ], ), ), @@ -130,7 +135,7 @@ class _DetailAppbarflexibleSpaceState extends State { ], ), ), - const Positioned( + Positioned( top: null, left: 20, right: 20, @@ -139,14 +144,18 @@ class _DetailAppbarflexibleSpaceState extends State { children: [ Expanded( flex: 4, - child: DetailContinuePlay(), + child: DetailContinuePlay( + tag: widget.tag, + ), ), - SizedBox( + const SizedBox( width: 10, ), Expanded( flex: 3, - child: DetailFavoriteButton(), + child: DetailFavoriteButton( + tag: widget.tag, + ), ) ], ), diff --git a/lib/pages/detail/widgets/detail_continue_play.dart b/lib/pages/detail/widgets/detail_continue_play.dart index 7f90519a..b7b66ca7 100644 --- a/lib/pages/detail/widgets/detail_continue_play.dart +++ b/lib/pages/detail/widgets/detail_continue_play.dart @@ -10,13 +10,16 @@ import 'package:miru_app/widgets/platform_widget.dart'; class DetailContinuePlay extends StatefulWidget { const DetailContinuePlay({ Key? key, + this.tag, }) : super(key: key); + final String? tag; + @override State createState() => _DetailContinuePlayState(); } class _DetailContinuePlayState extends State { - late DetailPageController c = Get.find(); + late DetailPageController c = Get.find(tag: widget.tag); Widget _buildAndroid(BuildContext context) { return Obx(() { diff --git a/lib/pages/detail/widgets/detail_episodes.dart b/lib/pages/detail/widgets/detail_episodes.dart index 9fb2fc82..a6bf703f 100644 --- a/lib/pages/detail/widgets/detail_episodes.dart +++ b/lib/pages/detail/widgets/detail_episodes.dart @@ -13,14 +13,16 @@ import 'package:miru_app/widgets/platform_widget.dart'; class DetailEpisodes extends StatefulWidget { const DetailEpisodes({ Key? key, + this.tag, }) : super(key: key); + final String? tag; @override State createState() => _DetailEpisodesState(); } class _DetailEpisodesState extends State { - late DetailPageController c = Get.find(); + late DetailPageController c = Get.find(tag: widget.tag); List>? comboBoxItems; List>? dropdownItems; late List episodes = []; diff --git a/lib/pages/detail/widgets/detail_extension_tile.dart b/lib/pages/detail/widgets/detail_extension_tile.dart index f3673101..7212c0ab 100644 --- a/lib/pages/detail/widgets/detail_extension_tile.dart +++ b/lib/pages/detail/widgets/detail_extension_tile.dart @@ -6,11 +6,16 @@ import 'package:miru_app/utils/extension.dart'; import 'package:miru_app/widgets/cache_network_image.dart'; class DetailExtensionTile extends StatelessWidget { - const DetailExtensionTile({Key? key}) : super(key: key); + const DetailExtensionTile({ + Key? key, + this.tag, + }) : super(key: key); + + final String? tag; @override Widget build(BuildContext context) { - final c = Get.find(); + final c = Get.find(tag: tag); return Obx(() { if (c.extension == null) { return Text(FlutterI18n.translate( diff --git a/lib/pages/detail/widgets/detail_favorite_button.dart b/lib/pages/detail/widgets/detail_favorite_button.dart index 2eafe210..60467b8a 100644 --- a/lib/pages/detail/widgets/detail_favorite_button.dart +++ b/lib/pages/detail/widgets/detail_favorite_button.dart @@ -6,7 +6,11 @@ import 'package:miru_app/utils/i18n.dart'; import 'package:miru_app/widgets/platform_widget.dart'; class DetailFavoriteButton extends StatefulWidget { - const DetailFavoriteButton({Key? key}) : super(key: key); + const DetailFavoriteButton({ + Key? key, + this.tag, + }) : super(key: key); + final String? tag; @override fluent.State createState() => @@ -14,7 +18,7 @@ class DetailFavoriteButton extends StatefulWidget { } class _DetailFavoriteButtonState extends State { - final c = Get.find(); + late DetailPageController c = Get.find(tag: widget.tag); Widget _buildAndroid(BuildContext context) { return Obx( diff --git a/lib/pages/detail/widgets/detail_overview.dart b/lib/pages/detail/widgets/detail_overview.dart index 535b9e87..1ad7a33a 100644 --- a/lib/pages/detail/widgets/detail_overview.dart +++ b/lib/pages/detail/widgets/detail_overview.dart @@ -6,11 +6,16 @@ import 'package:miru_app/utils/i18n.dart'; import 'package:miru_app/widgets/cache_network_image.dart'; class DetailOverView extends StatelessWidget { - const DetailOverView({Key? key}) : super(key: key); + const DetailOverView({ + Key? key, + this.tag, + }) : super(key: key); + + final String? tag; @override Widget build(BuildContext context) { - final c = Get.find(); + final c = Get.find(tag: tag); return Padding( padding: const EdgeInsets.only( left: 16, diff --git a/lib/widgets/extension_item_card.dart b/lib/widgets/extension_item_card.dart index 908e605c..4dc3f8bc 100644 --- a/lib/widgets/extension_item_card.dart +++ b/lib/widgets/extension_item_card.dart @@ -36,7 +36,7 @@ class _ExtensionItemCardState extends State { Get.to(DetailPage( url: widget.url, package: widget.package, - heroTag: widget.url, + tag: widget.url, )); }, ),