add fiat enums and coins -> fiats

This commit is contained in:
sneurlax 2023-01-11 12:03:50 -06:00
parent 2d6447eedd
commit 863c59c25d
3 changed files with 43 additions and 28 deletions

View file

@ -362,7 +362,7 @@ class _BuyFormState extends ConsumerState<BuyForm> {
.extension<StackColors>()! .extension<StackColors>()!
.background, .background,
child: FiatSelectionView( child: FiatSelectionView(
coins: tickers, fiats: tickers,
), ),
), ),
), ),
@ -377,7 +377,7 @@ class _BuyFormState extends ConsumerState<BuyForm> {
: await Navigator.of(context).push( : await Navigator.of(context).push(
MaterialPageRoute<dynamic>( MaterialPageRoute<dynamic>(
builder: (_) => FiatSelectionView( builder: (_) => FiatSelectionView(
coins: tickers, fiats: tickers,
), ),
), ),
); );

View file

@ -3,7 +3,7 @@ import 'package:flutter_svg/svg.dart';
import 'package:stackwallet/models/buy/response_objects/fiat.dart'; import 'package:stackwallet/models/buy/response_objects/fiat.dart';
import 'package:stackwallet/utilities/assets.dart'; import 'package:stackwallet/utilities/assets.dart';
import 'package:stackwallet/utilities/constants.dart'; import 'package:stackwallet/utilities/constants.dart';
import 'package:stackwallet/utilities/enums/coin_enum.dart'; import 'package:stackwallet/utilities/enums/fiat_enum.dart';
import 'package:stackwallet/utilities/text_styles.dart'; import 'package:stackwallet/utilities/text_styles.dart';
import 'package:stackwallet/utilities/theme/stack_colors.dart'; import 'package:stackwallet/utilities/theme/stack_colors.dart';
import 'package:stackwallet/utilities/util.dart'; import 'package:stackwallet/utilities/util.dart';
@ -19,10 +19,10 @@ import 'package:stackwallet/widgets/textfield_icon_button.dart';
class FiatSelectionView extends StatefulWidget { class FiatSelectionView extends StatefulWidget {
const FiatSelectionView({ const FiatSelectionView({
Key? key, Key? key,
required this.coins, required this.fiats,
}) : super(key: key); }) : super(key: key);
final List<Fiat> coins; final List<Fiat> fiats;
@override @override
State<FiatSelectionView> createState() => _FiatSelectionViewState(); State<FiatSelectionView> createState() => _FiatSelectionViewState();
@ -32,13 +32,13 @@ class _FiatSelectionViewState extends State<FiatSelectionView> {
late TextEditingController _searchController; late TextEditingController _searchController;
final _searchFocusNode = FocusNode(); final _searchFocusNode = FocusNode();
late final List<Fiat> coins; late final List<Fiat> fiats;
late List<Fiat> _coins; late List<Fiat> _fiats;
void filter(String text) { void filter(String text) {
setState(() { setState(() {
_coins = [ _fiats = [
...coins.where((e) => ...fiats.where((e) =>
e.name.toLowerCase().contains(text.toLowerCase()) || e.name.toLowerCase().contains(text.toLowerCase()) ||
e.ticker.toLowerCase().contains(text.toLowerCase())) e.ticker.toLowerCase().contains(text.toLowerCase()))
]; ];
@ -49,19 +49,19 @@ class _FiatSelectionViewState extends State<FiatSelectionView> {
void initState() { void initState() {
_searchController = TextEditingController(); _searchController = TextEditingController();
coins = [...widget.coins]; fiats = [...widget.fiats];
coins.sort( fiats.sort(
(a, b) => a.ticker.toLowerCase().compareTo(b.ticker.toLowerCase())); (a, b) => a.ticker.toLowerCase().compareTo(b.ticker.toLowerCase()));
for (Coin coin in Coin.values.reversed) { for (Fiats fiat in Fiats.values.reversed) {
int index = coins.indexWhere((element) => int index = fiats.indexWhere((element) =>
element.ticker.toLowerCase() == coin.ticker.toLowerCase()); element.ticker.toLowerCase() == fiat.ticker.toLowerCase());
if (index > 0) { if (index > 0) {
final currency = coins.removeAt(index); final currency = fiats.removeAt(index);
coins.insert(0, currency); fiats.insert(0, currency);
} }
} }
_coins = [...coins]; _fiats = [...fiats];
super.initState(); super.initState();
} }
@ -174,7 +174,7 @@ class _FiatSelectionViewState extends State<FiatSelectionView> {
height: 10, height: 10,
), ),
Text( Text(
"Popular coins", "Popular fiats",
style: STextStyles.smallMed12(context), style: STextStyles.smallMed12(context),
), ),
const SizedBox( const SizedBox(
@ -182,10 +182,10 @@ class _FiatSelectionViewState extends State<FiatSelectionView> {
), ),
Flexible( Flexible(
child: Builder(builder: (context) { child: Builder(builder: (context) {
final items = _coins final items = _fiats
.where((e) => Coin.values .where((e) => Fiats.values
.where((coin) => .where((fiat) =>
coin.ticker.toLowerCase() == e.ticker.toLowerCase()) fiat.ticker.toLowerCase() == e.ticker.toLowerCase())
.isNotEmpty) .isNotEmpty)
.toList(growable: false); .toList(growable: false);
@ -256,7 +256,7 @@ class _FiatSelectionViewState extends State<FiatSelectionView> {
height: 20, height: 20,
), ),
Text( Text(
"All coins", "All fiats",
style: STextStyles.smallMed12(context), style: STextStyles.smallMed12(context),
), ),
const SizedBox( const SizedBox(
@ -268,13 +268,13 @@ class _FiatSelectionViewState extends State<FiatSelectionView> {
child: ListView.builder( child: ListView.builder(
shrinkWrap: true, shrinkWrap: true,
primary: isDesktop ? false : null, primary: isDesktop ? false : null,
itemCount: _coins.length, itemCount: _fiats.length,
itemBuilder: (builderContext, index) { itemBuilder: (builderContext, index) {
return Padding( return Padding(
padding: const EdgeInsets.symmetric(vertical: 4), padding: const EdgeInsets.symmetric(vertical: 4),
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
Navigator.of(context).pop(_coins[index]); Navigator.of(context).pop(_fiats[index]);
}, },
child: RoundedWhiteContainer( child: RoundedWhiteContainer(
child: Row( child: Row(
@ -283,7 +283,7 @@ class _FiatSelectionViewState extends State<FiatSelectionView> {
width: 24, width: 24,
height: 24, height: 24,
child: SvgPicture.network( child: SvgPicture.network(
_coins[index].image, _fiats[index].image,
width: 24, width: 24,
height: 24, height: 24,
placeholderBuilder: (_) => placeholderBuilder: (_) =>
@ -298,14 +298,14 @@ class _FiatSelectionViewState extends State<FiatSelectionView> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
_coins[index].name, _fiats[index].name,
style: STextStyles.largeMedium14(context), style: STextStyles.largeMedium14(context),
), ),
const SizedBox( const SizedBox(
height: 2, height: 2,
), ),
Text( Text(
_coins[index].ticker.toUpperCase(), _fiats[index].ticker.toUpperCase(),
style: STextStyles.smallMed12(context) style: STextStyles.smallMed12(context)
.copyWith( .copyWith(
color: Theme.of(context) color: Theme.of(context)

View file

@ -0,0 +1,15 @@
enum Fiats {
USD
// etc
}
extension FiatExt on Fiats {
String get ticker {
switch (this) {
case Fiats.USD:
return "USD";
default:
return "-";
}
}
}