added cek suara bottom sheet and detail suara bottom sheet

This commit is contained in:
kicap
2023-11-04 05:58:20 +08:00
parent 283f793d29
commit 2f9e6703ef
17 changed files with 664 additions and 219 deletions

View File

@ -1,44 +0,0 @@
import 'package:flutter/material.dart';
import 'package:stacked/stacked.dart';
import 'package:stacked_services/stacked_services.dart';
import './coba_bottom_sheet_view_model.dart';
class CobaBottomSheetView extends StatelessWidget {
final SheetRequest? request;
final Function(SheetResponse)? completer;
const CobaBottomSheetView({
Key? key,
this.request,
this.completer,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return ViewModelBuilder<CobaBottomSheetViewModel>.reactive(
viewModelBuilder: () => CobaBottomSheetViewModel(),
onViewModelReady: (CobaBottomSheetViewModel model) async {
await model.init();
},
builder: (
BuildContext context,
CobaBottomSheetViewModel model,
Widget? child,
) {
return SafeArea(
child: Container(
padding: const EdgeInsets.all(20),
decoration: const BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(20),
topRight: Radius.circular(20),
),
),
child: const Text('Coba Bottom Sheet'),
),
);
},
);
}
}

View File

@ -1,5 +0,0 @@
import 'package:cek_suara/app/core/custom_base_view_model.dart';
class CobaBottomSheetViewModel extends CustomBaseViewModel {
Future<void> init() async {}
}

View File

@ -55,79 +55,84 @@ class HalamanCalegView extends StatelessWidget {
borderRadius: BorderRadius.circular(10),
color: warningColor,
),
child: Column(
// mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: model.isBusy
? MainAxisAlignment.center
: (model.listCalegModel.isNotEmpty
? MainAxisAlignment.start
: MainAxisAlignment.center),
children: [
if (model.isBusy)
const LinearProgressIndicator(
minHeight: 5,
color: mainColor,
),
if (!model.isBusy &&
model.listCalegModel.isNotEmpty)
SingleChildScrollView(
child: Column(
children: [
for (var i = 0; i < model.jumlahCaleg; i++)
Card(
child: ListTile(
leading: Text('${i + 1}'),
title: Text(
model.listCalegModel[i].namaCaleg!,
style: boldTextStyle,
),
subtitle: Text(
'No. Urut: ${model.listCalegModel[i].nomorUrutCaleg!}',
style: italicTextStyle,
),
trailing: Row(
mainAxisSize: MainAxisSize.min,
children: [
IconButton(
icon: const Icon(
Icons.info_outline,
color: mainColor,
child: SingleChildScrollView(
child: Column(
// mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: model.isBusy
? MainAxisAlignment.center
: (model.listCalegModel.isNotEmpty
? MainAxisAlignment.start
: MainAxisAlignment.center),
children: [
if (model.isBusy)
const LinearProgressIndicator(
minHeight: 5,
color: mainColor,
),
if (!model.isBusy &&
model.listCalegModel.isNotEmpty)
SingleChildScrollView(
child: Column(
children: [
for (var i = 0;
i < model.jumlahCaleg;
i++)
Card(
child: ListTile(
leading: Text('${i + 1}'),
title: Text(
model
.listCalegModel[i].namaCaleg!,
style: boldTextStyle,
),
subtitle: Text(
'No. Urut: ${model.listCalegModel[i].nomorUrutCaleg!}',
style: italicTextStyle,
),
trailing: Row(
mainAxisSize: MainAxisSize.min,
children: [
IconButton(
icon: const Icon(
Icons.info_outline,
color: mainColor,
),
onPressed: () {
model.showDetailCaleg(model
.listCalegModel[i]);
},
),
onPressed: () {
model.showDetailCaleg(
model.listCalegModel[i]);
},
),
IconButton(
icon: const Icon(
// trash
Icons.delete_outline,
color: dangerColor,
IconButton(
icon: const Icon(
// trash
Icons.delete_outline,
color: dangerColor,
),
onPressed: () {
model.deleteCaleg(model
.listCalegModel[i]);
},
),
onPressed: () {
model.deleteCaleg(
model.listCalegModel[i]);
},
),
],
],
),
),
),
),
],
],
),
),
),
if (!model.isBusy && model.listCalegModel.isEmpty)
Center(
child: Text(
model.status == true
? 'Tidak ada data caleg diinput sebelumnya'
: 'Gagal mengambil data caleg',
style: italicTextStyle,
textAlign: TextAlign.center,
if (!model.isBusy && model.listCalegModel.isEmpty)
Center(
child: Text(
model.status == true
? 'Tidak ada data caleg diinput sebelumnya'
: 'Gagal mengambil data caleg',
style: italicTextStyle,
textAlign: TextAlign.center,
),
),
),
],
],
),
),
),
),

View File

@ -217,7 +217,8 @@ class TambahEditCalegView extends StatelessWidget {
),
),
const SizedBox(height: 10),
if (model.calegModel == null)
if (model.calegModel == null &&
request.title == 'Tambah Caleg')
SizedBox(
width: 250,
child: MyButton(
@ -291,13 +292,15 @@ class TambahEditCalegView extends StatelessWidget {
width: 50,
height: 50,
decoration: BoxDecoration(
color: mainColor.withOpacity(0.5),
color: mainColor,
borderRadius: BorderRadius.circular(50),
),
child: IconButton(
onPressed: () {},
onPressed: () {
model.checkSuara(model.calegModel!);
},
icon: const Icon(
Icons.info,
Icons.list_alt,
color: Colors.white,
),
),

View File

@ -5,6 +5,7 @@ import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:http_parser/http_parser.dart';
import '../../../../../app/app.bottomsheets.dart';
import '../../../../../app/app.logger.dart';
import '../../../../../app/core/custom_base_view_model.dart';
@ -190,4 +191,17 @@ class TambahEditCalegViewModel extends CustomBaseViewModel {
// remove all dialog
}
}
checkSuara(CalegModel calegModel) async {
log.i('calegModel: ${calegModel.toJson()}');
await bottomSheetService.showCustomSheet(
data: calegModel.idCaleg,
barrierDismissible: true,
isScrollControlled: true,
title: 'Detail Suara Caleg ${calegModel.namaCaleg}',
description: 'Caleg',
ignoreSafeArea: false,
variant: BottomSheetType.detailSuaraBottomSheetView,
);
}
}