美文网首页
flutter-区块链,ETH、BSC、TRX创建助记词,助记词

flutter-区块链,ETH、BSC、TRX创建助记词,助记词

作者: 守护浪漫的小香樟 | 来源:发表于2023-09-26 18:20 被阅读0次

flutter-区块链,创建助记词,助记词创建多链ETH、BSC、TRX

基于区块链的多链操作应用相当广泛的今天,掌握好助记词生成的多链成为必要.

下面简单介绍一款flutter平台自动生成助记词,并根据助记词生成多链信息的插件lj_web3_tron_sdk,
支持:

1、助记词创建
2、助记词生成ETH、BSC、TRX的Token
3、生成ETH、BSC、TRX链
4、生成ETH、BSC、TRX链相关children

一、导入插件

lj_web3_tron_sdk: ^1.0.0

二、 具体功能

import 'package:lj_web3_tron_sdk/lj_web3_tron_sdk.dart';
import 'package:lj_web3_tron_sdk/src/models/chain_model.dart';

声明

// 钱包
  Web3Model token = Web3Model();

  // 代币
  ChainModel chain = ChainModel();

创建助记词

Web3TronSDK.generateMnemonic();

创建多链- ETH

Web3TronSDK.getToken(token.mnemonic, type: ChainTypes.eth);

获取对应链的对象

await Web3TronSDK.getChainModel(ChainTypes.eth);

三、完整代码

import 'package:flutter/material.dart';
import 'package:lj_web3_tron_sdk/lj_web3_tron_sdk.dart';
// ignore: implementation_imports
import 'package:lj_web3_tron_sdk/src/models/chain_model.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: '钱包创建'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  // 钱包
  Web3Model token = Web3Model();

  // 代币
  ChainModel chain = ChainModel();

  @override
  void initState() {
    super.initState();
    token.mnemonic = Web3TronSDK.generateMnemonic();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            iconView(),
            mnemonicView(),
            nameView(),
            pathView(),
            privateKeyView(),
            addressView(),
            Expanded(child: _coinView()),
            // const Spacer(),
            _botomView()
          ],
        ),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
  Widget _coinView(){
    if (chain.icon.isEmpty) return Container(); 
    return ListView.builder(itemBuilder: ((context, index) {
      return ListTile(
        leading: Image.asset(chain.symbols[index].icon, width: 30,height: 30,),
        title: Text(chain.symbols[index].name),
        subtitle: Text(chain.symbols[index].contractAddress),
        );
      
    }),
    itemCount: chain.symbols.length,);
  }

  Widget iconView(){
    if (chain.icon.isEmpty) return Container();
    return Container(
      padding: const EdgeInsets.all(10),
      child: Row(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
        const SizedBox(width: 80,child: Text("logo:"),),
        Image.asset(chain.icon)
      ],),
    );
  }

  Widget privateKeyView(){
    if (token.privateKey.isEmpty) return Container();
    return Container(
      padding: const EdgeInsets.all(10),
      child: Row(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
        const SizedBox(width: 80,child: Text("私钥:"),),
        Expanded(child: Text(token.privateKey, maxLines: 2,style: const TextStyle(fontWeight: FontWeight.w600),))
      ],),
    );
  }

  Widget pathView(){
    if (token.path.isEmpty) return Container();
    return Container(
      padding: const EdgeInsets.all(10),
      child: Row(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
        const SizedBox(width: 80,child: Text("path:"),),
        Expanded(child: Text(token.path, maxLines: 2,style: const TextStyle(fontWeight: FontWeight.w600),))
      ],),
    );
  }

  Widget addressView(){
    if (token.address.isEmpty) return Container();
    return Container(
      padding: const EdgeInsets.all(10),
      child: Row(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
        const SizedBox(width: 80,child: Text("地址:"),),
        Expanded(child: Text(token.address, maxLines: 2,style: const TextStyle(fontWeight: FontWeight.w600),))
      ],),
    );
  }

  Widget nameView(){
    if (token.name.isEmpty) return Container();
    return Container(
      padding: const EdgeInsets.all(10),
      child: Row(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
        const SizedBox(width: 80,child: Text("名称:"),),
        Expanded(child: Text(token.name, maxLines: 2,style: const TextStyle(fontWeight: FontWeight.w600),))
      ],),
    );
  }

  Widget mnemonicView(){
    return Container(
      padding: const EdgeInsets.all(10),
      child: Row(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
        const SizedBox(width: 80,child: Text("助记词:"),),
        Expanded(child: Text(token.mnemonic, maxLines: 2,style: const TextStyle(fontWeight: FontWeight.w600),))
      ],),
    );
  }

  Widget _botomView() {
    return Container(
      margin: const EdgeInsets.only(bottom: 50),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceAround,
        children: [
          TextButton(
              onPressed: () async {
                token =
                    Web3TronSDK.getToken(token.mnemonic, type: ChainTypes.eth);
                chain = await Web3TronSDK.getChainModel(ChainTypes.eth);
                setState(() {});
              },
              child: Container(
                width: 100,
                height: 36,
                alignment: Alignment.center,
                decoration: BoxDecoration(
                    color: Colors.purple.withAlpha(200),
                    borderRadius: const BorderRadius.all(Radius.circular(8))),
                child: const Text(
                  "ETH",
                  style: TextStyle(color: Colors.white),
                ),
              )),
          TextButton(
              onPressed: () async {
                token =
                    Web3TronSDK.getToken(token.mnemonic, type: ChainTypes.bsc);
                chain = await Web3TronSDK.getChainModel(ChainTypes.bsc);
                setState(() {});
              },
              child: Container(
                width: 100,
                height: 36,
                alignment: Alignment.center,
                decoration: BoxDecoration(
                    color: Colors.purple.withAlpha(200),
                    borderRadius: const BorderRadius.all(Radius.circular(8))),
                child: const Text(
                  "BSC",
                  style: TextStyle(color: Colors.white),
                ),
              )),
          TextButton(
              onPressed: () async {
                token =
                    Web3TronSDK.getToken(token.mnemonic, type: ChainTypes.trx);
                chain = await Web3TronSDK.getChainModel(ChainTypes.trx);
                setState(() {});
              },
              child: Container(
                width: 100,
                height: 36,
                alignment: Alignment.center,
                decoration: BoxDecoration(
                    color: Colors.purple.withAlpha(200),
                    borderRadius: const BorderRadius.all(Radius.circular(8))),
                child: const Text(
                  "TRX",
                  style: TextStyle(color: Colors.white),
                ),
              )),
        ],
      ),
    );
  }
}

四、预览效果
ETH链


截屏2023-09-27 18.18.53.png

BSC链


截屏2023-09-27 18.20.16.png
TRX链
截屏2023-09-28 10.33.53.png

五、支持
目前仅支持ETH、BSC、TRX三条链, 后续会陆续更新其他链

相关文章

  • 区块链-ETH解锁钱包

    本篇文章承接区块链-ETH创建钱包 , 基本概念在上篇文章中已经做了概要 , 现在我们开始说明分别通过助记词,私钥...

  • BIP39 _Dart

    bip39主要在区块链中生成助记词。

  • 小科普:助记词和私钥到底是什么?

    踏入区块链世界后,我们经常听到的话就是“私钥如何如何重要”、“助记词如何如何重要” 那么助记词和私钥到底是啥东西?...

  • eth钱包开发--java(附带eth离线交易工具类)

    本篇主要说明如何离线生成ETH地址和进行离线交易 通过助记词离线生成钱包地址 关于助记词和HD钱包原理的原理可以参...

  • IOS开发BTC、ETH、区块链钱包

    ETH钱包部分: 功能有: 1、创建钱包 2、通过助记词导入钱包 3、通过KeyStore导入钱包 4、通过私钥导...

  • IOS OC开发 BTC、ETH、区块链钱包

    ETH钱包部分: 功能有: 1、创建钱包 2、通过助记词导入钱包 3、通过KeyStore导入钱包 4、通过私钥导...

  • IOS OC开发 BTC、ETH、区块链钱包

    ETH钱包部分: 功能有: 1、创建钱包 2、通过助记词导入钱包 3、通过KeyStore导入钱包 4、通过私钥导...

  • ETH钱包助记词、私钥、Keystore以及创建过程

    助记词 助记词拥有钱包的所有权,可以通过助记词随意转移该钱包下的资产而无需密码。助记词可以生成很多子钱包,目前大部...

  • 助记词

    助记词是明文私钥的另一种表现形式, 最早是由 BIP39 提案提出, 其目的是为了帮助用户记忆复杂的私钥 (64位...

  • 2022-08-14

    Mnemonic Phrase一般来说,我们创建了钱包后,直接打交道的关键信息是助记词(而不是私钥),毕竟助记词是...

网友评论

      本文标题:flutter-区块链,ETH、BSC、TRX创建助记词,助记词

      本文链接:https://www.haomeiwen.com/subject/fmyhbdtx.html