added cek suara bottom sheet and detail suara bottom sheet
This commit is contained in:
@ -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'),
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
import 'package:cek_suara/app/core/custom_base_view_model.dart';
|
||||
|
||||
class CobaBottomSheetViewModel extends CustomBaseViewModel {
|
||||
Future<void> init() async {}
|
||||
}
|
@ -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,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -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,
|
||||
),
|
||||
),
|
||||
|
@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user