mirror of
https://github.com/ErfanRht/MovieLab.git
synced 2026-03-13 10:23:24 +08:00
add: actor box
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:movielab/models/actor_models/actor_preview_model.dart';
|
||||
import 'package:movielab/models/hive/models/show_preview.dart';
|
||||
import 'package:movielab/models/show_models/show_preview_model.dart';
|
||||
import 'package:movielab/models/user_model/user_model.dart';
|
||||
@@ -145,6 +146,11 @@ ShowPreview convertFullShowToShowPreview({required FullShow fullShow}) {
|
||||
);
|
||||
}
|
||||
|
||||
ActorPreview convertShowPreviewToActorPreview({required ShowPreview show}) {
|
||||
return ActorPreview(
|
||||
id: show.id, name: show.title, image: show.image, asCharacter: "");
|
||||
}
|
||||
|
||||
Future<String> getShowCrew({required FullShow fullShow}) async {
|
||||
List<String> crewList = [];
|
||||
String crew = "";
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:movielab/models/actor_models/actor_preview_model.dart';
|
||||
import 'package:movielab/modules/tools/navigate.dart';
|
||||
import 'package:movielab/pages/actor/actor_page/actor_page.dart';
|
||||
import 'package:movielab/pages/show/show_box/show_box_common.dart';
|
||||
|
||||
import '../../../models/actor_models/actor_preview_model.dart';
|
||||
|
||||
class ShowActorBox extends StatelessWidget {
|
||||
class CompressedActorBox extends StatelessWidget {
|
||||
final ActorPreview actor;
|
||||
const ShowActorBox({Key? key, required this.actor}) : super(key: key);
|
||||
const CompressedActorBox({Key? key, required this.actor}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
57
lib/pages/actor/actor_box/expanded_actor_box.dart
Normal file
57
lib/pages/actor/actor_box/expanded_actor_box.dart
Normal file
@@ -0,0 +1,57 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||
import 'package:movielab/models/actor_models/actor_preview_model.dart';
|
||||
import 'package:movielab/modules/tools/navigate.dart';
|
||||
import 'package:movielab/pages/actor/actor_page/actor_page.dart';
|
||||
import 'package:movielab/pages/show/show_box/show_box_common.dart';
|
||||
|
||||
class ExpandedActorBox extends StatelessWidget {
|
||||
final ActorPreview actor;
|
||||
final String preTag;
|
||||
const ExpandedActorBox({Key? key, required this.actor, this.preTag = ""})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 7.5),
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigate.pushHeroicTo(context, ActorPage(id: actor.id));
|
||||
},
|
||||
borderRadius: BorderRadius.circular(15),
|
||||
child: Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 7.5),
|
||||
width: MediaQuery.of(context).size.width - 40,
|
||||
child: Row(
|
||||
children: [
|
||||
boxImage(
|
||||
image: actor.image,
|
||||
tag: "actor_${actor.id}",
|
||||
width: 70,
|
||||
height: 70,
|
||||
radius: 100,
|
||||
placeholder: const SpinKitThreeBounce(
|
||||
color: Colors.white,
|
||||
size: 15.0,
|
||||
),
|
||||
),
|
||||
const SizedBox(
|
||||
width: 10,
|
||||
),
|
||||
Text(actor.name,
|
||||
textAlign: TextAlign.center,
|
||||
maxLines: 2,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
softWrap: true,
|
||||
style: const TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 15,
|
||||
fontWeight: FontWeight.w700)),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,8 @@ import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:movielab/constants/colors.dart';
|
||||
import 'package:movielab/constants/types.dart';
|
||||
import 'package:movielab/models/hive/convertor.dart';
|
||||
import 'package:movielab/pages/actor/actor_box/expanded_actor_box.dart';
|
||||
import 'package:movielab/pages/main/main_controller.dart';
|
||||
import 'package:movielab/pages/main/search/search.dart';
|
||||
import 'package:movielab/pages/main/search/search_bar/search_bar.dart';
|
||||
@@ -59,13 +61,16 @@ class SearchPage extends StatelessWidget {
|
||||
children: [
|
||||
AnimatedSwitcher(
|
||||
duration: const Duration(milliseconds: 200),
|
||||
child: _buildBody(_.movieResult, _.loadingStatus)),
|
||||
child:
|
||||
_buildBody("movies", _.movieResult, _.loadingStatus)),
|
||||
AnimatedSwitcher(
|
||||
duration: const Duration(milliseconds: 200),
|
||||
child: _buildBody(_.seriesResult, _.loadingStatus)),
|
||||
child:
|
||||
_buildBody("series", _.seriesResult, _.loadingStatus)),
|
||||
AnimatedSwitcher(
|
||||
duration: const Duration(milliseconds: 200),
|
||||
child: _buildBody(_.peopleResult, _.loadingStatus))
|
||||
child:
|
||||
_buildBody("people", _.peopleResult, _.loadingStatus))
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -74,7 +79,7 @@ class SearchPage extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildBody(result, loadingStatus) {
|
||||
Widget _buildBody(tab, result, loadingStatus) {
|
||||
switch (loadingStatus) {
|
||||
case RequestResult.NOT_STARTED:
|
||||
return Center(
|
||||
@@ -114,10 +119,16 @@ class SearchPage extends StatelessWidget {
|
||||
physics: const BouncingScrollPhysics(),
|
||||
controller: _.searchScrollController,
|
||||
itemBuilder: (context, index) {
|
||||
return ExpandedItemBox(
|
||||
showPreview: result![index],
|
||||
preTag: "Search_page_",
|
||||
);
|
||||
return tab != "people"
|
||||
? ExpandedItemBox(
|
||||
showPreview: result![index],
|
||||
preTag: "Search_page_",
|
||||
)
|
||||
: ExpandedActorBox(
|
||||
actor: convertShowPreviewToActorPreview(
|
||||
show: result![index]),
|
||||
preTag: "Search_page_",
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:movielab/pages/actor/actor_box/actor_box.dart';
|
||||
import 'package:movielab/pages/actor/actor_box/compressed_actor_box.dart';
|
||||
|
||||
import '../../../../widgets/section_title.dart';
|
||||
|
||||
@@ -26,7 +26,7 @@ class ShowPageCast extends StatelessWidget {
|
||||
scrollDirection: Axis.horizontal,
|
||||
itemCount: actorList.length,
|
||||
itemBuilder: (context, index) {
|
||||
return ShowActorBox(actor: actorList[index]);
|
||||
return CompressedActorBox(actor: actorList[index]);
|
||||
},
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user