MobileEasyCook/easycook_mobile/lib/pages/tulis_ulasan.dart
2024-12-31 09:53:57 +07:00

307 lines
10 KiB
Dart

import 'package:easycook_mobile/theme.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:flutter_rating_stars/flutter_rating_stars.dart';
class TulisUlasanPage extends StatefulWidget {
@override
State<TulisUlasanPage> createState() => _TulisUlasanPageState();
}
class _TulisUlasanPageState extends State<TulisUlasanPage> {
double value = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Tulis Ulasan'),
centerTitle: true,
foregroundColor: Colors.black,
backgroundColor: Colors.white,
elevation: 0.5,
),
body: Container(
padding: EdgeInsets.only(top: 33, left: 16, right: 16, bottom: 51),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
// Rating
Row(
children: [
Text(
'Rasa',
style: GoogleFonts.montserrat().copyWith(
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
],
),
Center(
child: RatingStars(
value: value,
onValueChanged: (v) {
setState(() {
value = v;
});
},
starBuilder: (index, color) => Icon(
Icons.star_rate,
color: color,
),
starCount: 5,
starSize: 20,
valueLabelColor: Colors.orange,
valueLabelTextStyle: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.w400,
fontStyle: FontStyle.normal,
fontSize: 12.0),
valueLabelRadius: 10,
maxValue: 5,
starSpacing: 2,
maxValueVisibility: true,
valueLabelVisibility: true,
animationDuration: Duration(milliseconds: 1000),
valueLabelPadding:
const EdgeInsets.symmetric(vertical: 1, horizontal: 8),
valueLabelMargin: const EdgeInsets.only(right: 8),
starOffColor: Colors.black,
starColor: Colors.orange,
),
),
Row(
children: [
Text(
'Kemudahan Memasak',
style: GoogleFonts.montserrat().copyWith(
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
],
),
Center(
child: RatingStars(
value: value,
onValueChanged: (v) {
setState(() {
value = v;
});
},
starBuilder: (index, color) => Icon(
Icons.star_rate,
color: color,
),
starCount: 5,
starSize: 20,
valueLabelColor: Colors.orange,
valueLabelTextStyle: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.w400,
fontStyle: FontStyle.normal,
fontSize: 12.0),
valueLabelRadius: 10,
maxValue: 5,
starSpacing: 2,
maxValueVisibility: true,
valueLabelVisibility: true,
animationDuration: Duration(milliseconds: 1000),
valueLabelPadding:
const EdgeInsets.symmetric(vertical: 1, horizontal: 8),
valueLabelMargin: const EdgeInsets.only(right: 8),
starOffColor: Colors.black,
starColor: Colors.orange,
),
),
Row(
children: [
Text(
'Kemudahan alat dan bahan',
style: GoogleFonts.montserrat().copyWith(
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
],
),
Center(
child: RatingStars(
value: value,
onValueChanged: (v) {
setState(() {
value = v;
});
},
starBuilder: (index, color) => Icon(
Icons.star_rate,
color: color,
),
starCount: 5,
starSize: 20,
valueLabelColor: Colors.orange,
valueLabelTextStyle: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.w400,
fontStyle: FontStyle.normal,
fontSize: 12.0),
valueLabelRadius: 10,
maxValue: 5,
starSpacing: 2,
maxValueVisibility: true,
valueLabelVisibility: true,
animationDuration: Duration(milliseconds: 1000),
valueLabelPadding:
const EdgeInsets.symmetric(vertical: 1, horizontal: 8),
valueLabelMargin: const EdgeInsets.only(right: 8),
starOffColor: Colors.black,
starColor: Colors.orange,
),
),
Row(
children: [
Text(
'Kelayakan dimasak ulang',
style: GoogleFonts.montserrat().copyWith(
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
],
),
Center(
child: RatingStars(
value: value,
onValueChanged: (v) {
setState(() {
value = v;
});
},
starBuilder: (index, color) => Icon(
Icons.star_rate,
color: color,
),
starCount: 5,
starSize: 20,
valueLabelColor: Colors.orange,
valueLabelTextStyle: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.w400,
fontStyle: FontStyle.normal,
fontSize: 12.0),
valueLabelRadius: 10,
maxValue: 5,
starSpacing: 2,
maxValueVisibility: true,
valueLabelVisibility: true,
animationDuration: Duration(milliseconds: 1000),
valueLabelPadding:
const EdgeInsets.symmetric(vertical: 1, horizontal: 8),
valueLabelMargin: const EdgeInsets.only(right: 8),
starOffColor: Colors.black,
starColor: Colors.orange,
),
),
// Review
Row(
children: [
Text(
'Tulis Review',
style: GoogleFonts.montserrat().copyWith(
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
],
),
TextField(
decoration: const InputDecoration(
border: OutlineInputBorder(),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.black12,
width: 1.5,
),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.blueAccent,
width: 3.0,
),
),
hintText: "Tulis Komentar",
hintStyle: TextStyle(color: Colors.black12),
),
style: TextStyle(color: Colors.black),
autofocus: false,
),
// Form Foto
Row(
children: [
Text(
'Tambah Foto',
style: GoogleFonts.montserrat().copyWith(
fontSize: 14,
fontWeight: FontWeight.bold,
),
),
],
),
Row(
children: [
Container(
width: 93,
height: 100,
decoration: BoxDecoration(
border: Border.all(
color: Colors.amber,
),
borderRadius: BorderRadius.circular(5),
),
child: Center(
child: SvgPicture.asset('assets/icons/Camera.svg'),
),
),
],
),
Row(
children: [
Text(
'Tambahkan maksimal 3 foto',
style: GoogleFonts.montserrat().copyWith(
fontSize: 12,
color: Colors.black26,
),
),
],
),
// Button
SizedBox(
height: 48,
width: 328,
child: TextButton(
style: TextButton.styleFrom(
backgroundColor: Colors.orange,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
),
onPressed: () {},
child: Text(
'Kirim',
style: GoogleFonts.montserrat().copyWith(
color: Colors.white,
fontWeight: FontWeight.bold,
),
),
),
),
],
),
),
);
}
}