Commit 9aea59b8 authored by rizky ramadhan's avatar rizky ramadhan
parents 12ebdfd0 6b7a8e61
......@@ -38,7 +38,7 @@ AppBar AppbarHomeLarge(Size screenSize, BuildContext context, Color home,
flex: 1,
),
ButtonAppbar_baru(
arah: '/service', menu: 'Our Solution', warna: ourServices),
arah: '/solutions', menu: 'Our Solution', warna: ourServices),
const Spacer(
flex: 1,
),
......
import 'package:flutter/material.dart';
import 'package:medapp_eksad/homepage.dart';
import 'package:medapp_eksad/screen/contact_us.dart';
import 'package:medapp_eksad/screen/contact_us/contact_us.dart';
import 'package:medapp_eksad/screen/solution.dart';
void main() {
......
import 'package:flutter/material.dart';
import 'package:medapp_eksad/appbar/appbar_home.dart';
import 'package:medapp_eksad/screen/contact_us/contact_us1.dart';
import 'package:medapp_eksad/screen/contact_us/contact_us2.dart';
import 'package:medapp_eksad/screen/footer.dart';
import 'package:medapp_eksad/widget/responsive.dart';
import 'package:flutter/services.dart';
......@@ -19,7 +21,7 @@ class ContactUs extends StatefulWidget {
}
class _ContactUsState extends State<ContactUs> {
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
setPageTitle('Contact Us', context);
......@@ -29,33 +31,36 @@ class _ContactUsState extends State<ContactUs> {
appBar: ResponsiveWidget.isSmallScreen(context)
? AppBarKecil()
: AppbarHomeLarge(screenSize, context, Colors.black, Colors.black,
Colors.black, Colors.black, Colors.blue),
Colors.black, Colors.black, Colors.blue),
body: ListView(
children: [
Footer()
const ContactUs1(),
ContactUs2(),
const Footer(),
],
),
);
}
AppBar AppBarKecil() {
return AppBar(
leading: IconButton(
onPressed: () => _scaffoldKey.currentState!.openDrawer(),
icon: Icon(Icons.list_outlined,size: 30,color: Colors.black,),),
icon: const Icon(
Icons.list_outlined,
size: 30,
color: Colors.black,
),
),
backgroundColor: Colors.white,
centerTitle: true,
title: Container(
child: SizedBox(
height: 50,
width: 150,
child: Image.asset("assets/logo/medapp-logo.png"),
),
title: SizedBox(
height: 50,
width: 150,
child: Image.asset("assets/logo/medapp-logo.png"),
),
// ),
);
}
}
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
class ContactUs1 extends StatefulWidget {
const ContactUs1({Key? key}) : super(key: key);
@override
State<ContactUs1> createState() => _ContactUsState();
}
class _ContactUsState extends State<ContactUs1> {
@override
Widget build(BuildContext context) {
var screenSize = MediaQuery.of(context).size;
return Stack(
children: [
Container(
width: screenSize.width,
height: screenSize.height * 0.42,
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage(
"assets/images/contactus1.jpg",
),
alignment: Alignment.center,
fit: BoxFit.cover)),
),
Container(
width: screenSize.width * 0.5,
height: screenSize.height * 0.34,
padding: EdgeInsets.only(
right: screenSize.width * 0.30, left: screenSize.height * 0.06),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Text(
'Contact Us',
style: GoogleFonts.poppins(
fontSize: 37,
fontWeight: FontWeight.bold,
color: Colors.white),
overflow: TextOverflow.ellipsis,
),
],
),
),
],
);
}
}
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
// import 'package:mcs_flutter/widget/botton.dart';
// import 'package:mcs_flutter/const/conts.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:medapp_eksad/widget/button_color.dart';
class ContactUs2 extends StatelessWidget {
ContactUs2({Key? key}) : super(key: key);
final _formKey = GlobalKey<FormState>();
final nameController = TextEditingController();
final phoneController = TextEditingController();
final emailController = TextEditingController();
final messageController = TextEditingController();
@override
Widget build(BuildContext context) {
var screenSize = MediaQuery.of(context).size;
return Container(
height: 480,
width: screenSize.width,
// color: Colors.blue,
decoration: const BoxDecoration(
gradient: LinearGradient(
colors: <Color>[
Color(0xff137fc2),
Color(0xff3958d5),
Color(0xff184b80),
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
)),
child: Row(
children: [
const Spacer(
flex: 3,
),
SizedBox(
height: screenSize.height * 0.7,
width: screenSize.width * 0.35,
child: Container(
padding: const EdgeInsets.all(10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
height: screenSize.height * 0.23,
child: Text(
'Yes, you need '
'\n'
'an outsourcing partner '
'you can trust and thrive with',
textAlign: TextAlign.justify,
style: GoogleFonts.poppins(
color: Colors.white,
fontSize: 30,
fontWeight: FontWeight.bold)),
),
const Spacer(
flex: 1,
),
SizedBox(
height: screenSize.height * 0.3,
child: Text(
'Go for the one who knows what they are doing, those who you share values with, '
'and those who will celebrate your success, and help you win over your biggest challenges. '
'\nLooking for an outsourcing partner? ',
textAlign: TextAlign.justify,
style: GoogleFonts.poppins(
color: Colors.white,
fontSize: 18,
// fontWeight: FontWeight.bold,
letterSpacing: 1.1)),
),
const Spacer(
flex: 1,
),
Text("We’ll contact you immediately to discuss to help you.",
style: GoogleFonts.poppins(
color: Colors.white,
fontSize: 18,
letterSpacing: 1.2)),
const Spacer(
flex: 2,
),
],
),
),
),
const Spacer(),
Container(
padding: const EdgeInsets.all(15),
height: screenSize.height * 0.7,
width: screenSize.width * 0.4,
child: Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Text(
"Name",
style: GoogleFonts.poppins(
color: Colors.white,
fontSize: 20,
fontWeight: FontWeight.w400),
),
SizedBox(
width: 450,
child: TextFormField(
controller: nameController,
decoration: const InputDecoration(
hintText: "Enter your Name",
fillColor: Colors.white,
filled: true,
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.zero,
borderSide: BorderSide(width: 1, color: Colors.white),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.zero,
borderSide: BorderSide(width: 1, color: Colors.white),
),
),
),
),
const SizedBox(
height: 10,
),
Row(
children: [
Text(
"Phone Number",
style: GoogleFonts.poppins(
color: Colors.white,
fontSize: 20,
fontWeight: FontWeight.w400),
),
const SizedBox(
width: 80,
),
Text(
"Email",
style: GoogleFonts.poppins(
color: Colors.white,
fontSize: 20,
fontWeight: FontWeight.w400),
),
],
),
Row(
children: [
SizedBox(
width: 220,
child: TextFormField(
controller: phoneController,
decoration: const InputDecoration(
hintText: "Enter a valid phone number",
fillColor: Colors.white,
filled: true,
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.zero,
borderSide:
BorderSide(width: 1, color: Colors.white),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.zero,
borderSide:
BorderSide(width: 1, color: Colors.white),
),
),
),
),
const SizedBox(
width: 7,
),
SizedBox(
width: 220,
child: TextFormField(
controller: emailController,
decoration: const InputDecoration(
hintText: "Enter a valid email address",
fillColor: Colors.white,
filled: true,
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.zero,
borderSide:
BorderSide(width: 1, color: Colors.white),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.zero,
borderSide:
BorderSide(width: 1, color: Colors.white),
),
),
),
),
const SizedBox(
height: 20,
),
],
),
const SizedBox(
height: 10,
),
Text(
"Message",
style: GoogleFonts.poppins(
color: Colors.white,
fontSize: 20,
fontWeight: FontWeight.w400),
),
SizedBox(
width: 450,
height: 107,
child: TextFormField(
controller: messageController,
decoration: const InputDecoration(
hintText: "Enter your message",
fillColor: Colors.white,
filled: true,
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.zero,
borderSide: BorderSide(width: 1, color: Colors.white),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.zero,
borderSide: BorderSide(width: 1, color: Colors.white),
),
),
maxLines: 5,
validator: (value) {
if (value == null || value.isEmpty) {
return '*Required';
}
return null;
},
),
),
const SizedBox(
height: 10,
),
SizedBox(
height: 45,
width: 100,
child: TextButton(
style: Btn_Submit(),
onPressed: () async {
if (_formKey.currentState!.validate()) {
final response = await SendEmail(
nameController.value.text,
phoneController.value.text,
emailController.value.text,
messageController.value.text);
ScaffoldMessenger.of(context).showSnackBar(
response == 200
? const SnackBar(
content: Text('Message Sent!'),
backgroundColor: Colors.green)
: const SnackBar(
content: Text('Failed to send message!'),
backgroundColor: Colors.red),
);
nameController.clear();
phoneController.clear();
emailController.clear();
messageController.clear();
}
},
child: const Text(
'Submit',
style: TextStyle(fontSize: 16, color: Colors.white),
),
),
),
],
),
),
),
const Spacer(
flex: 3,
),
],
),
);
}
Future SendEmail(
String name, String phone, String email, String message) async {
final url = Uri.parse('https://api.emailjs.com/api/v1.0/email/send');
const serviceId = 'service_wava70j';
const templateId = 'template_koc73cj';
const userId = 'h4BmDnyWlm3OziBDx';
final response = await http.post(url,
headers: {
'Content-Type': 'application/json'
}, //This line makes sure it works for all platforms.
body: json.encode({
'service_id': serviceId,
'template_id': templateId,
'user_id': userId,
'template_params': {
'from_name': name,
'from_phone': phone,
'to_email': email,
'message': message
}
}));
return response.statusCode;
}
}
......@@ -15,8 +15,8 @@ class _Home3State extends State<Home3> {
@override
Widget build(BuildContext context) {
var screenSize = MediaQuery.of(context).size;
return Container(
height: screenSize.height * 1.1,
return SizedBox(
height: screenSize.height * 1.75,
width: screenSize.width,
child: Column(
children: [
......@@ -35,7 +35,7 @@ class _Home3State extends State<Home3> {
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
SizedBox(
width: screenSize.width * 0.2,
child: Column(
children: [
......@@ -75,13 +75,13 @@ class _Home3State extends State<Home3> {
height: screenSize.height * 0.55,
child: const Animasi_Kanan_Kiri(
judul:
'Simplify the process of getting queue numbers for various hospital services such as: '
'Simplify the process of getting queue numbers for various hospital services such as: '
'consulting with doctors, using hospital facilities (radiology, laboratories, etc.) and '
'purchasing drugs from pharmacies.'))
],
),
),
Container(
SizedBox(
width: screenSize.width * 0.2,
child: Column(
children: [
......@@ -121,14 +121,14 @@ class _Home3State extends State<Home3> {
height: screenSize.height * 0.55,
child: const Animasi_Kanan_Kiri(
judul:
'Patients get notifications of queue movements so they can adjust their arrival schedule to the hospital. '
'Patients get notifications of queue movements so they can adjust their arrival schedule to the hospital. '
'Arrivals close to this service time will have an impact on reducing the crowd of people queuing at the hospital. '
'Queue information is integrated with the queue display panel in the hospital.'),
),
],
),
),
Container(
SizedBox(
width: screenSize.width * 0.2,
child: Column(
children: [
......@@ -168,12 +168,18 @@ class _Home3State extends State<Home3> {
height: screenSize.height * 0.55,
child: const Animasi_Kanan_Kiri(
judul:
'Patients can self-register through a mobile application or kiosk, '
'Patients can self-register through a mobile application or kiosk, '
'thereby reducing queues at the hospital.'))
],
),
),
Container(
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(
width: screenSize.width * 0.2,
child: Column(
children: [
......@@ -215,11 +221,130 @@ class _Home3State extends State<Home3> {
delayStart: const Duration(seconds: 1),
curve: Curves.decelerate,
direction: Direction.horizontal,
child: Container(
child: SizedBox(
height: screenSize.height * 0.42,
child: Text(
'Acceptance of payments can be done easily and flexibly with the availability of '
'online payment systems (credit cards, transfers, digital-wallet)',
'online payment systems (credit cards, transfers, digital-wallet).',
style: GoogleFonts.poppins(
fontSize: 15,
fontWeight: FontWeight.w500,
letterSpacing: 1.3,
height: 1.4),
textAlign: TextAlign.center,
),
),
))
],
),
),
SizedBox(
width: screenSize.width * 0.2,
child: Column(
children: [
Container(
padding: EdgeInsets.only(top: screenSize.height * 0.01),
width: screenSize.width * 0.5,
child: Animasi_Kiri_Kanan(
screenSize: screenSize,
widget: Image.asset(
'assets/icons/why4.png',
height: 60,
width: 60,
))),
const SizedBox(
height: 10,
),
Container(
padding: const EdgeInsets.only(top: 5),
width: 250,
height: 75,
child: const Text(
'DRUG DELIVERY',
style: TextStyle(
color: Colors.blueAccent,
fontSize: 17,
letterSpacing: 1.1,
fontWeight: FontWeight.w600),
textAlign: TextAlign.center,
),
),
const SizedBox(
height: 10,
),
Container(
padding: const EdgeInsets.only(top: 10),
width: 220,
height: screenSize.height * 0.55,
child: ShowUpAnimation(
delayStart: const Duration(seconds: 1),
curve: Curves.decelerate,
direction: Direction.horizontal,
child: SizedBox(
height: screenSize.height * 0.42,
child: Text(
'Drug delivery works in collaboration with goods delivery service providers '
'which are currently developing fast.',
style: GoogleFonts.poppins(
fontSize: 15,
fontWeight: FontWeight.w500,
letterSpacing: 1.3,
height: 1.4),
textAlign: TextAlign.center,
),
),
))
],
),
),
SizedBox(
width: screenSize.width * 0.2,
child: Column(
children: [
Container(
padding: EdgeInsets.only(top: screenSize.height * 0.01),
width: screenSize.width * 0.5,
child: Animasi_Kiri_Kanan(
screenSize: screenSize,
widget: Image.asset(
'assets/icons/why4.png',
height: 60,
width: 60,
))),
const SizedBox(
height: 10,
),
Container(
padding: const EdgeInsets.only(top: 5),
width: 250,
height: 75,
child: const Text(
'OTHER FEATURES',
style: TextStyle(
color: Colors.blueAccent,
fontSize: 17,
letterSpacing: 1.1,
fontWeight: FontWeight.w600),
textAlign: TextAlign.center,
),
),
const SizedBox(
height: 10,
),
Container(
padding: const EdgeInsets.only(top: 10),
width: 220,
height: screenSize.height * 0.55,
child: ShowUpAnimation(
delayStart: const Duration(seconds: 1),
curve: Curves.decelerate,
direction: Direction.horizontal,
child: SizedBox(
height: screenSize.height * 0.42,
child: Text(
'Online consultation (to be integrated with the current RSSC system), '
'Emergency assistance to call ambulances and doctors, '
'Rating by consumers for each service',
style: GoogleFonts.poppins(
fontSize: 15,
fontWeight: FontWeight.w500,
......@@ -228,13 +353,7 @@ class _Home3State extends State<Home3> {
textAlign: TextAlign.center,
),
),
)
// Animasi_Kanan_Kiri(judul: 'WE ARE A TEAM OF EXPERT RECRUITERS, '
// 'WITH A MISSION TO MATCH TALENTED PEOPLE WITH SUCCESSFUL EMPLOYERS. '
// 'WE STRONGLY BELIEVE IN BUILDING A VALUE OF TRUST, HONESTY, '
// 'AND TRANSPARENCY WITH OUR CLIENTS TO DEVELOP LONG-TERM RELATIONSHIPS '
// 'AND ADOPT A FLEXIBLE APPROACH AS PER THEIR NEEDS.')
)
))
],
),
),
......
import 'package:flutter/material.dart';
ButtonStyle DefaultColors() {
return ButtonStyle(
backgroundColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
return const Color(0xff1e5ea8); // Defer to the widget's default.
},
),
overlayColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.hovered)) {
return Colors.red;
} //<-- SEE HERE
return null; // Defer to the widget's default.
},
),
);
}
ButtonStyle Btn_Submit() {
return ButtonStyle(
shape: MaterialStateProperty.resolveWith((ShapeBorder) =>
RoundedRectangleBorder(borderRadius: BorderRadius.circular(8))),
backgroundColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
return const Color(0xff1e5ea8); // Defer to the widget's default.
},
),
overlayColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.hovered)) {
return Colors.red;
} //<-- SEE HERE
return null; // Defer to the widget's default.
},
),
);
}
......@@ -122,7 +122,7 @@ packages:
source: hosted
version: "3.0.1"
http:
dependency: transitive
dependency: "direct main"
description:
name: http
url: "https://pub.dartlang.org"
......
......@@ -44,6 +44,7 @@ dependencies:
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
show_up_animation: ^2.0.0
http: ^0.13.4
dev_dependencies:
flutter_test:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment