mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2025-03-21 22:58:49 +00:00
add fiat enums and coins -> fiats
This commit is contained in:
parent
2d6447eedd
commit
863c59c25d
3 changed files with 43 additions and 28 deletions
|
@ -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,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
15
lib/utilities/enums/fiat_enum.dart
Normal file
15
lib/utilities/enums/fiat_enum.dart
Normal 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 "-";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue