Flutter Solana代币列表展示插件solana_token_list的使用

发布于 1周前 作者 yibo5220 来自 Flutter

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

1 回复

更多关于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'),
                );
              }),
    );
  }
}

解释

  1. 依赖添加:在pubspec.yaml中添加solana_token_list依赖。
  2. 主应用MyApp是主应用入口,包含一个MaterialApp和一个TokenListScreen作为首页。
  3. TokenListScreen
    • TokenListScreen是一个有状态的Widget,包含一个List<Token>和一个isLoading布尔值。
    • initState方法中,调用fetchTokenList函数来获取Solana代币列表。
    • fetchTokenList函数使用SolanaTokenList.fetchMainnetBeta()(或其他网络)异步获取代币列表,并将结果保存到状态中。
    • build方法根据isLoading状态显示加载指示器或代币列表。
    • 使用ListView.builder构建代币列表,每个列表项显示代币的名称、符号和地址。

这样,你就可以在你的Flutter应用中展示Solana代币列表了。你可以根据需要进一步自定义和扩展这个示例。

回到顶部