Skip to content

Commit

Permalink
Review Page, fix overflow view in search & review for small device
Browse files Browse the repository at this point in the history
  • Loading branch information
RadRasyad committed Sep 19, 2022
1 parent 6b2de33 commit 3c20c27
Show file tree
Hide file tree
Showing 15 changed files with 254 additions and 55 deletions.
2 changes: 2 additions & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.latihan.indorestaurant">

<uses-permission android:name="android.permission.INTERNET"/>
<application
android:label="IndoRestaurant"
android:name="${applicationName}"
Expand Down
4 changes: 2 additions & 2 deletions android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
buildscript {
ext.kotlin_version = '1.6.10'
ext.kotlin_version = '1.7.10'
repositories {
google()
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:7.1.2'
classpath 'com.android.tools.build:gradle:7.1.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Expand Down
4 changes: 3 additions & 1 deletion lib/data/model/detail_restaurant.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@

class DetailRestaurantResult {
import 'package:flutter/cupertino.dart';

class DetailRestaurantResult extends ChangeNotifier {
DetailRestaurantResult({
required this.error,
required this.message,
Expand Down
14 changes: 11 additions & 3 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import 'package:flutter/material.dart';
import 'package:indorestaurant/ui/detail_page.dart';
import 'package:indorestaurant/ui/home_page.dart';
import 'package:indorestaurant/ui/review_page.dart';
import 'package:indorestaurant/ui/search_page.dart';
import 'package:indorestaurant/ui/splash_screen.dart';
import 'package:indorestaurant/values/style.dart';
Expand All @@ -17,16 +18,23 @@ class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
title: 'IndoRestaurant',
theme: ThemeData(textTheme: textTheme),
theme: ThemeData(
textTheme: textTheme,
colorScheme:
ThemeData().colorScheme.copyWith(primary: const Color(0xFFE07465)),
),
initialRoute: SplashScreenPage.routeName,
routes: {
SplashScreenPage.routeName: (context) => const SplashScreenPage(),
HomePage.routeName: (context) => const HomePage(),
DetailPage.routeName: (context) => DetailPage(
id:
ModalRoute.of(context)?.settings.arguments as String,
ModalRoute.of(context)?.settings.arguments as String
),
SearchPage.routeName: (context) => const SearchPage()
SearchPage.routeName: (context) => const SearchPage(),
ReviewPage.routeName: (context) => ReviewPage(
id: ModalRoute.of(context)?.settings.arguments as String
)
},
);
}
Expand Down
30 changes: 15 additions & 15 deletions lib/provider/review_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ class ReviewProvider extends ChangeNotifier {
ReviewProvider({required this.apiService});
late ReviewResult _reviewResult;
late ResultState _state;
late Map<dynamic, dynamic> _data;
late Map<dynamic, dynamic> _dataReview;

String _id = '';
String _name = '';
String _review = '';
String _rId = '';
String _rName = '';
String _rReview = '';

ReviewResult get result => _reviewResult;

Expand All @@ -26,7 +26,7 @@ class ReviewProvider extends ChangeNotifier {
try {
_state = ResultState.loading;
notifyListeners();
final review = await apiService.addReview(_data);
final review = await apiService.addReview(_dataReview);
if (review.error == false) {
notifyListeners();
return _state = ResultState.error;
Expand All @@ -40,26 +40,26 @@ class ReviewProvider extends ChangeNotifier {
}
}

void changeName(String name) {
_name = name;
void changeId(String id) {
_rId = id;
notifyListeners();
}

void changeReview(String review) {
_review = review;
void changeName(String name) {
_rName = name;
notifyListeners();
}

void changeId(String id) {
_id = id;
void changeReview(String review) {
_rReview = review;
notifyListeners();
}

void createData() {
_data = {
'id': _id,
'name': _name,
'review': _review,
_dataReview = {
'id': _rId,
'name': _rName,
'review': _rReview,
};
notifyListeners();
}
Expand Down
4 changes: 3 additions & 1 deletion lib/ui/restaurant_detail_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ class RestaurantDetailPage extends StatelessWidget {
Widget build(BuildContext context) {
return Consumer<DetailRestaurantProvider>(builder: (context, state, _) {
if (state.state == ResultState.loading) {
return const Center(child: CircularProgressIndicator());
return const Center(child: CircularProgressIndicator(
color: Color(0xFFE07465),
));
} else if (state.state == ResultState.hasData) {
var restaurant = state.result.restaurant;
return DetailPageView(restaurant: restaurant);
Expand Down
4 changes: 3 additions & 1 deletion lib/ui/restaurant_list_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ class RestaurantListPage extends StatelessWidget {
return Consumer<RestaurantProvider>
(builder: (context, state, _) {
if (state.state == ResultState.loading) {
return const Center(child: CircularProgressIndicator());
return const Center(child: CircularProgressIndicator(
color: Color(0xFFE07465),
));
} else if (state.state == ResultState.hasData) {
return ListView.builder(
shrinkWrap: true,
Expand Down
33 changes: 33 additions & 0 deletions lib/ui/restaurant_review_page.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@

import 'package:flutter/material.dart';
import 'package:indorestaurant/provider/review_provider.dart';
import 'package:provider/provider.dart';

class RestaurantReviewPage extends StatelessWidget {
const RestaurantReviewPage({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
return Consumer<ReviewProvider>(
builder: (context, state, _) {
if (state.state == ResultState.loading) {
return const Center(child: CircularProgressIndicator(
color: Color(0xFFE07465),
));
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
'${state.state} menambahkan review',
),
duration: const Duration(seconds: 1),
),
);
Navigator.pop(context);
return const Material(child: Text(''));
}
},
);
}

}
23 changes: 15 additions & 8 deletions lib/ui/restaurant_search_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,24 @@ class RestaurantSearchPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Consumer<SearchRestaurantProvider>(

builder: (context, state, _) {
if (state.state == ResultState.loading) {
return const Center(child: CircularProgressIndicator());
return const Center(child: CircularProgressIndicator(
color: Color(0xFFE07465),
));
} else if (state.state == ResultState.hasData) {
return ListView.builder(
itemCount: state.result.restaurants.length,
itemBuilder: (context, index) {
var restaurant = state.result.restaurants[index];
return RestaurantItemRow(restaurant: restaurant);
},
);
if(state.result.restaurants.isNotEmpty) {
return ListView.builder(
itemCount: state.result.restaurants.length,
itemBuilder: (context, index) {
var restaurant = state.result.restaurants[index];
return RestaurantItemRow(restaurant: restaurant);
},
);
} else {
return const EmptyState();
}
} else if (state.state == ResultState.error ||
state.state == ResultState.noData) {
if (state.message.contains('Failed host lookup')) {
Expand Down
19 changes: 19 additions & 0 deletions lib/ui/review_page.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import 'package:flutter/material.dart';
import 'package:indorestaurant/data/api/api_service.dart';
import 'package:indorestaurant/widget/review_form_page_view.dart';
import 'package:provider/provider.dart';
import 'package:indorestaurant/provider/review_provider.dart';

class ReviewPage extends StatelessWidget {
static const routeName = '/review_page';
final String id;

const ReviewPage({Key? key, required this.id}) : super(key: key);
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider<ReviewProvider>(
create: (_) => ReviewProvider(apiService: ApiService()),
child: ReviewFormPageView(id: id),
);
}
}
9 changes: 7 additions & 2 deletions lib/widget/detail_page_view.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@

import 'package:flutter/material.dart';
import 'package:indorestaurant/data/model/detail_restaurant.dart';
import 'package:indorestaurant/ui/review_page.dart';
import 'package:indorestaurant/widget/review_item_row.dart';
class DetailPageView extends StatelessWidget {

Expand Down Expand Up @@ -198,13 +199,17 @@ class DetailPageView extends StatelessWidget {
),
child: TextButton.icon(
onPressed: () {
//Navigator.pushNamed(context, SearchPage.routeName);
Navigator.pushNamed(
context,
ReviewPage.routeName,
arguments: restaurant.id
);
},
style: const ButtonStyle(
foregroundColor: MaterialStatePropertyAll(Color(0xFF2B1706)),
overlayColor: MaterialStatePropertyAll(Color(0xFFE07465)),
),
icon: Icon(Icons.create),
icon: const Icon(Icons.create),
label: const Text(
'Tulis Ulasan'
)
Expand Down
1 change: 0 additions & 1 deletion lib/widget/empty_state.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@


import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';

Expand Down
1 change: 1 addition & 0 deletions lib/widget/error_state.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,5 @@ class ErrorState extends StatelessWidget {
],
);
}

}
Loading

0 comments on commit 3c20c27

Please sign in to comment.