diff --git a/lib/utilis/utils.dart b/lib/utilis/utils.dart index 439be74..ade62d2 100644 --- a/lib/utilis/utils.dart +++ b/lib/utilis/utils.dart @@ -4,6 +4,14 @@ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; class Utils { + static double averageRating(List rating) { + var avgRating = 0; + for (int i = 0; i < rating.length; i++) { + avgRating = avgRating + rating[i]; + } + return double.parse((avgRating / rating.length).toStringAsFixed(1)); + } + static void fieldFocusChange( BuildContext context, FocusNode current, diff --git a/lib/view/homeview.dart b/lib/view/homeview.dart index c787ddd..eb6717c 100644 --- a/lib/view/homeview.dart +++ b/lib/view/homeview.dart @@ -3,6 +3,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:mvvm/data/response/status.dart'; import 'package:mvvm/resources/component/colors.dart'; import 'package:mvvm/utilis/routes_name.dart'; +import 'package:mvvm/utilis/utils.dart'; import 'package:mvvm/view_model/home_view_model.dart'; import 'package:mvvm/view_model/user_view_model.dart'; import 'package:provider/provider.dart'; @@ -63,12 +64,14 @@ class _HomeScreenState extends State { builder: (context, value, _) { switch (value.moviesList.status) { case Status.LOADING: - return CircularProgressIndicator(); + return Center(child: CircularProgressIndicator()); case Status.ERROR: - return Text( - value.moviesList.message.toString(), - style: TextStyle(color: Colors.black), + return Center( + child: Text( + value.moviesList.message.toString(), + style: TextStyle(color: Colors.black), + ), ); case Status.COMPLETED: @@ -77,9 +80,35 @@ class _HomeScreenState extends State { value.moviesList.data!.movies!.length, // ⚠ Required itemBuilder: (context, index) { return Card( - child: Text( - 'asdf', - style: TextStyle(color: Colors.black), + child: ListTile( + leading: Image.network( + value.moviesList.data!.movies![index].posterurl + .toString(), + errorBuilder: (context, error, stack) { + return Icon(Icons.error, color: Colors.red); + }, + height: 40.h, + width: 40.w, + fit: BoxFit.cover, + ), + title: Text( + value.moviesList.data!.movies![index].title + .toString(), + ), + subtitle: Text( + value.moviesList.data!.movies![index].year.toString(), + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Utils.averageRating( + value.moviesList.data!.movies![index].ratings!, + ).toStringAsFixed(1), + ), + Icon(Icons.star, color: Colors.yellow), + ], + ), ), ); },