mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2025-03-21 22:58:49 +00:00
hook OrdinalsList up to OrdinalsInterface
This commit is contained in:
parent
c295ca9a6f
commit
f750bbfe10
3 changed files with 57 additions and 51 deletions
|
@ -56,6 +56,14 @@ class _OrdinalsViewState extends ConsumerState<OrdinalsView> {
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void didChangeDependencies() {
|
||||||
|
super.didChangeDependencies();
|
||||||
|
// Set _manager here when the widget's dependencies change
|
||||||
|
_manager = ref.watch(walletsChangeNotifierProvider
|
||||||
|
.select((value) => value.getManager(widget.walletId)));
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
searchController.dispose();
|
searchController.dispose();
|
||||||
|
@ -92,8 +100,6 @@ class _OrdinalsViewState extends ConsumerState<OrdinalsView> {
|
||||||
.topNavIconPrimary,
|
.topNavIconPrimary,
|
||||||
),
|
),
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
_manager = ref.watch(walletsChangeNotifierProvider
|
|
||||||
.select((value) => value.getManager(widget.walletId)));
|
|
||||||
(_manager.wallet as OrdinalsInterface).refreshInscriptions();
|
(_manager.wallet as OrdinalsInterface).refreshInscriptions();
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -187,17 +193,7 @@ class _OrdinalsViewState extends ConsumerState<OrdinalsView> {
|
||||||
Expanded(
|
Expanded(
|
||||||
child: OrdinalsList(
|
child: OrdinalsList(
|
||||||
walletId: widget.walletId,
|
walletId: widget.walletId,
|
||||||
ordinals: [
|
ordinalsFuture: (_manager.wallet as OrdinalsInterface).getInscriptions(),
|
||||||
for (int i = 0; i < 13; i++)
|
|
||||||
Ordinal(
|
|
||||||
name: "dummy name $i",
|
|
||||||
inscription: "insc$i",
|
|
||||||
rank: "r$i",
|
|
||||||
collection: OrdCollection.moonbirds,
|
|
||||||
utxoTXID: 'txid',
|
|
||||||
utxoVOUT: 1
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
|
@ -1,18 +1,19 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:stackwallet/models/ordinal.dart';
|
import 'package:stackwallet/dto/ordinals/inscription_data.dart';
|
||||||
|
import 'package:stackwallet/models/ordinal.dart'; // TODO generalize InscriptionData models -> Ordinal
|
||||||
import 'package:stackwallet/pages/ordinals/ordinal_details_view.dart';
|
import 'package:stackwallet/pages/ordinals/ordinal_details_view.dart';
|
||||||
import 'package:stackwallet/utilities/text_styles.dart';
|
import 'package:stackwallet/utilities/text_styles.dart';
|
||||||
import 'package:stackwallet/widgets/rounded_white_container.dart';
|
import 'package:stackwallet/widgets/rounded_white_container.dart';
|
||||||
|
|
||||||
class OrdinalCard extends StatelessWidget {
|
class OrdinalCard extends StatelessWidget {
|
||||||
const OrdinalCard({
|
const OrdinalCard({
|
||||||
super.key,
|
Key? key,
|
||||||
required this.walletId,
|
required this.walletId,
|
||||||
required this.ordinal,
|
required this.inscriptionData,
|
||||||
});
|
}) : super(key: key);
|
||||||
|
|
||||||
final String walletId;
|
final String walletId;
|
||||||
final Ordinal ordinal;
|
final InscriptionData inscriptionData;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
@ -21,7 +22,7 @@ class OrdinalCard extends StatelessWidget {
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.of(context).pushNamed(
|
Navigator.of(context).pushNamed(
|
||||||
OrdinalDetailsView.routeName,
|
OrdinalDetailsView.routeName,
|
||||||
arguments: (walletId: walletId, ordinal: ordinal),
|
arguments: (walletId: walletId, inscriptionData: inscriptionData),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -31,21 +32,20 @@ class OrdinalCard extends StatelessWidget {
|
||||||
aspectRatio: 1,
|
aspectRatio: 1,
|
||||||
child: Container(
|
child: Container(
|
||||||
color: Colors.red,
|
color: Colors.red,
|
||||||
child: const Center(
|
child: Image.network(
|
||||||
child: Text(
|
inscriptionData.preview, // Use the preview URL as the image source
|
||||||
"replace red container with image",
|
fit: BoxFit.cover,
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
Text(
|
Text(
|
||||||
ordinal.name,
|
inscriptionData.address,
|
||||||
style: STextStyles.w500_12(context),
|
style: STextStyles.w500_12(context),
|
||||||
),
|
),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
Text(
|
Text(
|
||||||
"INSC. ${ordinal.inscription} RANK ${ordinal.rank}",
|
"INSC. ${inscriptionData.inscriptionNumber} ID ${inscriptionData.inscriptionId}",
|
||||||
style: STextStyles.w500_8(context),
|
style: STextStyles.w500_8(context),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
|
@ -1,39 +1,49 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:stackwallet/models/ordinal.dart';
|
import 'package:stackwallet/dto/ordinals/inscription_data.dart';
|
||||||
|
|
||||||
import 'package:stackwallet/pages/ordinals/widgets/ordinal_card.dart';
|
import 'package:stackwallet/pages/ordinals/widgets/ordinal_card.dart';
|
||||||
|
|
||||||
class OrdinalsList extends StatefulWidget {
|
class OrdinalsList extends StatelessWidget {
|
||||||
const OrdinalsList({
|
const OrdinalsList({
|
||||||
super.key,
|
Key? key,
|
||||||
required this.walletId,
|
required this.walletId,
|
||||||
required this.ordinals,
|
required this.ordinalsFuture,
|
||||||
});
|
}) : super(key: key);
|
||||||
|
|
||||||
final String walletId;
|
final String walletId;
|
||||||
final List<Ordinal> ordinals;
|
final Future<List<InscriptionData>> ordinalsFuture;
|
||||||
|
|
||||||
@override
|
get spacing => 2.0;
|
||||||
State<OrdinalsList> createState() => _OrdinalsListState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _OrdinalsListState extends State<OrdinalsList> {
|
|
||||||
static const spacing = 10.0;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return GridView.builder(
|
return FutureBuilder<List<InscriptionData>>(
|
||||||
shrinkWrap: true,
|
future: ordinalsFuture,
|
||||||
itemCount: widget.ordinals.length,
|
builder: (context, snapshot) {
|
||||||
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
|
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||||
crossAxisSpacing: spacing,
|
return const CircularProgressIndicator();
|
||||||
mainAxisSpacing: spacing,
|
} else if (snapshot.hasError) {
|
||||||
crossAxisCount: 2,
|
return Text('Error: ${snapshot.error}');
|
||||||
childAspectRatio: 3 / 4,
|
} else if (snapshot.hasData) {
|
||||||
),
|
final List<InscriptionData> inscriptions = snapshot.data!;
|
||||||
itemBuilder: (_, i) => OrdinalCard(
|
return GridView.builder(
|
||||||
walletId: widget.walletId,
|
shrinkWrap: true,
|
||||||
ordinal: widget.ordinals[i],
|
itemCount: inscriptions.length,
|
||||||
),
|
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||||
|
crossAxisSpacing: spacing as double,
|
||||||
|
mainAxisSpacing: spacing as double,
|
||||||
|
crossAxisCount: 2,
|
||||||
|
childAspectRatio: 3 / 4,
|
||||||
|
),
|
||||||
|
itemBuilder: (_, i) => OrdinalCard(
|
||||||
|
walletId: walletId,
|
||||||
|
inscriptionData: inscriptions[i],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return Text('No data found.');
|
||||||
|
}
|
||||||
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue