Flutter自定义按钮插件flutter_ton_buttons的使用

Flutter自定义按钮插件flutter_ton_buttons的使用

flutter_ton_buttons

flutter_ton_buttons 是一个用于 Telegram TON HTTP 连接流的 Flutter 小部件集合。它提供了以下功能:

1. TON Connect 按钮 (TonConnectButton)

用于启动 Telegram TON 钱包连接流程。

示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_ton_buttons/flutter_ton_buttons.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('TON Connect Button Example')),
        body: Center(
          child: TonConnectButton(
            onPressed: () {
              print('TON Connect Button Pressed!');
            },
          ),
        ),
      ),
    );
  }
}

2. 钱包选择按钮 (TonOpenWalletWidget)

允许用户选择他们的 Telegram TON 钱包。

示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_ton_buttons/flutter_ton_buttons.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Wallet Selection Button Example')),
        body: TonOpenWalletWidget(
          onSelected: (walletAddress) {
            print('Selected Wallet Address: $walletAddress');
          },
        ),
      ),
    );
  }
}

3. 钱包连接确认进度 (TonConnectionPendingWidget)

显示钱包连接的等待状态。

示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_ton_buttons/flutter_ton_buttons.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Connection Pending Widget Example')),
        body: TonConnectionPendingWidget(
          message: 'Connecting to your wallet...',
        ),
      ),
    );
  }
}

4. 钱包连接失败信息 (TonConnectionPendingWidget with error = true)

显示钱包连接失败的信息。

示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_ton_buttons/flutter_ton_buttons.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Connection Failed Widget Example')),
        body: TonConnectionPendingWidget(
          error: true,
          message: 'Failed to connect to your wallet.',
        ),
      ),
    );
  }
}

5. 交易确认进度 (TonSendTrxWidget)

显示交易发送的确认进度。

示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_ton_buttons/flutter_ton_buttons.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Transaction Confirmation Widget Example')),
        body: TonSendTrxWidget(
          message: 'Sending transaction...',
        ),
      ),
    );
  }
}

主题支持

所有小部件都支持 DarkLight 主题。可以根据应用的主题动态调整样式。

示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_ton_buttons/flutter_ton_buttons.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.light(),
      darkTheme: ThemeData.dark(),
      home: Scaffold(
        appBar: AppBar(title: Text('Theme Example')),
        body: TonConnectButton(
          onPressed: () {},
        ),
      ),
    );
  }
}

更多关于Flutter自定义按钮插件flutter_ton_buttons的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter自定义按钮插件flutter_ton_buttons的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_ton_buttons 是一个用于创建自定义按钮的 Flutter 插件。它允许开发者轻松地创建具有不同样式和动画效果的按钮。以下是如何使用 flutter_ton_buttons 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 flutter_ton_buttons 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_ton_buttons: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 flutter_ton_buttons 包:

import 'package:flutter_ton_buttons/flutter_ton_buttons.dart';

3. 使用自定义按钮

flutter_ton_buttons 提供了多种类型的按钮,例如 TonButton,你可以根据需要自定义按钮的外观和行为。

以下是一个简单的例子,展示如何使用 TonButton

import 'package:flutter/material.dart';
import 'package:flutter_ton_buttons/flutter_ton_buttons.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Ton Buttons Example'),
        ),
        body: Center(
          child: TonButton(
            text: 'Click Me',
            onPressed: () {
              print('Button Pressed!');
            },
            style: TonButtonStyle(
              backgroundColor: Colors.blue,
              textColor: Colors.white,
              borderRadius: 8.0,
              elevation: 4.0,
            ),
          ),
        ),
      ),
    );
  }
}

4. 自定义按钮样式

TonButtonStyle 类允许你自定义按钮的外观。以下是一些常用的属性:

  • backgroundColor: 按钮的背景颜色。
  • textColor: 按钮文本的颜色。
  • borderRadius: 按钮的圆角半径。
  • elevation: 按钮的阴影效果。
  • padding: 按钮的内边距。
  • borderColor: 按钮的边框颜色。
  • borderWidth: 按钮的边框宽度。

你可以根据需求调整这些属性来创建符合你应用风格的按钮。

5. 处理按钮点击事件

TonButtononPressed 属性允许你指定按钮点击时的回调函数。你可以在这个回调函数中执行任何操作,例如导航到另一个页面或触发某个事件。

TonButton(
  text: 'Navigate',
  onPressed: () {
    Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => SecondPage()),
    );
  },
  style: TonButtonStyle(
    backgroundColor: Colors.green,
    textColor: Colors.white,
  ),
)

6. 其他类型的按钮

flutter_ton_buttons 可能还提供了其他类型的按钮,例如带有图标的按钮、加载状态的按钮等。你可以查阅插件的文档或示例代码来了解更多信息。

7. 示例代码

以下是一个完整的示例代码,展示了如何使用 flutter_ton_buttons 创建自定义按钮:

import 'package:flutter/material.dart';
import 'package:flutter_ton_buttons/flutter_ton_buttons.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Ton Buttons Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              TonButton(
                text: 'Primary Button',
                onPressed: () {
                  print('Primary Button Pressed!');
                },
                style: TonButtonStyle(
                  backgroundColor: Colors.blue,
                  textColor: Colors.white,
                  borderRadius: 8.0,
                  elevation: 4.0,
                ),
              ),
              SizedBox(height: 20),
              TonButton(
                text: 'Secondary Button',
                onPressed: () {
                  print('Secondary Button Pressed!');
                },
                style: TonButtonStyle(
                  backgroundColor: Colors.green,
                  textColor: Colors.white,
                  borderRadius: 8.0,
                  elevation: 4.0,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部