forked from dienianindya/gsi_ess_mobile
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
605 lines
32 KiB
605 lines
32 KiB
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:google_fonts/google_fonts.dart';
|
|
import 'package:employee_selfservice_mobile/Screens/Menu/SuratTugas/history_st.dart';
|
|
import 'package:employee_selfservice_mobile/Screens/Menu/SuratTugas/pengajuan_st.dart';
|
|
|
|
import '../SlipGaji/background.dart';
|
|
import 'deklarasi_st.dart';
|
|
|
|
class SuratTugas_Screen extends StatefulWidget {
|
|
const SuratTugas_Screen({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
State<SuratTugas_Screen> createState() => _SuratTugas_ScreenState();
|
|
}
|
|
|
|
class _SuratTugas_ScreenState extends State<SuratTugas_Screen> {
|
|
var selectedCategory;
|
|
var selectedDate;
|
|
|
|
int _value = 0;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
body: SingleChildScrollView(
|
|
child: Column(
|
|
children: <Widget>[
|
|
Stack(
|
|
children: [
|
|
WavyHeader(),
|
|
Container(
|
|
margin: EdgeInsets.only(top: MediaQuery.of(context).size.height/6 - 20),
|
|
padding: EdgeInsets.fromLTRB(20, 5, 25, 5),
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.end,
|
|
crossAxisAlignment: CrossAxisAlignment.end,
|
|
children: [
|
|
Text(
|
|
'Assignment\nLetter\t\t',
|
|
style: GoogleFonts.luckiestGuy(
|
|
fontSize: 28,
|
|
color: Color(0xFF4858A7),
|
|
fontStyle: FontStyle.italic,
|
|
),
|
|
),
|
|
Image.asset(
|
|
'assets/icons/menu/ic_menu_surattugas.png',
|
|
width: 40,
|
|
height: 40,
|
|
),
|
|
],
|
|
)),
|
|
SafeArea(
|
|
child: Container(
|
|
width: MediaQuery.of(context).size.width,
|
|
margin: EdgeInsets.only(
|
|
top: MediaQuery.of(context).size.height / 5,
|
|
left: 10,
|
|
right: 10,
|
|
),
|
|
child: Column(
|
|
children: [
|
|
InkWell(
|
|
child: Container(
|
|
margin: EdgeInsets.fromLTRB(15, 15, 15, 5),
|
|
padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
|
|
width: double.infinity,
|
|
decoration: BoxDecoration(
|
|
borderRadius: BorderRadius.circular(5),
|
|
gradient: LinearGradient(colors: [
|
|
Color(0xFF2D4059),
|
|
Color(0xFF2D4059),
|
|
/*Color(0xFFEAFFD0),
|
|
Color(0xFF95E1D3),*/
|
|
])),
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: [
|
|
Flexible(
|
|
child: Text('Assignment Letter Submission\t\t',
|
|
textAlign: TextAlign.center,
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 17,
|
|
fontWeight: FontWeight.w500))),
|
|
Image.asset('assets/images/submit_st.png',
|
|
width: 30,
|
|
height: 30,
|
|
)
|
|
],
|
|
)),
|
|
onTap: () {
|
|
Navigator.push(
|
|
context,
|
|
MaterialPageRoute(
|
|
builder: (context) => PengajuanST_Screen()));
|
|
},
|
|
),
|
|
InkWell(
|
|
child: Container(
|
|
margin: EdgeInsets.fromLTRB(15, 5, 15, 5),
|
|
padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
|
|
width: double.infinity,
|
|
decoration: BoxDecoration(
|
|
borderRadius: BorderRadius.circular(5),
|
|
gradient: LinearGradient(colors: [
|
|
Color(0xFF2D4059),
|
|
Color(0xFF2D4059),
|
|
/*Color(0xFFEAFFD0),
|
|
Color(0xFF95E1D3),*/
|
|
])),
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: [
|
|
Flexible(
|
|
child: Text('Declaration of Assignment Letter\t\t',
|
|
textAlign: TextAlign.center,
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 17,
|
|
fontWeight: FontWeight.w500))),
|
|
Image.asset('assets/images/declaration.png',
|
|
width: 30,
|
|
height: 30,
|
|
)
|
|
],
|
|
)),
|
|
onTap: () {
|
|
Navigator.push(
|
|
context,
|
|
MaterialPageRoute(
|
|
builder: (context) => DeklarasiST_Screen()));
|
|
},
|
|
),
|
|
InkWell(
|
|
child: Container(
|
|
margin: EdgeInsets.fromLTRB(15, 5, 15, 5),
|
|
padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
|
|
width: double.infinity,
|
|
decoration: BoxDecoration(
|
|
borderRadius: BorderRadius.circular(5),
|
|
gradient: LinearGradient(colors: [
|
|
Color(0xFF2D4059),
|
|
Color(0xFF2D4059),
|
|
/*Color(0xFFEAFFD0),
|
|
Color(0xFF95E1D3),*/
|
|
])),
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: [
|
|
Flexible(
|
|
child: Text('See Assignment Letter History\t\t',
|
|
textAlign: TextAlign.center,
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 17,
|
|
fontWeight: FontWeight.w500))),
|
|
Image.asset('assets/images/ic_history.png',
|
|
width: 30,
|
|
height: 30,
|
|
)
|
|
],
|
|
)),
|
|
onTap: () {
|
|
Navigator.push(
|
|
context,
|
|
MaterialPageRoute(
|
|
builder: (context) => HistoryST()));
|
|
},
|
|
),
|
|
InkWell(
|
|
child: Container(
|
|
margin: EdgeInsets.fromLTRB(15, 5, 15, 5),
|
|
padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
|
|
width: double.infinity,
|
|
decoration: BoxDecoration(
|
|
borderRadius: BorderRadius.circular(5),
|
|
gradient: LinearGradient(colors: [
|
|
Color(0xFF2D4059),
|
|
Color(0xFF2D4059),
|
|
/*Color(0xFFEAFFD0),
|
|
Color(0xFF95E1D3),*/
|
|
])),
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: [
|
|
Flexible(
|
|
child: Text('Additional Advance Payment\t\t',
|
|
textAlign: TextAlign.center,
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 17,
|
|
fontWeight: FontWeight.w500))),
|
|
Image.asset('assets/images/extra_money.png',
|
|
width: 30,
|
|
height: 30,
|
|
)
|
|
],
|
|
)),
|
|
onTap: () {},
|
|
),
|
|
InkWell(
|
|
child: Container(
|
|
margin: EdgeInsets.fromLTRB(15, 5, 15, 5),
|
|
padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
|
|
width: double.infinity,
|
|
decoration: BoxDecoration(
|
|
borderRadius: BorderRadius.circular(5),
|
|
gradient: LinearGradient(colors: [
|
|
Color(0xFF2D4059),
|
|
Color(0xFF2D4059),
|
|
/*Color(0xFFEAFFD0),
|
|
Color(0xFF95E1D3),*/
|
|
])),
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: [
|
|
Flexible(
|
|
child: Text('Return Date Extension\t\t',
|
|
textAlign: TextAlign.center,
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 17,
|
|
fontWeight: FontWeight.w500))),
|
|
Image.asset('assets/images/extend_tanggal.png',
|
|
width: 30,
|
|
height: 30,
|
|
)
|
|
],
|
|
)),
|
|
onTap: () {}
|
|
),
|
|
/*Container(
|
|
child: Card(
|
|
elevation: 10,
|
|
child: Container(
|
|
decoration: BoxDecoration(
|
|
color: Color(0XFFFAF7EE),
|
|
borderRadius: BorderRadius.circular(10)),
|
|
child: Column(
|
|
children: [
|
|
Container(
|
|
margin: EdgeInsets.only(
|
|
left: 10, right: 10, top: 10, bottom: 10),
|
|
child: Row(
|
|
children: [
|
|
Expanded(
|
|
flex: 3,
|
|
child: Text(
|
|
'Kategori\t:\t',
|
|
style: GoogleFonts.inconsolata(
|
|
fontSize: 17),
|
|
)),
|
|
Expanded(
|
|
flex: 7,
|
|
child: Container(
|
|
decoration: BoxDecoration(
|
|
color:
|
|
CupertinoColors.systemGrey2,
|
|
borderRadius:
|
|
BorderRadius.circular(5)),
|
|
child: DropdownButton(
|
|
value: this.selectedCategory,
|
|
isExpanded: true,
|
|
underline: SizedBox(),
|
|
hint: Text(
|
|
'\t\t\tPilih Kategori',
|
|
style: TextStyle(
|
|
color: Colors.black54),
|
|
),
|
|
onChanged: (value) {
|
|
print(value);
|
|
setState(() {
|
|
selectedCategory = value!;
|
|
});
|
|
},
|
|
items: reimburseCategory
|
|
.map(
|
|
(e) => DropdownMenuItem(
|
|
value: e,
|
|
child:
|
|
Text("\t\t\t" + e)),
|
|
)
|
|
.toList(),
|
|
),
|
|
)),
|
|
],
|
|
),
|
|
),
|
|
Container(
|
|
margin: EdgeInsets.only(
|
|
left: 10, right: 10, top: 10, bottom: 10),
|
|
child: Column(
|
|
children: [
|
|
Row(
|
|
children: [
|
|
Expanded(
|
|
flex: 3,
|
|
child: Text(
|
|
'Tanggal\t:\t',
|
|
style: GoogleFonts.inconsolata(
|
|
fontSize: 17),
|
|
)),
|
|
Expanded(
|
|
flex: 7,
|
|
child: Container(
|
|
decoration: BoxDecoration(
|
|
color: CupertinoColors
|
|
.systemGrey2,
|
|
borderRadius:
|
|
BorderRadius.circular(
|
|
5)),
|
|
child: Column(
|
|
children: [
|
|
DropdownButton(
|
|
value: this.selectedDate,
|
|
isExpanded: true,
|
|
underline: SizedBox(),
|
|
hint: Text(
|
|
'\t\t\tPilih Tanggal',
|
|
style: TextStyle(
|
|
color:
|
|
Colors.black54),
|
|
),
|
|
onChanged: (value) {
|
|
print(value);
|
|
setState(() {
|
|
selectedDate = value!;
|
|
});
|
|
},
|
|
items: reimburseCategory
|
|
.map(
|
|
(e) =>
|
|
DropdownMenuItem(
|
|
value: e,
|
|
child: Text(
|
|
"\t\t\t" +
|
|
e)),
|
|
)
|
|
.toList(),
|
|
),
|
|
],
|
|
),
|
|
)),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
),
|
|
Container(
|
|
margin: EdgeInsets.only(
|
|
left: 10, right: 10, top: 10, bottom: 10),
|
|
child: Row(
|
|
children: [
|
|
Expanded(
|
|
flex: 3,
|
|
child: Text(
|
|
'Total Harga\t:\t',
|
|
style: GoogleFonts.inconsolata(
|
|
fontSize: 17),
|
|
)),
|
|
Expanded(
|
|
flex: 7,
|
|
child: Container(
|
|
decoration: BoxDecoration(
|
|
color: Colors.white,
|
|
borderRadius:
|
|
BorderRadius.circular(5)),
|
|
child: Padding(
|
|
padding: EdgeInsets.only(
|
|
left: 10,
|
|
right: 10,
|
|
top: 5,
|
|
bottom: 5),
|
|
child: TextFormField(
|
|
keyboardType:
|
|
TextInputType.number,
|
|
maxLines: 1,
|
|
textInputAction:
|
|
TextInputAction.next,
|
|
decoration: InputDecoration(
|
|
border:
|
|
InputBorder.none,
|
|
hintText:
|
|
"Masukkan tanpa tanda baca (.) atau (,)")),
|
|
))),
|
|
],
|
|
),
|
|
),
|
|
Container(
|
|
margin: EdgeInsets.only(
|
|
left: 10, right: 10, top: 10, bottom: 10),
|
|
child: Row(
|
|
children: [
|
|
Expanded(
|
|
flex: 3,
|
|
child: Text(
|
|
'Deskripsi\t:\t',
|
|
style: GoogleFonts.inconsolata(
|
|
fontSize: 17),
|
|
)),
|
|
Expanded(
|
|
flex: 7,
|
|
child: Container(
|
|
decoration: BoxDecoration(
|
|
color: Colors.white,
|
|
borderRadius:
|
|
BorderRadius.circular(5)),
|
|
child: Padding(
|
|
padding: EdgeInsets.only(
|
|
left: 10,
|
|
right: 10,
|
|
top: 5,
|
|
bottom: 5),
|
|
child: TextFormField(
|
|
keyboardType:
|
|
TextInputType.multiline,
|
|
maxLines: null,
|
|
textInputAction:
|
|
TextInputAction.done,
|
|
decoration: InputDecoration(
|
|
border:
|
|
InputBorder.none,
|
|
hintText: "Deskripsi")),
|
|
))),
|
|
],
|
|
),
|
|
),
|
|
Container(
|
|
margin: EdgeInsets.only(
|
|
left: 10, right: 10, top: 10, bottom: 10),
|
|
child: Column(
|
|
children: [
|
|
Row(
|
|
children: [
|
|
Expanded(
|
|
flex: 3,
|
|
child: Text(
|
|
'Pembayaran\t:',
|
|
style: GoogleFonts.inconsolata(
|
|
fontSize: 17),
|
|
)),
|
|
Expanded(
|
|
flex: 7,
|
|
child: Container(
|
|
child: Column(
|
|
children: [
|
|
Row(
|
|
children: [
|
|
Radio(
|
|
value: 1,
|
|
groupValue: _value,
|
|
onChanged: (value) {
|
|
setState(() {
|
|
_value = value!;
|
|
});
|
|
},
|
|
),
|
|
Flexible(
|
|
child: Text(
|
|
"Karyawan (Perlu Reimburse)",
|
|
style:
|
|
TextStyle(
|
|
color: Colors
|
|
.black54,
|
|
))),
|
|
],
|
|
),
|
|
Row(
|
|
children: [
|
|
Radio(
|
|
value: 2,
|
|
groupValue: _value,
|
|
onChanged: (value) {
|
|
setState(() {
|
|
_value = value!;
|
|
});
|
|
},
|
|
),
|
|
Flexible(
|
|
child: Text(
|
|
"Perusahaan",
|
|
style: TextStyle(
|
|
color: Colors
|
|
.black54)))
|
|
],
|
|
),
|
|
],
|
|
),
|
|
)),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
),
|
|
Container(
|
|
margin: EdgeInsets.only(
|
|
left: 10, right: 10, top: 10, bottom: 10),
|
|
child: Column(
|
|
children: [
|
|
Row(
|
|
children: [
|
|
Expanded(
|
|
flex: 3,
|
|
child: Text(
|
|
'Lampiran\t:\t',
|
|
style: GoogleFonts.inconsolata(
|
|
fontSize: 17),
|
|
),
|
|
),
|
|
Expanded(
|
|
flex: 7,
|
|
child: Container(
|
|
child: ElevatedButton(
|
|
onPressed: () {},
|
|
child: Container(
|
|
width: double.infinity,
|
|
child: Text("Pilih File"),
|
|
),
|
|
),
|
|
),
|
|
)
|
|
],
|
|
),
|
|
Row(
|
|
children: [
|
|
Expanded(
|
|
flex: 3,
|
|
child: Text(
|
|
'',
|
|
style: GoogleFonts.inconsolata(
|
|
fontSize: 17),
|
|
),
|
|
),
|
|
Expanded(
|
|
flex: 7,
|
|
child: Visibility(
|
|
visible: true,
|
|
child: Container(
|
|
alignment:
|
|
Alignment.centerLeft,
|
|
margin: EdgeInsets.only(
|
|
left: 15,
|
|
right: 15,
|
|
bottom: 10),
|
|
child: Flexible(
|
|
child: Text(
|
|
"Selected File",
|
|
style: TextStyle(
|
|
color:
|
|
Colors.black54),
|
|
),
|
|
),
|
|
)),
|
|
)
|
|
],
|
|
),
|
|
InkWell(
|
|
child: Container(
|
|
padding: EdgeInsets.fromLTRB(
|
|
10, 10, 10, 10),
|
|
width: double.infinity,
|
|
decoration: BoxDecoration(
|
|
borderRadius:
|
|
BorderRadius.circular(5),
|
|
gradient: LinearGradient(colors: [
|
|
Color(0xFFFF9945),
|
|
Color(0xFFFc6076)
|
|
])),
|
|
child: Text('Ajukan',
|
|
textAlign: TextAlign.center,
|
|
style: TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 17,
|
|
fontWeight: FontWeight.w500)),
|
|
),
|
|
onTap: () {},
|
|
)
|
|
],
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),*/
|
|
],
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
],
|
|
)),
|
|
);
|
|
}
|
|
}
|
|
|
|
List<String> reimburseCategory = [
|
|
"Paid Time Off",
|
|
"Sick Time Off",
|
|
"Compensatory Days",
|
|
"Unpaid"
|
|
];
|