From af460b54a623434f7ea9e3b74353a9653f27e83e Mon Sep 17 00:00:00 2001 From: julian Date: Thu, 30 Mar 2023 10:40:35 -0600 Subject: [PATCH] token icon based on changenow currency image url --- lib/widgets/icon_widgets/eth_token_icon.dart | 51 ++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 lib/widgets/icon_widgets/eth_token_icon.dart diff --git a/lib/widgets/icon_widgets/eth_token_icon.dart b/lib/widgets/icon_widgets/eth_token_icon.dart new file mode 100644 index 000000000..2b94d1554 --- /dev/null +++ b/lib/widgets/icon_widgets/eth_token_icon.dart @@ -0,0 +1,51 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:isar/isar.dart'; +import 'package:stackwallet/models/isar/exchange_cache/currency.dart'; +import 'package:stackwallet/services/exchange/exchange_data_loading_service.dart'; +import 'package:stackwallet/utilities/assets.dart'; +import 'package:stackwallet/utilities/enums/coin_enum.dart'; + +class EthTokenIcon extends StatefulWidget { + const EthTokenIcon({ + Key? key, + required this.contractAddress, + }) : super(key: key); + + final String contractAddress; + + @override + State createState() => _EthTokenIconState(); +} + +class _EthTokenIconState extends State { + late final String? imageUrl; + + @override + void initState() { + imageUrl = ExchangeDataLoadingService.instance.isar.currencies + .where() + .filter() + .tokenContractEqualTo(widget.contractAddress, caseSensitive: false) + .findFirstSync() + ?.image; + super.initState(); + } + + @override + Widget build(BuildContext context) { + if (imageUrl == null || imageUrl!.isEmpty) { + return SvgPicture.asset( + Assets.svg.iconFor(coin: Coin.ethereum), + width: 22, + height: 22, + ); + } else { + return SvgPicture.network( + imageUrl!, + width: 22, + height: 22, + ); + } + } +}