Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
Dolan SelfService Topup
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Faizol
Dolan SelfService Topup
Commits
252af805
Commit
252af805
authored
Aug 15, 2023
by
Izol
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added reff_no and transaction id
parent
8209f3f3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
52 additions
and
26 deletions
+52
-26
MainActivity.kt
...rc/main/kotlin/com/example/self_service_3/MainActivity.kt
+8
-3
reader_flutter.dart
lib/reader/reader_flutter.dart
+4
-0
home_page.dart
lib/ui/pages/home_page.dart
+40
-23
No files found.
android/app/src/main/kotlin/com/example/self_service_3/MainActivity.kt
View file @
252af805
...
@@ -32,6 +32,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
...
@@ -32,6 +32,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
private
val
coroutineScope
=
CoroutineScope
(
Dispatchers
.
IO
)
private
val
coroutineScope
=
CoroutineScope
(
Dispatchers
.
IO
)
override
fun
onMethodCall
(
call
:
MethodCall
,
result
:
MethodChannel
.
Result
)
{
override
fun
onMethodCall
(
call
:
MethodCall
,
result
:
MethodChannel
.
Result
)
{
when
(
call
.
method
)
{
when
(
call
.
method
)
{
"init_library"
->
{
"init_library"
->
{
this
.
result
=
result
this
.
result
=
result
...
@@ -94,6 +95,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
...
@@ -94,6 +95,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
this
.
result
=
result
this
.
result
=
result
val
sdf
=
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
,
Locale
.
US
)
val
sdf
=
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
,
Locale
.
US
)
val
timeNow
=
Date
()
val
timeNow
=
Date
()
var
reffNoInquiry
=
"TOP_SS${Date().time}"
val
outletName
=
call
.
argument
<
String
>(
"outlet_name"
)
val
outletName
=
call
.
argument
<
String
>(
"outlet_name"
)
val
prevBalance
=
call
.
argument
<
String
>(
"prev_balance"
)
val
prevBalance
=
call
.
argument
<
String
>(
"prev_balance"
)
val
cardNumber
=
call
.
argument
<
String
>(
"card_number"
)
val
cardNumber
=
call
.
argument
<
String
>(
"card_number"
)
...
@@ -106,7 +108,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
...
@@ -106,7 +108,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
"M"
,
"M"
,
cardNumber
!!
,
cardNumber
!!
,
amount
!!
,
amount
!!
,
"TOPUP"
+
System
.
currentTimeMillis
()
,
reffNoInquiry
!!
,
prevBalance
!!
,
prevBalance
!!
,
deviceTimestamp
=
sdf
.
format
(
timeNow
),
deviceTimestamp
=
sdf
.
format
(
timeNow
),
requestTimestamp
=
sdf
.
format
(
timeNow
),
requestTimestamp
=
sdf
.
format
(
timeNow
),
...
@@ -114,6 +116,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
...
@@ -114,6 +116,7 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
outletId
!!
,
outletId
!!
,
persoReff
!!
,
persoReff
!!
,
)
)
print
(
"inquiry response : $topupInquiryResponse"
)
result
.
success
(
Gson
().
toJson
(
topupInquiryResponse
))
result
.
success
(
Gson
().
toJson
(
topupInquiryResponse
))
}
}
"topup_confirm"
->
{
"topup_confirm"
->
{
...
@@ -126,6 +129,8 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
...
@@ -126,6 +129,8 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
val
paymentProvider
=
call
.
argument
<
String
>(
"payment_provider"
)
val
paymentProvider
=
call
.
argument
<
String
>(
"payment_provider"
)
val
tid
=
call
.
argument
<
String
>(
"tid"
)
val
tid
=
call
.
argument
<
String
>(
"tid"
)
val
paymentNotes
=
call
.
argument
<
String
>(
"payment_notes"
)
val
paymentNotes
=
call
.
argument
<
String
>(
"payment_notes"
)
val
reffNo
=
call
.
argument
<
String
>(
"reff_no"
)
val
trxId
=
call
.
argument
<
String
>(
"trx_id"
)
val
topupInquiryResponse
=
_mifareTicketing
?.
topupConfirm
(
val
topupInquiryResponse
=
_mifareTicketing
?.
topupConfirm
(
cardNumber
!!
,
cardNumber
!!
,
...
@@ -134,8 +139,8 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
...
@@ -134,8 +139,8 @@ class MainActivity : MethodChannel.MethodCallHandler, FlutterActivity(), MifareT
approvalCode
!!
,
approvalCode
!!
,
paymentMethod
!!
,
paymentMethod
!!
,
paymentProvider
!!
,
paymentProvider
!!
,
"TOP_SS${Date().time}"
,
trxId
!!
,
"TOP_SS${Date().time}"
,
reffNo
!!
,
tid
!!
,
tid
!!
,
paymentNotes
!!
,
paymentNotes
!!
,
)
)
...
...
lib/reader/reader_flutter.dart
View file @
252af805
...
@@ -104,6 +104,8 @@ class StartService {
...
@@ -104,6 +104,8 @@ class StartService {
String
paymentMethod
,
String
paymentMethod
,
String
paymentProvider
,
String
paymentProvider
,
String
paymentNotes
,
String
paymentNotes
,
String
reffNo
,
String
trxId
)
async
{
)
async
{
var
result
;
var
result
;
try
{
try
{
...
@@ -116,6 +118,8 @@ class StartService {
...
@@ -116,6 +118,8 @@ class StartService {
'payment_method'
:
paymentMethod
,
'payment_method'
:
paymentMethod
,
'payment_provider'
:
paymentProvider
,
'payment_provider'
:
paymentProvider
,
'payment_notes'
:
paymentNotes
,
'payment_notes'
:
paymentNotes
,
'reff_no'
:
reffNo
,
'trx_id'
:
trxId
});
});
}
catch
(
error
)
{
}
catch
(
error
)
{
result
=
error
.
toString
();
result
=
error
.
toString
();
...
...
lib/ui/pages/home_page.dart
View file @
252af805
...
@@ -113,6 +113,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -113,6 +113,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
name
,
name
,
lastBalance
,
lastBalance
,
approvalCode
,
approvalCode
,
trxId
,
amount
,
amount
,
report
,
report
,
infoM
,
infoM
,
...
@@ -127,7 +128,8 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -127,7 +128,8 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
var
countMax
=
0
;
var
countMax
=
0
;
String
?
prevBalance
,
maskedText
,
getRegDb
;
String
?
prevBalance
,
maskedText
,
getRegDb
;
String
subPhone
=
""
;
String
subPhone
=
""
;
var
trxId
=
""
;
late
String
globalTrxIdQris
;
var
message
=
"Silakan Letakkan Wristband Anda Di Reader"
;
var
message
=
"Silakan Letakkan Wristband Anda Di Reader"
;
var
success
=
"Tempel dan tahan wristband anda di reader"
;
var
success
=
"Tempel dan tahan wristband anda di reader"
;
...
@@ -346,17 +348,17 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -346,17 +348,17 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
});
});
}
}
Future
<
Map
<
String
,
dynamic
>?>
_getQris
()
async
{
Future
<
Map
<
String
,
dynamic
>?>
_getQris
(
String
trxIdQris
)
async
{
Map
<
String
,
dynamic
>?
result
;
Map
<
String
,
dynamic
>?
result
;
var
body
=
_getPayLoadQrisCreate
();
var
body
=
_getPayLoadQrisCreate
(
trxIdQris
);
print
(
"payload
${body}
"
);
print
(
"payload
${body}
"
);
try
{
try
{
Map
<
String
,
dynamic
>
response
=
await
ServiceApi
.
requestQris
(
Map
<
String
,
dynamic
>
response
=
await
ServiceApi
.
requestQris
(
body
,
PreferencesHelper
.
getString
(
"mid"
));
body
,
PreferencesHelper
.
getString
(
"mid"
));
if
(
response
[
'response'
][
'code'
].
toString
()
==
"200"
)
{
if
(
response
[
'response'
][
'code'
].
toString
()
==
"200"
)
{
print
(
print
(
"message qris succes :
${response['response']['message']}
"
);
"message qris succes :
${response['response']['message']}
"
,
trxIdQris
=
response
[
'data'
][
'trx_id'
];
);
print
(
"trx_id dalam respons:
$trxIdQris
"
);
result
=
response
;
result
=
response
;
}
else
{
}
else
{
print
(
"message qris gagal :
${response['response']['message']}
"
);
print
(
"message qris gagal :
${response['response']['message']}
"
);
...
@@ -404,7 +406,8 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -404,7 +406,8 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
currentDate
.
isBefore
(
cardExpDate
))
{
currentDate
.
isBefore
(
cardExpDate
))
{
print
(
"ini response sukses :
${infoInquiry['response']['message']}
"
);
print
(
"ini response sukses :
${infoInquiry['response']['message']}
"
);
approvalCode
=
infoInquiry
[
"data"
][
"approval_code"
].
toString
();
approvalCode
=
infoInquiry
[
"data"
][
"approval_code"
].
toString
();
_showQris
(
context
);
trxId
=
infoInquiry
[
"data"
][
"reff_no"
].
toString
();
_showQris
(
context
,
trxId
);
}
else
if
(
currentDate
.
isAfter
(
cardExpDate
))
{
}
else
if
(
currentDate
.
isAfter
(
cardExpDate
))
{
AwesomeDialog
(
AwesomeDialog
(
context:
context
,
context:
context
,
...
@@ -450,7 +453,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -450,7 +453,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
}
}
}
}
Future
<
String
>
topUpBalance
(
String
approvalCode
)
async
{
Future
<
String
>
topUpBalance
(
String
approvalCode
,
String
trxIdQris
)
async
{
var
info
,
var
info
,
infoMap
,
infoMap
,
lastBalance
,
lastBalance
,
...
@@ -466,9 +469,6 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -466,9 +469,6 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
print
(
"amount :
$amount
"
);
print
(
"amount :
$amount
"
);
info
=
await
StartService
.
topupBalanceCard
(
cardNumber
,
int
.
parse
(
amount
));
info
=
await
StartService
.
topupBalanceCard
(
cardNumber
,
int
.
parse
(
amount
));
// String cleanAmount = amount.replaceAll(RegExp(r'[^0-9.]'), ''); // Hapus karakter non-numerik kecuali titik
// int parsedAmount = int.parse(cleanAmount);
// info = await StartService.topupBalanceCard(cardNumber, parsedAmount);
if
(
info
==
null
)
{
if
(
info
==
null
)
{
tapBalance
();
tapBalance
();
return
""
;
return
""
;
...
@@ -478,18 +478,18 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -478,18 +478,18 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
lastBalance
=
infoMap
[
'balance'
].
toString
();
lastBalance
=
infoMap
[
'balance'
].
toString
();
samReport
=
infoMap
[
'report'
].
toString
();
samReport
=
infoMap
[
'report'
].
toString
();
}
else
{
}
else
{
// Handle ketika info tidak mengandung data JSON
tapBalance
();
tapBalance
();
return
""
;
return
""
;
}
}
paymentMethod
=
'Qris'
;
paymentMethod
=
'Qris'
;
var
infoPaymentNotes
=
jsonDecode
(
info
);
var
infoPaymentNotes
=
jsonDecode
(
info
);
reffNo
=
trxId
.
toString
();
var
reffNo
=
trxId
.
toString
();
paymentProvider
=
""
;
paymentProvider
=
""
;
paymentNotes
=
"reffNo:
$reffNo
\n
provider:
$paymentProvider
"
;
paymentNotes
=
"reffNo:
$reffNo
\n
provider:
$paymentProvider
"
;
// paymentNotes = "reffNo: $reffNo\nprovider: $paymentNotes";
// paymentNotes = "reffNo: $reffNo\nprovider: $paymentNotes";
print
(
"ini adalag test hasil payment notes:
$paymentNotes
"
);
print
(
"ini adalag test hasil payment notes:
$paymentNotes
"
);
print
(
"ini adalah transaction id:
$trxIdQris
"
);
tid
=
PreferencesHelper
.
getString
(
'outletname'
);
tid
=
PreferencesHelper
.
getString
(
'outletname'
);
tid
=
tid
.
substring
(
tid
.
length
-
4
);
tid
=
tid
.
substring
(
tid
.
length
-
4
);
...
@@ -504,6 +504,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -504,6 +504,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
String
sca
=
String
sca
=
PreferencesHelper
.
getString
(
"multioutletservicechargeamount"
);
PreferencesHelper
.
getString
(
"multioutletservicechargeamount"
);
String
sc
=
PreferencesHelper
.
getString
(
"multioutletservicecharge"
);
String
sc
=
PreferencesHelper
.
getString
(
"multioutletservicecharge"
);
String
trxIdQrisFromStatus
=
globalTrxIdQris
;
// String metodeBayar = PreferencesHelper.getString("provider");
// String metodeBayar = PreferencesHelper.getString("provider");
// String status = "Berhasil";
// String status = "Berhasil";
if
(
int
.
parse
(
lastBalance
)
>
int
.
parse
(
prevBalance
!))
{
if
(
int
.
parse
(
lastBalance
)
>
int
.
parse
(
prevBalance
!))
{
...
@@ -516,8 +517,14 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -516,8 +517,14 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
approvalCode
,
approvalCode
,
paymentMethod
,
paymentMethod
,
paymentProvider
,
paymentProvider
,
paymentNotes
);
paymentNotes
,
reffNo
,
trxIdQrisFromStatus
,
);
print
(
'topUpConfirm result:
$result
'
);
print
(
'topUpConfirm result:
$result
'
);
print
(
'ini trxIdQrisFromStatus topup confirm:
$trxIdQrisFromStatus
'
);
print
(
'ini reffNo topup confirm:
$reffNo
'
);
String
readerDate
,
String
readerDate
,
gateId
,
gateId
,
...
@@ -604,7 +611,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -604,7 +611,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
isShowingDialog
=
true
;
isShowingDialog
=
true
;
trxId
=
""
;
trxId
=
""
;
reffNo
=
""
;
reffNo
=
""
;
dataQris
=
=
null
;
dataQris
=
null
;
isShowingDialog
=
true
;
isShowingDialog
=
true
;
amount
=
""
;
amount
=
""
;
_showTap
();
_showTap
();
...
@@ -647,7 +654,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -647,7 +654,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
).
show
().
then
((
value
)
{
).
show
().
then
((
value
)
{
});
});
isShowingDialog
=
true
;
isShowingDialog
=
true
;
dataQris
=
=
null
;
dataQris
=
null
;
amount
=
""
;
amount
=
""
;
StartService
.
print
(
StartService
.
print
(
prevInfoCard
,
prevInfoCard
,
...
@@ -674,6 +681,10 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -674,6 +681,10 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
Map
<
String
,
dynamic
>
response
=
Map
<
String
,
dynamic
>
response
=
await
ServiceApi
.
statusQris
(
body
,
PreferencesHelper
.
getString
(
"mid"
));
await
ServiceApi
.
statusQris
(
body
,
PreferencesHelper
.
getString
(
"mid"
));
if
(
response
[
'response'
][
'code'
].
toString
()
==
"200"
)
{
if
(
response
[
'response'
][
'code'
].
toString
()
==
"200"
)
{
String
trxIdQris
=
response
[
'data'
][
'trx_id'
].
toString
();
print
(
"trxIdQris Di Status
$trxIdQris
"
);
globalTrxIdQris
=
trxIdQris
;
print
(
"trxIdQris sudah tersimpan:
$globalTrxIdQris
"
);
String
status
=
response
[
'data'
][
'status'
].
toString
().
toLowerCase
();
String
status
=
response
[
'data'
][
'status'
].
toString
().
toLowerCase
();
if
(
status
.
contains
(
'paid'
)
||
if
(
status
.
contains
(
'paid'
)
||
status
.
contains
(
'success'
)
||
status
.
contains
(
'success'
)
||
...
@@ -721,7 +732,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -721,7 +732,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
String
nilaiTap
=
PreferencesHelper
.
getString
(
'maxTap'
);
String
nilaiTap
=
PreferencesHelper
.
getString
(
'maxTap'
);
String
newCardNumber
=
infoMap
[
"cardNumber"
];
String
newCardNumber
=
infoMap
[
"cardNumber"
];
if
(
newCardNumber
==
cardNumber
)
{
if
(
newCardNumber
==
cardNumber
)
{
topUpBalance
(
approvalCode
);
topUpBalance
(
approvalCode
,
trxId
);
}
else
{
}
else
{
AwesomeDialog
(
AwesomeDialog
(
context:
context
,
context:
context
,
...
@@ -951,7 +962,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -951,7 +962,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
});
});
}
}
String
_getPayLoadQrisCreate
()
{
String
_getPayLoadQrisCreate
(
String
trxIdQris
)
{
String
sc
=
PreferencesHelper
.
getString
(
"multioutletservicecharge"
);
String
sc
=
PreferencesHelper
.
getString
(
"multioutletservicecharge"
);
String
sca
=
PreferencesHelper
.
getString
(
"multioutletservicechargeamount"
);
String
sca
=
PreferencesHelper
.
getString
(
"multioutletservicechargeamount"
);
String
url
=
PreferencesHelper
.
getString
(
kUrlCorePayment
);
String
url
=
PreferencesHelper
.
getString
(
kUrlCorePayment
);
...
@@ -960,9 +971,8 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -960,9 +971,8 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
String
tid
=
PreferencesHelper
.
getString
(
'outletname'
);
String
tid
=
PreferencesHelper
.
getString
(
'outletname'
);
tid
=
tid
.
substring
(
tid
.
length
-
4
);
tid
=
tid
.
substring
(
tid
.
length
-
4
);
trxId
=
DateTime
.
now
().
millisecondsSinceEpoch
.
toString
();
var
request
=
GeneralPaymentRequest
(
var
request
=
GeneralPaymentRequest
(
trxId
.
toString
()
,
trxId
Qris
,
(
int
.
parse
(
amount
)
+
int
.
parse
(
sca
)
+
int
.
parse
(
sc
)).
toString
(),
(
int
.
parse
(
amount
)
+
int
.
parse
(
sca
)
+
int
.
parse
(
sc
)).
toString
(),
"get-qr"
,
"get-qr"
,
PreferencesHelper
.
getString
(
'provider'
),
PreferencesHelper
.
getString
(
'provider'
),
...
@@ -970,7 +980,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -970,7 +980,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
tid
,
tid
,
callbackUrl
,
callbackUrl
,
PreferencesHelper
.
getString
(
'token'
),
PreferencesHelper
.
getString
(
'token'
),
trxId
.
toString
()
,
trxId
Qris
,
""
,
""
,
callbackUrl
);
callbackUrl
);
return
jsonEncode
(
request
);
return
jsonEncode
(
request
);
...
@@ -2116,7 +2126,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -2116,7 +2126,7 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
});
});
}
}
void
_showQris
(
BuildContext
context
)
async
{
void
_showQris
(
BuildContext
context
,
String
trxId
)
async
{
isProcessCheck
=
false
;
isProcessCheck
=
false
;
isProcessGet
=
false
;
isProcessGet
=
false
;
await
showDialog
(
await
showDialog
(
...
@@ -2124,13 +2134,20 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
...
@@ -2124,13 +2134,20 @@ class _HomePageState extends State<HomePage> implements AlertDialogCallback {
context:
context
,
context:
context
,
builder:
(
context
)
{
builder:
(
context
)
{
return
StatefulBuilder
(
builder:
(
context
,
StateSetter
setState
)
{
return
StatefulBuilder
(
builder:
(
context
,
StateSetter
setState
)
{
Future
.
delayed
(
Duration
(
seconds:
1
),
()
{
print
(
"is process get
$isProcessGet
"
);
print
(
"is process get
$isProcessGet
"
);
if
(!
isProcessGet
)
{
if
(!
isProcessGet
)
{
isProcessGet
=
true
;
isProcessGet
=
true
;
_getQris
().
then
((
_qris
)
{
setState
(()
{
dataQris
=
null
;
});
_getQris
(
trxId
).
then
((
_qris
)
{
setState
(()
{
dataQris
=
_qris
;
dataQris
=
_qris
;
});
});
});
}
}
});
return
Container
(
return
Container
(
padding:
padding:
const
EdgeInsets
.
symmetric
(
horizontal:
150
,
vertical:
30
),
const
EdgeInsets
.
symmetric
(
horizontal:
150
,
vertical:
30
),
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment