Flutter Telegram Web App集成插件new_telegram_web_app的使用
Flutter Telegram Web App 集成插件 new_telegram_web_app 的使用
Telegram Web App
通过使用 telegram_web_app
库,可以在 Flutter 中构建 Telegram Web 应用。
开始使用
- 在你的
pubspec.yaml
文件中导入库。 - 并在
<code>web/index.html</code>
文件中添加以下脚本:
<head>
<script src="https://telegram.org/js/telegram-web-app.js" defer=""></script>
</head>
可以在这里查看可用的 telegram_web
API 详细信息:
Telegram Web App 文档
你也可以在示例项目中找到详细的例子。
开发环境设置
- 在 Telegram Web App 中启用调试。更多详情请查看 这篇帖子。
- 导航到
<code>\example</code>
文件夹。 - 通过 Firebase 或其他托管服务部署示例应用。你可以在这里找到 Firebase 托管文档: Firebase 托管文档
- 在 Telegram 中创建 Web 应用。
- 使用网站 URL 加载 Web 应用。
- 你也可以通过调试使用 JavaScript 日志检查应用。更多信息请查看 这里。
- 如需更多信息和支持,可以加入 Telegram 群组: Telegram 群组
一篇关于如何将 Web 应用部署到 Firebase 并与 Telegram Web 应用关联的文章: Telegram Mini Apps
如何使用
有一个名为 TelegramWebApp
的类,它包含所有 Telegram Web API。可以通过 <code>TelegramWebApp.instance</code>
调用这些方法。
如果你试图在 Telegram 平台之外测试,可以通过扩展该类来模拟 TelegramWebApp
。或者,也可以使用 TelegramWebAppFake
对象达到相同目的。
示例代码
// 当前 Telegram 版本
Text(TelegramWebApp.instance.version)
// 与用户应用程序相关的 Telegram 颜色
Text(TelegramWebApp.instance.themeParams)
// 包含用户详细信息和用户验证哈希的对象
Text(TelegramWebApp.instance.initData.toString())
可以在示例文件夹中找到完整的 API 示例列表。如果你有任何改进或更新,请随时贡献: GitHub 仓库
注意事项
- 所有的 API 只能在 Telegram Web App 内部使用。你不能在平台外部使用这些 API。
- 在 Android 上,Web 应用有时无法加载(仅显示灰色/白色屏幕)。如果发生这种情况,有一个“hacky”的解决办法。你也可以在示例应用中找到它:
void main() async {
try {
if (TelegramWebApp.instance.isSupported) {
TelegramWebApp.instance.ready();
Future.delayed(const Duration(seconds: 1), TelegramWebApp.instance.expand);
}
} catch (e) {
print("Error happened in Flutter while loading Telegram $e");
// 添加延迟以修复 'Telegram 有时不加载' 的问题
await Future.delayed(const Duration(milliseconds: 200));
main();
return;
}
FlutterError.onError = (details) {
print("Flutter error happened: $details");
};
runApp(const MyApp());
}
示例 Demo
import 'package:example/screens/main_screen.dart';
import 'package:flutter/material.dart';
import 'package:new_telegram_web_app/telegram_web_app.dart';
void main() async {
try {
if (TelegramWebApp.instance.isSupported) {
TelegramWebApp.instance.ready();
Future.delayed(
const Duration(seconds: 1), TelegramWebApp.instance.expand);
}
} catch (e) {
print("Error happened in Flutter while loading Telegram $e");
// 添加延迟以修复 'Telegram 有时不加载' 的问题
await Future.delayed(const Duration(milliseconds: 200));
main();
return;
}
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Telegram Web App Example',
theme: TelegramThemeUtil.getTheme(TelegramWebApp.instance),
home: const MainScreen(),
);
}
}
更多关于Flutter Telegram Web App集成插件new_telegram_web_app的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Telegram Web App集成插件new_telegram_web_app的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
new_telegram_web_app
是一个用于在 Flutter 应用中集成 Telegram Web App 的插件。Telegram Web App 允许开发者通过 Telegram 的 Web 界面与用户进行交互,而 new_telegram_web_app
插件则简化了在 Flutter 应用中使用 Telegram Web App 的过程。
安装插件
首先,你需要在 pubspec.yaml
文件中添加 new_telegram_web_app
插件的依赖:
dependencies:
flutter:
sdk: flutter
new_telegram_web_app: ^0.0.1 # 请确保使用最新版本
然后,运行 flutter pub get
来安装插件。
基本使用
-
初始化插件
在
main.dart
或其他入口文件中,初始化new_telegram_web_app
插件:import 'package:flutter/material.dart'; import 'package:new_telegram_web_app/new_telegram_web_app.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { [@override](/user/override) Widget build(BuildContext context) { return MaterialApp( home: TelegramWebAppWrapper(), ); } } class TelegramWebAppWrapper extends StatelessWidget { [@override](/user/override) Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Telegram Web App'), ), body: Center( child: TelegramWebApp( onInit: (TelegramWebApp webApp) { // Telegram Web App 初始化完成后的回调 print('Telegram Web App initialized'); print('User info: ${webApp.initData}'); }, child: Text('Hello, Telegram Web App!'), ), ), ); } }
-
访问 Telegram Web App 的功能
TelegramWebApp
提供了一个webApp
对象,你可以通过它来访问 Telegram Web App 的各种功能,例如获取用户信息、发送消息等。TelegramWebApp( onInit: (TelegramWebApp webApp) { // 获取用户信息 var user = webApp.initData['user']; print('User ID: ${user['id']}'); print('First Name: ${user['first_name']}'); print('Last Name: ${user['last_name']}'); // 发送消息 webApp.sendMessage('Hello from Flutter!'); }, child: Text('Hello, Telegram Web App!'), );
-
处理事件
你还可以监听 Telegram Web App 的各种事件,例如
onEvent
或onClose
。TelegramWebApp( onInit: (TelegramWebApp webApp) { webApp.onEvent('themeChanged', (data) { print('Theme changed: $data'); }); webApp.onClose(() { print('Web App closed'); }); }, child: Text('Hello, Telegram Web App!'), );
高级功能
new_telegram_web_app
插件还支持更多高级功能,例如:
- 自定义主题:你可以通过
webApp.setThemeParams
来设置自定义主题。 - 显示主按钮:使用
webApp.MainButton
来控制主按钮的显示和状态。 - 弹出窗口:使用
webApp.showPopup
或webApp.showAlert
来显示弹出窗口。
示例代码
以下是一个完整的示例代码,展示了如何使用 new_telegram_web_app
插件:
import 'package:flutter/material.dart';
import 'package:new_telegram_web_app/new_telegram_web_app.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: TelegramWebAppWrapper(),
);
}
}
class TelegramWebAppWrapper extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Telegram Web App'),
),
body: Center(
child: TelegramWebApp(
onInit: (TelegramWebApp webApp) {
// 获取用户信息
var user = webApp.initData['user'];
print('User ID: ${user['id']}');
print('First Name: ${user['first_name']}');
print('Last Name: ${user['last_name']}');
// 发送消息
webApp.sendMessage('Hello from Flutter!');
// 监听主题变化
webApp.onEvent('themeChanged', (data) {
print('Theme changed: $data');
});
// 监听关闭事件
webApp.onClose(() {
print('Web App closed');
});
},
child: Text('Hello, Telegram Web App!'),
),
),
);
}
}