first commit

This commit is contained in:
kicap
2023-11-04 03:55:38 +08:00
commit 212fb855f9
169 changed files with 8572 additions and 0 deletions

View File

@ -0,0 +1,136 @@
import 'package:flutter/material.dart';
import 'package:stacked/stacked.dart';
import '../../../../app/themes/app_colors.dart';
import '../../../../app/themes/app_text.dart';
import '../../../widgets/top_container.dart';
import './first_page_view_model.dart';
class FirstPageView extends StatelessWidget {
const FirstPageView({super.key});
@override
Widget build(BuildContext context) {
return ViewModelBuilder<FirstPageViewModel>.reactive(
viewModelBuilder: () => FirstPageViewModel(),
onViewModelReady: (FirstPageViewModel model) async {
await model.init();
},
builder: (
BuildContext context,
FirstPageViewModel model,
Widget? child,
) {
return Scaffold(
body: WillPopScope(
onWillPop: () async {
// model.log.i('backPressed: ${model.globalVar.backPressed}');
if (model.globalVar.backPressed == 'exitApp') {
// model.back();
model.quitApp(context);
}
return false;
},
child: SafeArea(
child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TopContainer(
title: 'Jumlah Pemilih',
value: '${model.counter} Orang',
icon: Icons.people_alt_outlined,
background: blueColor,
),
const SizedBox(
height: 20,
),
RichText(
text: TextSpan(
text: 'Selamat Datang, ',
style: regularTextStyle,
children: [
TextSpan(
text: '${model.nama}\n\n',
style: boldTextStyle,
),
const TextSpan(
text: 'Silahkan tambahkan data ',
style: regularTextStyle,
),
TextSpan(
text: 'Pemilih ',
style: boldTextStyle.copyWith(
color: greenColor,
fontStyle: FontStyle.italic,
),
),
const TextSpan(
text: 'dengan menekan menu ',
style: regularTextStyle,
),
TextSpan(
text: 'Survei ',
style: boldTextStyle.copyWith(
color: greenColor,
fontStyle: FontStyle.italic,
),
),
const TextSpan(
text: 'di bawah sebelah kanan.\n\n',
style: regularTextStyle,
),
const TextSpan(
text: 'Menu ',
style: regularTextStyle,
),
TextSpan(
text: 'History ',
style: boldTextStyle.copyWith(
color: greenColor,
fontStyle: FontStyle.italic,
),
),
const TextSpan(
text:
'pada bawah tengah digunakan untuk melihat data yang sudah diinputkan.\n\n',
style: regularTextStyle,
),
const TextSpan(
text: 'Menu ',
style: regularTextStyle,
),
TextSpan(
text: 'Pengaturan ',
style: boldTextStyle.copyWith(
color: greenColor,
fontStyle: FontStyle.italic,
),
),
const TextSpan(
text:
'pada bawah debelah kanan digunakan untuk mengubah data diri anda.\n\nSekian dari Developer',
style: regularTextStyle,
),
TextSpan(
text: '\nKicap Karan ',
style: boldTextStyle.copyWith(
color: dangerColor,
fontStyle: FontStyle.italic,
),
),
],
),
),
],
),
),
),
),
);
},
);
}
}

View File

@ -0,0 +1,30 @@
import '../../../../app/app.logger.dart';
import '../../../../app/core/custom_base_view_model.dart';
import '../../../../model/my_response.model.dart';
class FirstPageViewModel extends CustomBaseViewModel {
final log = getLogger('FirstPageViewModel');
int counter = 0;
String? nik;
String? nama;
Future<void> init() async {
globalVar.backPressed = 'exitApp';
nik = await mySharedPrefs.getString('nik');
nama = await mySharedPrefs.getString('nama');
await getData();
}
getData() async {
setBusy(true);
try {
var response = await httpService.get('tim_survei/counter/$nik');
MyResponseModel myResponseModel = MyResponseModel.fromJson(response.data);
counter = myResponseModel.data;
} catch (e) {
log.e(e.toString());
} finally {
setBusy(false);
}
}
}