Commit 64124429 authored by Izol's avatar Izol

topup confirm #2

parent 8341e589
...@@ -16,16 +16,16 @@ ...@@ -16,16 +16,16 @@
<option name="name" value="MavenRepo" /> <option name="name" value="MavenRepo" />
<option name="url" value="https://repo.maven.apache.org/maven2/" /> <option name="url" value="https://repo.maven.apache.org/maven2/" />
</remote-repository> </remote-repository>
<remote-repository>
<option name="id" value="Google9" />
<option name="name" value="Google9" />
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
</remote-repository>
<remote-repository> <remote-repository>
<option name="id" value="maven4" /> <option name="id" value="maven4" />
<option name="name" value="maven4" /> <option name="name" value="maven4" />
<option name="url" value="https://storage.googleapis.com/download.flutter.io" /> <option name="url" value="https://storage.googleapis.com/download.flutter.io" />
</remote-repository> </remote-repository>
<remote-repository>
<option name="id" value="Google7" />
<option name="name" value="Google7" />
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
</remote-repository>
<remote-repository> <remote-repository>
<option name="id" value="maven2" /> <option name="id" value="maven2" />
<option name="name" value="maven2" /> <option name="name" value="maven2" />
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">
......
...@@ -97,7 +97,7 @@ dependencies { ...@@ -97,7 +97,7 @@ dependencies {
// library mdd // library mdd
// change 11 // change 11
implementation(group: 'com.mdd.topup', name: 'mifare_mdd_lib', version: '0.0.41', ext: 'aar') implementation(group: 'com.mdd.topup', name: 'mifare_mdd_lib', version: '0.1.5', ext: 'aar')
implementation(group: 'com.mdd.payment', name: 'aar-deviceid-release', version: '2.0.6', ext: 'aar') implementation(group: 'com.mdd.payment', name: 'aar-deviceid-release', version: '2.0.6', ext: 'aar')
implementation(group: 'com.mdd.library', name: 'android-escpos-receipt', version: '1.0.1', ext: 'aar') implementation(group: 'com.mdd.library', name: 'android-escpos-receipt', version: '1.0.1', ext: 'aar')
implementation(group: 'com.mdd.payment', name: 'nativecripto-release', version: '2.0.1', ext: 'aar') implementation(group: 'com.mdd.payment', name: 'nativecripto-release', version: '2.0.1', ext: 'aar')
......
...@@ -108,6 +108,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT ...@@ -108,6 +108,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
val approvalCode = call.argument<String>("approval_code") val approvalCode = call.argument<String>("approval_code")
val paymentMethod = call.argument<String>("payment_method") val paymentMethod = call.argument<String>("payment_method")
val paymentProvider = call.argument<String>("payment_provider") val paymentProvider = call.argument<String>("payment_provider")
val tid = call.argument<String>("tid")
val topupInquiryResponse = _mifareTicketing?.topupConfirm( val topupInquiryResponse = _mifareTicketing?.topupConfirm(
cardNumber!!, cardNumber!!,
...@@ -116,8 +117,10 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT ...@@ -116,8 +117,10 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
approvalCode!!, approvalCode!!,
paymentMethod!!, paymentMethod!!,
paymentProvider!!, paymentProvider!!,
"TOP_SS${Date().time}" "TOP_SS${Date().time}",
) "TOP_SS${Date().time}",
tid!!,
)
result.success(Gson().toJson(topupInquiryResponse)) result.success(Gson().toJson(topupInquiryResponse))
} }
...@@ -225,6 +228,10 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT ...@@ -225,6 +228,10 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
result?.success("success init engine") result?.success("success init engine")
} }
override fun onSuccessMultiBinding(listTicket: List<Ticket>) {
TODO("Not yet implemented")
}
override fun onSuccessPostPerso(ticket: Ticket?) { override fun onSuccessPostPerso(ticket: Ticket?) {
TODO("Not yet implemented") TODO("Not yet implemented")
} }
......
...@@ -25,5 +25,7 @@ ...@@ -25,5 +25,7 @@
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Flutter for Android" level="project" /> <orderEntry type="library" name="Flutter for Android" level="project" />
<orderEntry type="library" name="KotlinJavaRuntime" level="project" /> <orderEntry type="library" name="KotlinJavaRuntime" level="project" />
<orderEntry type="library" name="Dart SDK" level="project" />
<orderEntry type="library" name="Dart Packages" level="project" />
</component> </component>
</module> </module>
\ No newline at end of file
// This is a generated file; do not edit or check into version control. // This is a generated file; do not edit or check into version control.
FLUTTER_ROOT=C:\Users\MDD HP\flutter FLUTTER_ROOT=/Users/macbookpro/Developer/flutter
FLUTTER_APPLICATION_PATH=C:\Users\MDD HP\dolan-selfservice-master FLUTTER_APPLICATION_PATH=/Users/macbookpro/dolan-selfservice-topup
COCOAPODS_PARALLEL_CODE_SIGN=true COCOAPODS_PARALLEL_CODE_SIGN=true
FLUTTER_TARGET=lib\main.dart FLUTTER_TARGET=lib/main.dart
FLUTTER_BUILD_DIR=build FLUTTER_BUILD_DIR=build
FLUTTER_BUILD_NAME=1.0.0 FLUTTER_BUILD_NAME=1.0.0
FLUTTER_BUILD_NUMBER=1 FLUTTER_BUILD_NUMBER=1
......
#!/bin/sh #!/bin/sh
# This is a generated file; do not edit or check into version control. # This is a generated file; do not edit or check into version control.
export "FLUTTER_ROOT=C:\Users\MDD HP\flutter" export "FLUTTER_ROOT=/Users/macbookpro/Developer/flutter"
export "FLUTTER_APPLICATION_PATH=C:\Users\MDD HP\dolan-selfservice-master" export "FLUTTER_APPLICATION_PATH=/Users/macbookpro/dolan-selfservice-topup"
export "COCOAPODS_PARALLEL_CODE_SIGN=true" export "COCOAPODS_PARALLEL_CODE_SIGN=true"
export "FLUTTER_TARGET=lib\main.dart" export "FLUTTER_TARGET=lib/main.dart"
export "FLUTTER_BUILD_DIR=build" export "FLUTTER_BUILD_DIR=build"
export "FLUTTER_BUILD_NAME=1.0.0" export "FLUTTER_BUILD_NAME=1.0.0"
export "FLUTTER_BUILD_NUMBER=1" export "FLUTTER_BUILD_NUMBER=1"
......
...@@ -91,6 +91,7 @@ class StartService { ...@@ -91,6 +91,7 @@ class StartService {
static Future<String> topUpConfirm( static Future<String> topUpConfirm(
String cardNumber, String cardNumber,
String lastBalance, String lastBalance,
String tid,
String samReport, String samReport,
String approvalCode, String approvalCode,
String paymentMethod, String paymentMethod,
...@@ -101,6 +102,7 @@ class StartService { ...@@ -101,6 +102,7 @@ class StartService {
result = await platform.invokeMethod("topup_confirm", <String, dynamic>{ result = await platform.invokeMethod("topup_confirm", <String, dynamic>{
'card_number': cardNumber, 'card_number': cardNumber,
'last_balance': lastBalance, 'last_balance': lastBalance,
'tid' : tid,
'sam_report': samReport, 'sam_report': samReport,
'approval_code': approvalCode, 'approval_code': approvalCode,
'payment_method': paymentMethod, 'payment_method': paymentMethod,
......
...@@ -144,7 +144,6 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback { ...@@ -144,7 +144,6 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
@override @override
void dispose() { void dispose() {
idleDuration.dispose(); idleDuration.dispose();
// timer?.cancel(); // timer?.cancel();
super.dispose(); super.dispose();
} }
...@@ -163,6 +162,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback { ...@@ -163,6 +162,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
_checkInternetSpeed(); // call _checkInternetSpeed function when there is internet connection _checkInternetSpeed(); // call _checkInternetSpeed function when there is internet connection
} else { } else {
_statusColor = Colors.yellow; _statusColor = Colors.yellow;
} }
}); });
} }
...@@ -379,6 +379,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback { ...@@ -379,6 +379,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
var info, var info,
infoMap, infoMap,
lastBalance, lastBalance,
tid,
samReport, samReport,
paymentMethod, paymentMethod,
paymentProvider, paymentProvider,
...@@ -391,10 +392,12 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback { ...@@ -391,10 +392,12 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
samReport = infoMap['report'].toString(); samReport = infoMap['report'].toString();
paymentMethod = 'QRIS'; paymentMethod = 'QRIS';
paymentProvider = PreferencesHelper.getString('provider'); paymentProvider = PreferencesHelper.getString('provider');
tid = PreferencesHelper.getString('outletname');
tid = tid.substring(tid.length -4);
if (int.parse(lastBalance) > int.parse(prevBalance!)) { if (int.parse(lastBalance) > int.parse(prevBalance!)) {
countMax = 0; countMax = 0;
var result = await StartService.topUpConfirm(cardNumber, lastBalance, var result = await StartService.topUpConfirm(cardNumber, lastBalance, tid,
samReport, approvalCode, paymentMethod, paymentProvider); samReport, approvalCode, paymentMethod, paymentProvider);
print('topUpConfirm result: $result'); print('topUpConfirm result: $result');
...@@ -1263,362 +1266,371 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback { ...@@ -1263,362 +1266,371 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
} }
void denom(String outletName, var info) { void denom(String outletName, var info) {
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);
showDialog( showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
return StatefulBuilder(builder: (context, StateSetter setState) { return StatefulBuilder(builder: (context, StateSetter setState) {
return Center( return Container(
child: SingleChildScrollView( decoration: BoxDecoration(
child: AlertDialog( image: const DecorationImage(
title: Container( fit: BoxFit.cover,
padding: const EdgeInsets.symmetric( image: AssetImage(
horizontal: 20, vertical: 20), 'assets/img_bg_card.png',
decoration: BoxDecoration( ),
borderRadius: BorderRadius.circular(28), ), ),
image: const DecorationImage( child:Center(
fit: BoxFit.cover, child: SingleChildScrollView(
image: AssetImage( child: AlertDialog(
'assets/img_bg_card.png', backgroundColor: lightBackgroundColor,
), title: Container(
), padding: const EdgeInsets.symmetric(
), horizontal: 20, vertical: 20),
width: 1000, decoration: BoxDecoration(
margin: borderRadius: BorderRadius.circular(0),
const EdgeInsets.symmetric(vertical: 10, horizontal: 0), image: const DecorationImage(
child: Row( fit: BoxFit.cover,
children: [ image: AssetImage(
Align( 'assets/img_bg_card.png',
alignment: Alignment.topLeft,
child: GestureDetector(
onTap: () {
Navigator.pop(context);
setState(() {
isShowingDialog = false;
});
if (timer != null) timer?.cancel();
tapIdle();
},
child: Icon(
Icons.arrow_back,
size: 32,
color: lightBackgroundColor,
), ),
), ),
), ),
SizedBox( width: 1200,
width: 330, margin:
), const EdgeInsets.symmetric(vertical: 10, horizontal: 0),
Text( child: Row(
'Isi Ulang Saldo', children: [
style: blackTextStyle.copyWith( Align(
fontSize: 25, alignment: Alignment.topLeft,
color: Colors.white, child: GestureDetector(
fontWeight: bold, onTap: () {
letterSpacing: 2, Navigator.pop(context);
), setState(() {
textAlign: TextAlign.center, isShowingDialog = false;
), });
], if (timer != null) timer?.cancel();
), tapIdle();
), },
content: SingleChildScrollView( child: Icon(
child: ListBody( Icons.arrow_back,
children: <Widget>[ size: 32,
Container( color: lightBackgroundColor,
padding: EdgeInsets.symmetric(horizontal: 17),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Center(
child: Text(
'topup balance',
style: greyTextStyle.copyWith(
fontSize: 15,
fontStyle: FontStyle.italic,
fontWeight: light,
),
),
),
Text(
'Pilih nominal isi ulang',
style: blackTextStyle.copyWith(
fontSize: 20,
fontWeight: bold,
),
),
Text(
'Choose topup amount',
style: greyTextStyle.copyWith(
fontSize: 15,
fontStyle: FontStyle.italic,
fontWeight: light,
), ),
), ),
SizedBox( ),
height: 20, SizedBox(
width: 480,
),
Text(
'Isi Ulang Saldo',
style: blackTextStyle.copyWith(
fontSize: 25,
color: Colors.white,
fontWeight: bold,
letterSpacing: 2,
), ),
Row( textAlign: TextAlign.center,
children: [ ),
Expanded( ],
child: GestureDetector( ),
onTap: () { ),
if (timer != null) timer?.cancel(); content: Container (
tapIdle(); child: ListBody(
children: <Widget>[
if (mounted) { Column(
setState(() { crossAxisAlignment: CrossAxisAlignment.start,
amountController!.text = cTopUp1; children: [
}); Center(
} child: Text(
}, 'topup balance',
child: Container( style: greyTextStyle.copyWith(
padding: fontSize: 15,
EdgeInsets.symmetric(vertical: 15), fontStyle: FontStyle.italic,
decoration: BoxDecoration( fontWeight: light,
border: Border.all( ),
color: amountController!.text ==
cTopUp1
? purpleColor
: Colors.black12),
borderRadius: BorderRadius.circular(7),
),
child: Center(
child: Text("50,000",
style: blackTextStyle.copyWith(
fontSize: 25,
fontWeight: bold,
)),
), ),
), ),
)), Text(
SizedBox( 'Pilih nominal isi ulang',
width: 10, style: blackTextStyle.copyWith(
), fontSize: 20,
Expanded( fontWeight: bold,
child: GestureDetector(
onTap: () {
if (timer != null) timer?.cancel();
tapIdle();
if (mounted) {
setState(() {
amountController!.text = cTopUp2;
});
}
},
child: Container(
padding:
EdgeInsets.symmetric(vertical: 15),
decoration: BoxDecoration(
border: Border.all(
color: (amountController!.text ==
cTopUp2)
? Color(0xff005DAC)
: Colors.black12),
borderRadius: BorderRadius.circular(7),
),
child: Center(
child: Text("150,000",
style: blackTextStyle.copyWith(
fontSize: 25,
fontWeight: bold,
)),
), ),
), ),
)) Text(
], 'Choose topup amount',
), style: greyTextStyle.copyWith(
SizedBox( fontSize: 15,
height: 10, fontStyle: FontStyle.italic,
), fontWeight: light,
Row(
children: [
Expanded(
child: GestureDetector(
onTap: () {
if (timer != null) timer?.cancel();
tapIdle();
if (mounted) {
setState(() {
amountController!.text = cTopUp3;
});
}
},
child: Container(
padding:
EdgeInsets.symmetric(vertical: 15),
decoration: BoxDecoration(
border: Border.all(
color: (amountController!.text ==
cTopUp3)
? Color(0xff005DAC)
: Colors.black12),
borderRadius: BorderRadius.circular(7),
), ),
child: Center( ),
child: Text("100,000", SizedBox(
style: blackTextStyle.copyWith( height: 20,
fontSize: 25, ),
fontWeight: bold, Row(
children: [
Expanded(
child: GestureDetector(
onTap: () {
if (timer != null) timer?.cancel();
tapIdle();
if (mounted) {
setState(() {
amountController!.text = cTopUp1;
});
}
},
child: Container(
padding:
EdgeInsets.symmetric(vertical: 15),
decoration: BoxDecoration(
border: Border.all(
color: amountController!.text ==
cTopUp1
? purpleColor
: Colors.black12),
borderRadius: BorderRadius.circular(7),
),
child: Center(
child: Text("50,000",
style: blackTextStyle.copyWith(
fontSize: 25,
fontWeight: bold,
)),
),
),
)), )),
), SizedBox(
width: 10,
),
Expanded(
child: GestureDetector(
onTap: () {
if (timer != null) timer?.cancel();
tapIdle();
if (mounted) {
setState(() {
amountController!.text = cTopUp2;
});
}
},
child: Container(
padding:
EdgeInsets.symmetric(vertical: 15),
decoration: BoxDecoration(
border: Border.all(
color: (amountController!.text ==
cTopUp2)
? Color(0xff005DAC)
: Colors.black12),
borderRadius: BorderRadius.circular(7),
),
child: Center(
child: Text("150,000",
style: blackTextStyle.copyWith(
fontSize: 25,
fontWeight: bold,
)),
),
),
))
],
), ),
)), SizedBox(
SizedBox( height: 10,
width: 10, ),
), Row(
Expanded( children: [
child: GestureDetector( Expanded(
onTap: () { child: GestureDetector(
if (timer != null) timer?.cancel(); onTap: () {
tapIdle(); if (timer != null) timer?.cancel();
tapIdle();
if (mounted) {
setState(() { if (mounted) {
amountController!.text = cTopUp4; setState(() {
}); amountController!.text = cTopUp3;
} });
}, }
child: Container( },
padding: child: Container(
EdgeInsets.symmetric(vertical: 15), padding:
decoration: BoxDecoration( EdgeInsets.symmetric(vertical: 15),
border: Border.all( decoration: BoxDecoration(
color: (amountController!.text == border: Border.all(
cTopUp4) color: (amountController!.text ==
? Color(0xff005DAC) cTopUp3)
: Colors.black12), ? Color(0xff005DAC)
borderRadius: : Colors.black12),
BorderRadius.circular(7), borderRadius: BorderRadius.circular(7),
),
child: Center(
child: Text("100,000",
style: blackTextStyle.copyWith(
fontSize: 25,
fontWeight: bold,
)),
),
),
)),
SizedBox(
width: 10,
), ),
child: Center( Expanded(
child: Text("200,000", child: GestureDetector(
style: blackTextStyle.copyWith( onTap: () {
fontSize: 25, if (timer != null) timer?.cancel();
fontWeight: bold, tapIdle();
)),
if (mounted) {
setState(() {
amountController!.text = cTopUp4;
});
}
},
child: Container(
padding:
EdgeInsets.symmetric(vertical: 15),
decoration: BoxDecoration(
border: Border.all(
color: (amountController!.text ==
cTopUp4)
? Color(0xff005DAC)
: Colors.black12),
borderRadius:
BorderRadius.circular(7),
),
child: Center(
child: Text("200,000",
style: blackTextStyle.copyWith(
fontSize: 25,
fontWeight: bold,
)),
),
),
),
), ),
), ],
), ),
), ],
],
),
],
),
),
Container(
margin: EdgeInsets.only(top: 30),
padding: EdgeInsets.symmetric(horizontal: 17),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Atau masukkan nominal isi ulang disini',
style: blackTextStyle.copyWith(
fontSize: 20,
fontWeight: bold,
),
),
Text(
'or enter topup amount here',
style: greyTextStyle.copyWith(
fontSize: 15,
fontStyle: FontStyle.italic,
fontWeight: light,
), ),
),
SizedBox(
height: 20,
),
Container( Container(
height: 50, margin: EdgeInsets.only(top: 30),
padding: EdgeInsets.symmetric(horizontal: 16), padding: EdgeInsets.symmetric(horizontal: 17),
decoration: BoxDecoration( child: Column(
border: Border.all(color: Colors.black12), crossAxisAlignment: CrossAxisAlignment.start,
color: Colors.white, children: [
borderRadius: BorderRadius.circular(12)), Text(
child: Center( 'Atau masukkan nominal isi ulang disini',
child: Row( style: blackTextStyle.copyWith(
children: <Widget>[ fontSize: 20,
Expanded( fontWeight: bold,
child: TextFormField(
style: blackTextStyle.copyWith(
fontSize: 20,
fontWeight: bold,
color: purpleColor,
),
keyboardType:
TextInputType.numberWithOptions(
signed: true,
decimal: true),
controller: amountController,
inputFormatters: [
FilteringTextInputFormatter
.digitsOnly,
CurrencyInputFormatter()
],
textInputAction:
TextInputAction.done,
decoration:
InputDecoration.collapsed(
hintText: '50,000',
hintStyle:
blackTextStyle.copyWith(
fontSize: 20,
fontWeight: bold,
color: greyColor,
),
)),
), ),
], ),
), Text(
), 'or enter topup amount here',
), style: greyTextStyle.copyWith(
SizedBox(height: 30), fontSize: 15,
Column( fontStyle: FontStyle.italic,
children: [ fontWeight: light,
Row( ),
children: [ ),
Expanded( SizedBox(
child: CustomFilledButton( height: 20,
title: 'lanjut', ),
subtitle: 'proceed', Container(
onPressed: () { height: 50,
setState(() { padding: EdgeInsets.symmetric(horizontal: 16),
if (timer != null) decoration: BoxDecoration(
timer?.cancel(); border: Border.all(color: Colors.black12),
color: Colors.white,
// tapIdle(); borderRadius: BorderRadius.circular(12)),
if (mounted) { child: Center(
denomLimits( child: Row(
outletName, children: <Widget>[
info, Expanded(
int.parse(amountController! child: TextFormField(
.text style: blackTextStyle.copyWith(
.replaceAll(",", ""))); fontSize: 20,
} fontWeight: bold,
}); color: purpleColor,
),
// _showQris(context); keyboardType:
/*buildGetQr();*/ TextInputType.numberWithOptions(
/*_getQris();*/ signed: true,
// Navigator.pop(context); decimal: true),
}, controller: amountController,
inputFormatters: [
FilteringTextInputFormatter
.digitsOnly,
CurrencyInputFormatter()
],
textInputAction:
TextInputAction.done,
decoration:
InputDecoration.collapsed(
hintText: '50,000',
hintStyle:
blackTextStyle.copyWith(
fontSize: 20,
fontWeight: bold,
color: greyColor,
),
)),
),
],
), ),
), ),
], ),
), SizedBox(height: 30),
], Column(
children: [
Row(
children: [
Expanded(
child: CustomFilledButton(
title: 'lanjut',
subtitle: 'proceed',
onPressed: () {
setState(() {
if (timer != null)
timer?.cancel();
// tapIdle();
if (mounted) {
denomLimits(
outletName,
info,
int.parse(amountController!
.text
.replaceAll(",", "")));
}
});
// _showQris(context);
/*buildGetQr();*/
/*_getQris();*/
// Navigator.pop(context);
},
),
),
],
),
],
),
],
),
), ),
], ],
), ),
), ),
],
), ),
), ),
), ),
),
); );
}); });
}); });
......
...@@ -38,7 +38,6 @@ class _TapCardAktivasiState extends State<TapCardAktivasi> ...@@ -38,7 +38,6 @@ class _TapCardAktivasiState extends State<TapCardAktivasi>
void initState() { void initState() {
super.initState(); super.initState();
aktivasi(); aktivasi();
initLib(); initLib();
} }
......
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