Skip to content

Commit

Permalink
Fix "shadows" on token cards (#109)
Browse files Browse the repository at this point in the history
  • Loading branch information
KingGorrin authored Mar 26, 2024
1 parent a19a88a commit 8d2eab4
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 53 deletions.
111 changes: 66 additions & 45 deletions lib/widgets/modular_widgets/token_widgets/token_card.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:fl_chart/fl_chart.dart';
import 'package:flip_card/flip_card.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_flip_card/flutter_flip_card.dart';
import 'package:marquee_widget/marquee_widget.dart';
import 'package:stacked/stacked.dart';
import 'package:zenon_syrius_wallet_flutter/blocs/blocs.dart';
Expand Down Expand Up @@ -46,6 +46,7 @@ class _TokenCardState extends State<TokenCard> {
final GlobalKey<FormState> _mintAmountKey = GlobalKey();
GlobalKey<FormState> _newOwnerAddressKey = GlobalKey();

final FlipCardController _flipCardController = FlipCardController();
final TextEditingController _beneficiaryAddressController =
TextEditingController();
final TextEditingController _burnAmountController = TextEditingController();
Expand All @@ -71,31 +72,47 @@ class _TokenCardState extends State<TokenCard> {
@override
Widget build(BuildContext context) {
return FlipCard(
direction: FlipDirection.HORIZONTAL,
speed: 500,
flipOnTouch: false,
key: _cardKey,
front: _getFrontOfCard(),
back: _getBackOfCard(),
rotateSide: RotateSide.right,
animationDuration: const Duration(milliseconds: 500),
axis: FlipAxis.vertical,
disableSplashEffect: false,
onTapFlipping: false,
controller: _flipCardController,
frontWidget: _getFrontOfCard(),
backWidget: _getBackOfCard(),
);
}

Future<void> _flipCard() async {
await _flipCardController.flipcard();
}

Widget _getBackOfCard() {
return StreamBuilder<Map<String, AccountInfo>?>(
stream: sl.get<BalanceBloc>().stream,
builder: (_, snapshot) {
if (snapshot.hasError) {
return SyriusErrorWidget(snapshot.error!);
}
if (snapshot.connectionState == ConnectionState.active) {
if (snapshot.hasData) {
return _getBackVersionOfCard(snapshot.data!);
}
return const SyriusLoadingWidget();
}
return const SyriusLoadingWidget();
},
);
return Container(
padding: const EdgeInsets.symmetric(
horizontal: 20.0,
vertical: 10.0,
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0),
color: Theme.of(context).colorScheme.primaryContainer,
),
child: StreamBuilder<Map<String, AccountInfo>?>(
stream: sl.get<BalanceBloc>().stream,
builder: (_, snapshot) {
if (snapshot.hasError) {
return SyriusErrorWidget(snapshot.error!);
}
if (snapshot.connectionState == ConnectionState.active) {
if (snapshot.hasData) {
return _getBackVersionOfCard(snapshot.data!);
}
return const SyriusLoadingWidget();
}
return const SyriusLoadingWidget();
},
));
}

Container _getFrontOfCard() {
Expand Down Expand Up @@ -188,7 +205,7 @@ class _TokenCardState extends State<TokenCard> {
onPressed: kDefaultAddressList
.contains(widget.token.owner.toString())
? () {
_cardKey.currentState!.toggleCard();
_flipCard();
_backOfCardVersion =
TokenCardBackVersion.mint;
sl
Expand All @@ -207,7 +224,7 @@ class _TokenCardState extends State<TokenCard> {
widget.token.owner.toString(),
)
? () {
_cardKey.currentState!.toggleCard();
_flipCard();
_backOfCardVersion =
TokenCardBackVersion.burn;
sl
Expand Down Expand Up @@ -412,7 +429,7 @@ class _TokenCardState extends State<TokenCard> {
StepperButton(
text: 'Go back',
onPressed: () {
_cardKey.currentState!.toggleCard();
_flipCard();
},
),
],
Expand Down Expand Up @@ -450,7 +467,8 @@ class _TokenCardState extends State<TokenCard> {
);
}

Future<void> _sendBurnSuccessfulNotification(AccountBlockTemplate event) async {
Future<void> _sendBurnSuccessfulNotification(
AccountBlockTemplate event) async {
await sl.get<NotificationsBloc>().addNotification(
WalletNotification(
title: 'Successfully burned ${event.amount.addDecimals(
Expand Down Expand Up @@ -571,7 +589,7 @@ class _TokenCardState extends State<TokenCard> {
StepperButton(
text: 'Go back',
onPressed: () {
_cardKey.currentState!.toggleCard();
_flipCard();
},
),
],
Expand All @@ -588,7 +606,6 @@ class _TokenCardState extends State<TokenCard> {
model.stream.listen((event) {
setState(() {
_beneficiaryAddressKey.currentState!.reset();
_beneficiaryAddressController.clear();
_mintAmountKey.currentState!.reset();
_mintAmountController.clear();
});
Expand All @@ -608,7 +625,8 @@ class _TokenCardState extends State<TokenCard> {
);
}

Future<void> _sendMintSuccessfulNotification(AccountBlockTemplate event) async {
Future<void> _sendMintSuccessfulNotification(
AccountBlockTemplate event) async {
await sl.get<NotificationsBloc>().addNotification(
WalletNotification(
title: 'Successfully minted ${event.amount.addDecimals(
Expand All @@ -627,29 +645,32 @@ class _TokenCardState extends State<TokenCard> {
Widget _getMintButton(MintTokenBloc model) {
return LoadingButton.stepper(
text: 'Mint',
onPressed: _mintMaxAmount > BigInt.zero &&
_mintAmountController.text.isNotEmpty &&
InputValidators.correctValue(_mintAmountController.text,
_mintMaxAmount, widget.token.decimals, BigInt.zero) ==
null
? () {
_mintButtonKey.currentState!.animateForward();
model.mintToken(
widget.token,
_mintAmountController.text
.extractDecimals(widget.token.decimals),
Address.parse(_beneficiaryAddressController.text),
);
}
: null,
onPressed:
InputValidators.checkAddress(_beneficiaryAddressController.text) ==
null &&
_mintMaxAmount > BigInt.zero &&
_mintAmountController.text.isNotEmpty &&
InputValidators.correctValue(_mintAmountController.text,
_mintMaxAmount, widget.token.decimals, BigInt.zero) ==
null
? () {
_mintButtonKey.currentState!.animateForward();
model.mintToken(
widget.token,
_mintAmountController.text
.extractDecimals(widget.token.decimals),
Address.parse(_beneficiaryAddressController.text),
);
}
: null,
key: _mintButtonKey,
);
}

void _onTransferOwnershipIconPressed() {
setState(() {
_backOfCardVersion = TokenCardBackVersion.transferOwnership;
_cardKey.currentState!.toggleCard();
_flipCard();
});
}

Expand Down Expand Up @@ -687,7 +708,7 @@ class _TokenCardState extends State<TokenCard> {
StepperButton(
text: 'Go back',
onPressed: () {
_cardKey.currentState!.toggleCard();
_flipCard();
},
),
],
Expand Down
15 changes: 9 additions & 6 deletions lib/widgets/reusable_widgets/stepper_utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,15 @@ class StepperUtils {
static Widget getBalanceWidget(Token token, AccountInfo accountInfo) {
return Row(
children: [
Padding(
padding: const EdgeInsets.only(left: 20.0, top: 10.0, bottom: 10.0),
child: AvailableBalance(
token,
accountInfo,
),
Expanded(
child:
Padding(
padding: const EdgeInsets.only(left: 20.0, top: 10.0, bottom: 10.0),
child: AvailableBalance(
token,
accountInfo,
),
),
),
],
);
Expand Down
8 changes: 8 additions & 0 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,14 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
flutter_flip_card:
dependency: "direct main"
description:
name: flutter_flip_card
sha256: "1de81921a3bcc40f2eae77db18bddc0ce6bbea6be30274ffa83e8c06fe2b1936"
url: "https://pub.dev"
source: hosted
version: "0.0.5"
flutter_lints:
dependency: "direct dev"
description:
Expand Down
5 changes: 3 additions & 2 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@ dependencies:
expandable: ^5.0.1
marquee_widget: ^1.2.0
layout: ^1.0.2
flutter_staggered_grid_view: ^0.4.0
flutter_staggered_grid_view: ^0.4.1
flip_card: ^0.7.0
flutter_flip_card: ^0.0.5
auto_size_text: ^3.0.0
window_manager: ^0.3.5
stacked: ^3.4.1
Expand All @@ -31,7 +32,7 @@ dependencies:
intl: ^0.18.0
package_info_plus: ^4.1.0
device_info_plus: ^9.0.3
infinite_scroll_pagination: ^3.1.0
infinite_scroll_pagination: ^3.2.0
share_plus: ^7.1.0
page_transition: ^2.0.4
file_selector: ^1.0.0
Expand Down

0 comments on commit 8d2eab4

Please sign in to comment.