You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Flutter与ERC721智能合约交互实现NFT铸造功能?

Flutter实现ERC721合约交互完全可行,不需要切换React技术栈

你有丰富的Flutter开发经验可以直接沿用现有技术栈完成NFT铸造Dapp的开发,具体实现路径如下:

核心依赖选择

  • web3dart:Flutter生态最成熟的EVM链交互SDK,原生支持合约调用、交易签名、链上数据查询,完全兼容ERC721全量标准接口
  • walletconnect_flutter_v2:跨端对接MetaMask等主流加密钱包的依赖,支持用户通过自有钱包签名交易,无需在应用内托管用户私钥,安全性更高
  • flutter_web3:如果需要发布Web端Dapp,可以用这个依赖直接对接浏览器插件钱包,适配Web端的钱包连接逻辑

核心实现步骤

  1. 准备对接的ERC721合约ABI文件,仅保留你需要用到的方法(如safeMint、balanceOf、tokenURI等)即可,将ABI文件存为项目的静态资源
  2. 初始化Web3客户端与合约实例,参考代码如下:
import 'package:web3dart/web3dart.dart';
import 'package:http/http.dart' as http;
import 'package:flutter/services.dart';

// 初始化RPC客户端,rpcUrl替换为对应链的RPC节点地址
final web3Client = Web3Client('你的RPC节点地址', http.Client());
// 加载合约ABI
final erc721Abi = await rootBundle.loadString('assets/erc721_abi.json');
// 初始化合约实例,contractAddress替换为你的ERC721合约链上地址
final erc721Contract = DeployedContract(
  ContractAbi.fromJson(erc721Abi, '自定义ERC721合约名'),
  EthereumAddress.fromHex('你的ERC721合约地址'),
);
  1. 调用只读方法不需要用户签名,直接调用即可,比如查询用户持有的NFT数量:
final balanceOfFunc = erc721Contract.function('balanceOf');
final result = await web3Client.call(
  contract: erc721Contract,
  function: balanceOfFunc,
  params: [EthereumAddress.fromHex('用户钱包地址')],
);
int userNftCount = result.first.toInt();
  1. 调用写方法(比如铸造NFT)需要用户签名交易,通过WalletConnect获取用户钱包授权后,构造交易参数传给钱包签名,再上链发送即可,参考代码如下:
final safeMintFunc = erc721Contract.function('safeMint');
final mintTx = Transaction.callContract(
  contract: erc721Contract,
  function: safeMintFunc,
  // 参数顺序要和合约里safeMint方法的参数顺序完全一致
  parameters: [EthereumAddress.fromHex('接收NFT的用户地址'), '你的NFT元数据URI'],
  maxGas: 250000, // 按照你合约的实际gas消耗调整
);
// 用授权后的钱包签名并发送交易,txHash即为上链后的交易哈希
String txHash = await web3Client.sendTransaction(
  walletCredentials, // 从WalletConnect获取的用户签名凭证
  mintTx,
  chainId: 你对接的链ID, // 比如以太坊主网是1,Polygon主网是137
);

注意事项

  • 不要在应用内存储用户私钥,所有需要签名的操作都优先通过WalletConnect对接第三方钱包完成,避免安全风险
  • 不同链的RPC配置、链ID、gas费规则需要对应准确,否则会出现交易发送失败的问题
  • 同时发布移动端和Web端的话,注意区分两端的钱包适配逻辑,web3dart支持全端调用,flutter_web3仅适配Web端场景

内容的提问来源于stack exchange,提问作者Rizvi Haider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:00:01