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

Flutter实现APP启动时自动打开URL(无需点击事件)

在Flutter应用启动时自动打开指定URL

要实现应用启动后无需点击事件自动打开URL,可按以下步骤修改代码:

1. 添加依赖

首先在pubspec.yaml中引入url_launcher包(Flutter官方推荐的URL跳转工具):

dependencies:
  flutter:
    sdk: flutter
  url_launcher: ^6.2.5 # 建议使用最新版本

执行flutter pub get完成依赖安装。

2. 实现自动打开逻辑

方式一:页面初始化时触发(推荐)

在主页面的initState方法中调用URL打开逻辑,确保Flutter框架初始化完成后执行:

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

void main() => runApp(const MyApp());

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  void initState() {
    super.initState();
    // 页面初始化后自动执行URL打开操作
    _launchTargetUrl();
  }

  Future<void> _launchTargetUrl() async {
    const targetUrl = 'https://your-target-url.com'; // 替换为你的目标URL
    final uri = Uri.parse(targetUrl);
    if (await canLaunchUrl(uri)) {
      // 用外部浏览器打开URL,可根据需求修改LaunchMode
      await launchUrl(uri, mode: LaunchMode.externalApplication);
    } else {
      debugPrint('无法打开指定URL:$targetUrl');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('自动打开URL示例')),
      body: const Center(child: Text('应用启动后将自动跳转至指定URL')),
    );
  }
}

方式二:应用启动时直接触发

如果需要在UI渲染前就打开URL,可在main函数中执行(需先初始化Flutter绑定):

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

void main() async {
  // 初始化Flutter绑定
  WidgetsFlutterBinding.ensureInitialized();
  
  const targetUrl = 'https://your-target-url.com';
  final uri = Uri.parse(targetUrl);
  if (await canLaunchUrl(uri)) {
    await launchUrl(uri, mode: LaunchMode.externalApplication);
  } else {
    debugPrint('无法打开指定URL:$targetUrl');
  }

  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: Scaffold(body: Center(child: Text('应用启动中...'))),
    );
  }
}

3. 配置平台权限

  • Android:在android/app/src/main/AndroidManifest.xml中添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
  • iOS:在ios/Runner/Info.plist中添加URL白名单:
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>https</string>
  <string>http</string>
</array>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:05:21