Commit 747a18a8 authored by Arham Aulia Nugraha's avatar Arham Aulia Nugraha

Merge branch 'master' of http://103.44.149.204/qorridi/medapp_eksad

 Conflicts:
	lib/screen/solution.dart
parents 8014f89a 4ace81ac
......@@ -24,3 +24,28 @@ class Animasi_Kanan_Kiri extends StatelessWidget {
);
}
}
class Animasi_Kanan_Kiri_Justify extends StatelessWidget {
const Animasi_Kanan_Kiri_Justify({Key? key, required this.judul}) : super(key: key);
final String judul;
@override
Widget build(BuildContext context) {
return ShowUpAnimation(
delayStart: const Duration(seconds: 1),
curve: Curves.decelerate,
direction: Direction.horizontal,
child: Center(
child: Text(
judul,
style: GoogleFonts.poppins(
fontSize: 13,
fontWeight: FontWeight.w500,
letterSpacing: 1.2,
height: 1.4),
textAlign: TextAlign.justify,
),
),
);
}
}
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:medapp_eksad/model/contact_model.dart';
Future<bool> savecontact(nama, email, nohp, message) async {
final response = await http.post(
Uri.parse('http://10.3.4.231:8081/medapp/v1/api/contact/save'),
body: jsonEncode({
"nama": nama,
"email": email,
"noHp": nohp,
"message": message}),
headers: {
'Content-type': 'application/json; charset=UTF-8',
});
if (response.statusCode == 200) {
return true;
} else {
return false;
}
}
Future<List<contact>> showcontact() async {
var response = await http
.get(Uri.parse('http://10.3.4.231:8082/medapp/v1/api/contact/get'));
var resultJson = jsonDecode(response.body)['data'];
List<contact> contactlist = await resultJson
.map<contact>((json) => contact.fromJson(json))
.toList();
return contactlist;
}
\ No newline at end of file
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:medapp_eksad/model/wa_model.dart';
Future<bool> savewa(nama, nohp) async {
final response = await http.post(
Uri.parse('http://10.3.4.231:8081/medapp/v1/api/whatapps/save'),
body: jsonEncode({
"nama": nama,
"no": nohp
}),
headers: {
'Content-type': 'application/json; charset=UTF-8',
});
if (response.statusCode == 200) {
return true;
} else {
return false;
}
}
Future<List<dynamic>> showa() async {
var response = await http
.get(Uri.parse('http://10.3.4.231:8082/medapp/v1/api/whatapps/get'));
var resultJson = jsonDecode(response.body)['data'];
List<wa> walist = await resultJson
.map<wa>((json) => wa.fromJson(json))
.toList();
return walist;
}
\ No newline at end of file
import 'package:flutter/material.dart';
import 'package:medapp_eksad/appbar/appbar_home.dart';
import 'package:medapp_eksad/screen_small/small_contact/small_contact_us2.dart';
import 'package:medapp_eksad/screen/contact_us/contact_us2.dart';
import 'package:medapp_eksad/screen/footer.dart';
import 'package:medapp_eksad/screen/home/home1.dart';
......@@ -7,6 +8,9 @@ import 'package:medapp_eksad/screen/home/home2.dart';
import 'package:medapp_eksad/screen/home/home3.dart';
import 'package:medapp_eksad/screen/home/home4.dart';
import 'package:medapp_eksad/screen_small/small_footer.dart';
import 'package:medapp_eksad/screen_small/small_home/small_home1.dart';
import 'package:medapp_eksad/screen_small/small_home/small_home2.dart';
import 'package:medapp_eksad/screen_small/small_home/small_home3.dart';
import 'package:medapp_eksad/widget/drawer.dart';
import 'package:medapp_eksad/widget/responsive.dart';
import 'package:medapp_eksad/widget/whatsapp.dart';
......@@ -42,12 +46,12 @@ class _HomePageState extends State<HomePage> {
drawer: const DrawerMeddApp(),
body: ResponsiveWidget.isSmallScreen(context)
? ListView(
children: [
const Home1(),
const Home2(),
const Home3(),
ContactUs2(),
const FooterSmall(),
children: const [
SmallHome1(),
SmallHome2(),
SmallHome3(),
ContactUs2_small(),
FooterSmall(),
],
)
: ListView(
......
class contact {
int? idContact;
String? namaContact;
String? emailContact;
String? noHp;
String? messageContact;
contact(
{this.idContact,
this.namaContact,
this.emailContact,
this.noHp,
this.messageContact});
contact.fromJson(Map<String, dynamic> json) {
idContact = json['idContact'];
namaContact = json['namaContact'];
emailContact = json['emailContact'];
noHp = json['noHp'];
messageContact = json['messageContact'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['idContact'] = this.idContact;
data['namaContact'] = this.namaContact;
data['emailContact'] = this.emailContact;
data['noHp'] = this.noHp;
data['messageContact'] = this.messageContact;
return data;
}
}
class user {
String? idUser;
String? namaUser;
String? emailUser;
String? noHp;
String? username;
String? password;
String? statusUser;
user(
{this.idUser,
this.namaUser,
this.emailUser,
this.noHp,
this.username,
this.password,
this.statusUser});
user.fromJson(Map<String, dynamic> json) {
idUser = json['idUser'];
namaUser = json['namaUser'];
emailUser = json['emailUser'];
noHp = json['noHp'];
username = json['username'];
password = json['password'];
statusUser = json['statusUser'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['idUser'] = this.idUser;
data['namaUser'] = this.namaUser;
data['emailUser'] = this.emailUser;
data['noHp'] = this.noHp;
data['username'] = this.username;
data['password'] = this.password;
data['statusUser'] = this.statusUser;
return data;
}
}
class wa {
int? idWa;
String? namaWa;
String? noWa;
String? statusWa;
bool? activeWa;
wa({this.idWa, this.namaWa, this.noWa, this.statusWa, this.activeWa});
wa.fromJson(Map<String, dynamic> json) {
idWa = json['idWa'];
namaWa = json['namaWa'];
noWa = json['noWa'];
statusWa = json['statusWa'];
activeWa = json['activeWa'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['idWa'] = this.idWa;
data['namaWa'] = this.namaWa;
data['noWa'] = this.noWa;
data['statusWa'] = this.statusWa;
data['activeWa'] = this.activeWa;
return data;
}
}
\ No newline at end of file
......@@ -20,7 +20,7 @@ class Home1 extends StatelessWidget {
color: Colors.transparent,
image: DecorationImage(
image: AssetImage(
"assets/logo/homepage.png",
"assets/images/homepage.png",
),
fit: BoxFit.cover),
),
......
......@@ -2,9 +2,9 @@ import 'package:flutter/material.dart';
import 'package:medapp_eksad/appbar/appbar_home.dart';
import 'package:medapp_eksad/screen/footer.dart';
import 'package:medapp_eksad/screen/solution/our_solution.dart';
import 'package:medapp_eksad/screen/solution/our_solution2.dart';
import 'package:medapp_eksad/widget/responsive.dart';
import 'package:flutter/services.dart';
import 'package:medapp_eksad/screen/solution/home3.dart';
void setPageTitle(String title, BuildContext context) {
SystemChrome.setApplicationSwitcherDescription(ApplicationSwitcherDescription(
......@@ -21,7 +21,7 @@ class Solutions extends StatefulWidget {
}
class _SolutionsState extends State<Solutions> {
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
setPageTitle('MeddApp Solutions', context);
......@@ -33,10 +33,10 @@ class _SolutionsState extends State<Solutions> {
: AppbarHomeLarge(screenSize, context, Colors.black, Colors.black,
Colors.blue, Colors.black, Colors.black),
body: ListView(
children: [
children: const [
OurSolution(),
Home3(),
Footer()
OurSolution2(),
Footer(),
],
),
);
......@@ -46,7 +46,7 @@ class _SolutionsState extends State<Solutions> {
return AppBar(
leading: IconButton(
onPressed: () => _scaffoldKey.currentState!.openDrawer(),
icon: Icon(
icon: const Icon(
Icons.list_outlined,
size: 30,
color: Colors.black,
......@@ -54,12 +54,10 @@ class _SolutionsState extends State<Solutions> {
),
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:medapp_eksad/widget/image_slide.dart';
class OurSolution2 extends StatefulWidget {
const OurSolution2({Key? key}) : super(key: key);
@override
State<OurSolution2> createState() => _OurSolution2State();
}
class _OurSolution2State extends State<OurSolution2> {
@override
Widget build(BuildContext context) {
var screenSize = MediaQuery.of(context).size;
return Container(
width: screenSize.width,
height: screenSize.height*0.75,
padding: EdgeInsets.symmetric(horizontal: screenSize.width*0.1, vertical: screenSize.height*0.1),
child: Container(
width: screenSize.width*0.75,
height: screenSize.height*0.65,
child: VerticalSlider(),
),
);
}
}
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
class ContactUs1_small extends StatefulWidget {
const ContactUs1_small({Key? key}) : super(key: key);
......@@ -26,13 +27,12 @@ class _ContactUsState extends State<ContactUs1_small> {
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),
width: screenSize.width,
height: screenSize.height * 0.4,
padding: EdgeInsets.only(top: screenSize.height*0.07),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'Contact Us',
......@@ -40,7 +40,6 @@ class _ContactUsState extends State<ContactUs1_small> {
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:medapp_eksad/widget/button_color.dart';
import 'package:show_up_animation/show_up_animation.dart';
class SmallHome1 extends StatelessWidget {
const SmallHome1({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
var screenSize = MediaQuery.of(context).size;
return Stack(
children: [
Container(
width: screenSize.width,
height: screenSize.height * 0.7,
decoration: const BoxDecoration(
color: Colors.transparent,
image: DecorationImage(
image: AssetImage(
"assets/images/homepage.png",
),
fit: BoxFit.cover),
),
),
Container(
width: screenSize.width,
height: screenSize.height * 0.7,
decoration: BoxDecoration(
color: Colors.blue,
gradient: LinearGradient(
colors: [
Colors.blue.withOpacity(0.0),
Colors.blue,
],
stops: const [0.0, 1.0],
),
),
),
Container(
width: screenSize.width,
height: screenSize.height * 0.65,
padding: EdgeInsets.only(
left: screenSize.width * 0.4, top: screenSize.height * 0.05),
child: Column(
//crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Container(
width: screenSize.width * 0.5,
height: screenSize.height * 0.09,
child: ShowUpAnimation(
delayStart: const Duration(seconds: 1),
direction: Direction.horizontal,
child: Text(
'Engage With Your Patients More Efficiently',
textAlign: TextAlign.center,
style: GoogleFonts.poppins(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.white),
// overflow: TextOverflow.ellipsis,
),
),
),
Container(
// padding: EdgeInsets.only(top: 1),
width: screenSize.width * 0.47,
height: screenSize.height * 0.31,
child: ShowUpAnimation(
delayStart: const Duration(seconds: 1),
curve: Curves.bounceIn,
direction: Direction.horizontal,
// offset: -0.2,
child: Text(
'Welcome to healthcare’s most powerful collaboration suite. '
'Enhance clinical workflows, speed decisions, and improve'
' patient outcomes, safely and securely.',
textAlign: TextAlign.center,
style: GoogleFonts.poppins(
fontSize: 15,
// letterSpacing: 1.3,
// height: 1.5,
fontWeight: FontWeight.bold,
color: Colors.white),
),
),
),
Container(
width: screenSize.width * 0.36,
height: screenSize.height * 0.1,
child: ShowUpAnimation(
delayStart: const Duration(seconds: 1),
curve: Curves.bounceIn,
direction: Direction.horizontal,
offset: -0.2,
child: ElevatedButton(
onPressed: () {
Navigator.pushNamed(context, '/contact');
},
style: DefaultColors(),
child: const Text(
'TALK WITH EXPERT',
style: TextStyle(
fontSize: 16,
letterSpacing: 2,
color: Colors.white,
fontWeight: FontWeight.w500),
textAlign: TextAlign.center,
),
),
),
)
],
),
),
],
);
}
}
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:medapp_eksad/animation/kiri_kanan_small.dart';
import 'package:show_up_animation/show_up_animation.dart';
class SmallHome2 extends StatelessWidget {
const SmallHome2({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
var screenSize = MediaQuery.of(context).size;
return Container(
width: screenSize.width * 0.5,
color: const Color.fromARGB(255, 227, 235, 253),
height: screenSize.height*2,
padding: EdgeInsets.only(
left: screenSize.width * 0.10,
right: screenSize.width * 0.10,
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
SizedBox(height: 1,),
Container(
width: screenSize.width,
child: Text('How do we help ?',
style: GoogleFonts.poppins(
fontSize: 30,
color: const Color.fromARGB(255, 12, 66, 101),
fontWeight: FontWeight.bold)),
),
Container(
width: screenSize.width,
height: screenSize.height*0.35,
child: Text(
'We understand that the global healthcare industry is experiencing several challenges, thus requiring a company`s ability to respond to these challenges quickly and innovatively, '
'and seize opportunities that arise will be critical to ensuring the company`s sustainability in the future.',
textAlign: TextAlign.justify,
style: GoogleFonts.poppins(
fontSize: 15,
letterSpacing: 1.1,
height: 1.5,
fontWeight: FontWeight.w500)),
),
Column(
// mainAxisAlignment: MainAxisAlignment.start,
children: [
ShowUpAnimation(
delayStart: const Duration(seconds: 1),
curve: Curves.decelerate,
direction: Direction.horizontal,
offset: -0.3,
child: list_help(
screenSize: screenSize,
titel: 'Costs are getting more expensive'),
),
ShowUpAnimation(
delayStart: const Duration(seconds: 2),
curve: Curves.decelerate,
direction: Direction.horizontal,
child: list_help(
screenSize: screenSize,
titel: "Demographic Change",
),
),
ShowUpAnimation(
delayStart: const Duration(seconds: 3),
curve: Curves.decelerate,
direction: Direction.horizontal,
offset: -0.3,
child: list_help(
screenSize: screenSize,
titel: "Rare talents"),
),
ShowUpAnimation(
delayStart: const Duration(seconds: 4),
curve: Curves.decelerate,
direction: Direction.horizontal,
child: list_help(
screenSize: screenSize,
titel: "Rapid technological Change",
),
),
ShowUpAnimation(
delayStart: const Duration(seconds: 5),
curve: Curves.decelerate,
direction: Direction.horizontal,
offset: -0.3,
child: list_help(
screenSize: screenSize,
titel: "Changes in consumer behavior"),
),
],
),
Container(
width: screenSize.width,
height: screenSize.height*0.4,
child: Text(
'Too much admin. Longer work hours. Less time spent with patients.'
'You’re not alone in the stress and frustration these cause. At MedApps, '
'our medical practice management software is designed to make your life easier,'
'not harder. Which means you can get on with doing what you do best, in ways that work best for you.',
textAlign: TextAlign.justify,
style: GoogleFonts.poppins(
fontSize: 15,
letterSpacing: 1.1,
height: 1.5,
fontWeight: FontWeight.w500)),
),
Container(
width: screenSize.width,
height: screenSize.height*0.4,
child: Text(
'MedApps combines practice management and clinical workflows into one seamless, modern interface. '
'Manage all patient interactions securely on the go, or in your practice.'
'Benefit from server-free* infrastructure, automatic upgrades and simple licensing.',
textAlign: TextAlign.justify,
style: GoogleFonts.poppins(
fontSize: 15,
letterSpacing: 1.1,
height: 1.5,
fontWeight: FontWeight.w500)),
),
],
),
);
}
}
class list_help extends StatelessWidget {
const list_help({Key? key, required this.screenSize, required this.titel})
: super(key: key);
final Size screenSize;
final String titel;
@override
Widget build(BuildContext context) {
return ListTile(
leading: const Icon(
Icons.circle_rounded,
size: 12,
color: Colors.black,
),
title: Container(
// padding: const EdgeInsets.only(left: 10),
// width: screenSize.width * 0.35,
// height: screenSize.height * 0.1,
child: Text(
titel,
style: GoogleFonts.poppins(
fontSize: 16,
height: 1.3,
),
textAlign: TextAlign.left,
),
));
}
}
This diff is collapsed.
import 'package:flutter/material.dart';
import 'package:carousel_slider/carousel_slider.dart';
final List<String> imgList = [
'/images/homepage.png',
'/images/solution.jpg',
'/images/contactus1.jpg',
];
final List<Widget> imageSliders = imgList
.map((item) => Container(
child: Container(
margin: const EdgeInsets.all(5.0),
child: ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(5.0)),
child: Stack(
children: <Widget>[
Image.asset(
item,
fit: BoxFit.cover,
width: 840,
),
Positioned(
bottom: 0.0,
left: 0.0,
right: 0.0,
child: Container(
decoration: const BoxDecoration(
gradient: LinearGradient(
colors: [
Color.fromARGB(200, 0, 0, 0),
Color.fromARGB(0, 0, 0, 0)
],
begin: Alignment.bottomCenter,
end: Alignment.topCenter,
),
),
// padding: const EdgeInsets.symmetric(
// vertical: 10.0, horizontal: 20.0),
// child: const Text(
// 'Bootcamp',
// //'No. ${imgList.indexOf(item)} image',
// style: TextStyle(
// color: Colors.white,
// fontSize: 20.0,
// fontWeight: FontWeight.bold,
// ),
// ),
),
),
],
)),
),
))
.toList();
final CarouselController _controller = CarouselController();
@override
void initState() {
initState();
}
class VerticalSlider extends StatelessWidget {
@override
Widget build(BuildContext context) {
var screenSize = MediaQuery.of(context).size;
return Stack(
children: [
Container(
width: screenSize.width*0.8,
child: CarouselSlider(
carouselController: _controller,
options: CarouselOptions(
aspectRatio: 2.0,
enlargeCenterPage: true,
scrollDirection: Axis.horizontal,
autoPlay: true,
),
items: imageSliders,
),
),
Center(
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Flexible(
child: ElevatedButton(
onPressed: () => _controller.previousPage(),
child: Icon(Icons.arrow_back_ios_new_outlined),
style: ElevatedButton.styleFrom(primary: Colors.grey),
),
),
Flexible(
child: ElevatedButton(
onPressed: () => _controller.nextPage(),
child: Icon(Icons.arrow_forward_ios_outlined),
style: ElevatedButton.styleFrom(primary: Colors.grey),
),
),
],
),
)
],
);
}
}
......@@ -15,6 +15,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
carousel_indicator:
dependency: "direct main"
description:
name: carousel_indicator
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.6"
carousel_slider:
dependency: "direct main"
description:
name: carousel_slider
url: "https://pub.dartlang.org"
source: hosted
version: "4.1.1"
characters:
dependency: transitive
description:
......@@ -261,6 +275,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "4.2.4"
scaled_list:
dependency: "direct main"
description:
name: scaled_list
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
show_up_animation:
dependency: "direct main"
description:
......
......@@ -46,6 +46,9 @@ dependencies:
show_up_animation: ^2.0.0
http: ^0.13.4
spring: ^2.0.2
carousel_slider: ^4.1.1
carousel_indicator: ^1.0.6
scaled_list: ^2.0.0
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