dev
dart 109 lines 3.67 KB
Raw
1 import 'package:cake_wallet/generated/i18n.dart';
2 import 'package:cake_wallet/src/screens/base_page.dart';
3 import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.dart';
4 import 'package:cake_wallet/view_model/settings/trocador_providers_view_model.dart';
5 import 'package:flutter/material.dart';
6 import 'package:flutter_mobx/flutter_mobx.dart';
7
8 class TrocadorProvidersPage extends BasePage {
9 TrocadorProvidersPage(this.trocadorProvidersViewModel);
10
11 @override
12 String get title => 'Trocador Providers';
13
14 final TrocadorProvidersViewModel trocadorProvidersViewModel;
15
16 @override
17 Widget body(BuildContext context) {
18 return Container(
19 padding: EdgeInsets.only(top: 10),
20 child: Observer(
21 builder: (_) {
22 if (trocadorProvidersViewModel.isLoading) {
23 return Center(child: CircularProgressIndicator());
24 }
25 var providerStates = trocadorProvidersViewModel.providerStates;
26 final providerRatings = trocadorProvidersViewModel.providerRatings;
27 if (providerStates.isEmpty) {
28 return Center(child: Text(S.of(context).no_providers_available));
29 }
30 return ListView.builder(
31 itemCount: providerStates.length,
32 itemBuilder: (_, index) {
33 final providerName = providerStates.keys.elementAt(index);
34 final providerEnabled = providerStates[providerName] ?? true;
35 return SettingsSwitcherCell(
36 title: providerName,
37 value: providerEnabled,
38 leading: Badge(
39 title: 'KYC \nRATING',
40 subTitle: providerRatings[providerName] ?? 'N/A',
41 textColor: Theme.of(context).colorScheme.onPrimary,
42 backgroundColor: Theme.of(context).colorScheme.primary,
43 ),
44 onValueChange: (BuildContext _, value) =>
45 trocadorProvidersViewModel.toggleProviderState(providerName),
46 );
47 },
48 );
49 },
50 ),
51 );
52 }
53 }
54
55 class Badge extends StatelessWidget {
56 Badge(
57 {required this.textColor,
58 required this.backgroundColor,
59 required this.title,
60 required this.subTitle});
61
62 final String title;
63 final String subTitle;
64 final Color textColor;
65 final Color backgroundColor;
66
67 @override
68 Widget build(BuildContext context) {
69 return Padding(
70 padding: const EdgeInsets.only(right: 8),
71 child: FittedBox(
72 fit: BoxFit.fitHeight,
73 child: Container(
74 padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4),
75 decoration: BoxDecoration(
76 borderRadius: BorderRadius.all(Radius.circular(24)), color: backgroundColor),
77 alignment: Alignment.center,
78 child: IntrinsicHeight(
79 child: Row(
80 mainAxisAlignment: MainAxisAlignment.spaceEvenly,
81 children: [
82 Text(
83 title,
84 textAlign: TextAlign.center,
85 style: Theme.of(context).textTheme.bodySmall!.copyWith(
86 color: textColor,
87 fontSize: 7,
88 fontWeight: FontWeight.w600,
89 ),
90 ),
91 VerticalDivider(
92 color: textColor,
93 thickness: 1,
94 ),
95 Text(
96 subTitle,
97 style: Theme.of(context).textTheme.bodySmall!.copyWith(
98 color: textColor,
99 fontWeight: FontWeight.w600,
100 ),
101 ),
102 ],
103 ),
104 ),
105 ),
106 ),
107 );
108 }
109 }