Flutter Solana代币列表展示插件solana_token_list的使用
Flutter Solana代币列表展示插件solana_token_list的使用
Solana Token Registry
是一个允许应用程序查询代币列表的包。代币的JSON模式包括:chainId、address、name、decimals、symbol、logoURI(可选)、tags(可选)以及自定义扩展元数据。
使用
代币列表可以根据标签进行过滤:
import 'package:solana_token_list/solana_token_list.dart';
void main() async {
// 获取静态代币列表
final list = (await TokenListStrategy().fetchTokenList(Strategy.static))
.filterByChainEnv(ChainEnv.mainNetBeta)
.filterByTag('nft');
}
代币列表可以排除某个标签:
final list = (await TokenListStrategy().fetchTokenList(Strategy.static))
.filterByChainEnv(ChainEnv.mainNetBeta)
.excludeByTag('nft');
代币列表可以排除某个链:
final list = (await TokenListStrategy().fetchTokenList(Strategy.static))
.excludeByChainEnv(ChainEnv.mainNetBeta);
代币列表返回过滤后的对象:
final list = await TokenListStrategy().fetchTokenList(Strategy.static);
final filtered = list.filterByChainEnv(ChainEnv.mainNetBeta);
调用 filterByClusterSlug
方法时,如果slug不存在,则返回空列表:
final list = await TokenListStrategy().fetchTokenList(Strategy.static);
final filtered = list.filterByClusterSlug('whoop');
完整示例代码
以下是一个完整的示例代码,展示了如何使用 solana_token_list
插件来获取和过滤Solana代币列表。
import 'package:solana_token_list/solana_token_list.dart';
void main() async {
// 静态Solana代币列表
var staticTokens = staticTokenList.tokens;
print('静态代币列表大小: ${staticTokens.length}');
var tokenListStrategy = TokenListStrategy();
// 获取CDN代币列表
final cdnTokens = await tokenListStrategy.fetchTokenList(Strategy.cdn);
print('CDN代币列表大小: ${cdnTokens.length}');
// 排除某个标签的代币列表
final noNftTokenList =
(await tokenListStrategy.fetchTokenList(Strategy.static))
.filterByChainEnv(ChainEnv.mainNetBeta)
.excludeByTag('nft');
print('排除NFT标签后主网代币列表大小: ${noNftTokenList.length}');
// 按集群名称过滤
final list = cdnTokens.filterByClusterSlug('Mainnet-Beta');
print('按Mainnet-Beta过滤后的代币列表大小: ${list.length}');
// 过滤主网代币
final mainNetList = cdnTokens.filterByChainEnv(ChainEnv.mainNetBeta);
print('主网代币列表大小: ${mainNetList.length}');
}
更多关于Flutter Solana代币列表展示插件solana_token_list的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Solana代币列表展示插件solana_token_list的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter应用中使用solana_token_list
插件来展示Solana代币列表的示例代码。
首先,确保你已经将solana_token_list
插件添加到你的Flutter项目中。你可以在pubspec.yaml
文件中添加以下依赖项:
dependencies:
flutter:
sdk: flutter
solana_token_list: ^最新版本号 # 替换为实际的最新版本号
然后,运行flutter pub get
来安装依赖项。
接下来,在你的Flutter项目中,你可以使用以下代码来展示Solana代币列表。
示例代码
main.dart
import 'package:flutter/material.dart';
import 'package:solana_token_list/solana_token_list.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Solana Token List Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: TokenListScreen(),
);
}
}
class TokenListScreen extends StatefulWidget {
@override
_TokenListScreenState createState() => _TokenListScreenState();
}
class _TokenListScreenState extends State<TokenListScreen> {
List<Token> tokens = [];
bool isLoading = true;
@override
void initState() {
super.initState();
fetchTokenList();
}
void fetchTokenList() async {
try {
final tokenList = await SolanaTokenList.fetchMainnetBeta(); // 或者使用其他网络:SolanaTokenList.fetchDevnet(),SolanaTokenList.fetchTestnet()
setState(() {
tokens = tokenList.tokens;
isLoading = false;
});
} catch (error) {
print("Error fetching token list: $error");
setState(() {
isLoading = false;
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Solana Token List'),
),
body: isLoading
? Center(child: CircularProgressIndicator())
: ListView.builder(
itemCount: tokens.length,
itemBuilder: (context, index) {
final token = tokens[index];
return ListTile(
title: Text(token.name ?? 'Unknown Name'),
subtitle: Text(token.symbol ?? 'Unknown Symbol'),
trailing: Text(token.address ?? 'Unknown Address'),
);
}),
);
}
}
解释
- 依赖添加:在
pubspec.yaml
中添加solana_token_list
依赖。 - 主应用:
MyApp
是主应用入口,包含一个MaterialApp
和一个TokenListScreen
作为首页。 - TokenListScreen:
TokenListScreen
是一个有状态的Widget,包含一个List<Token>
和一个isLoading
布尔值。- 在
initState
方法中,调用fetchTokenList
函数来获取Solana代币列表。 fetchTokenList
函数使用SolanaTokenList.fetchMainnetBeta()
(或其他网络)异步获取代币列表,并将结果保存到状态中。build
方法根据isLoading
状态显示加载指示器或代币列表。- 使用
ListView.builder
构建代币列表,每个列表项显示代币的名称、符号和地址。
这样,你就可以在你的Flutter应用中展示Solana代币列表了。你可以根据需要进一步自定义和扩展这个示例。