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

如何在Flutter中实现二维码跳转至APP内部隐藏页面?

解决扫码跳转APP专属隐藏页面的问题

不用纠结qr_code_scanner了,换「深度链接+权限校验」的方案完全能满足你的需求——既实现扫码直接跳APP内页面,又能限制只有扫码链接才能访问。

一、核心逻辑拆解

  • 用深度链接(Deep Link) 作为扫码入口,直接唤起APP并定位到目标页面
  • 给隐藏页面加专属校验,只有携带特定参数的链接请求才能进入,彻底堵死其他访问途径

二、配置深度链接(以Flutter为例,安卓/iOS通用思路)

Android端(修改AndroidManifest.xml)

在你APP的主Activity标签里加个intent-filter,处理自定义的scheme:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <!-- 自定义scheme,比如myapp://secret-page -->
    <data android:scheme="myapp" android:host="secret-page" />
</intent-filter>

iOS端(修改Info.plist)

添加URL Types,设置自定义scheme:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myapp</string>
        </array>
        <key>CFBundleURLName</key>
        <string>secret-page</string>
    </dict>
</array>

三、扫码逻辑换个库实现

qr_code_scanner不好用就换flutter_barcode_scanner,扫码后直接解析链接并跳转:

import 'package:flutter_barcode_scanner/flutter_barcode_scanner.dart';
import 'package:url_launcher/url_launcher.dart';

Future<void> scanAndJump() async {
  // 扫码获取链接
  String scanResult = await FlutterBarcodeScanner.scanBarcode(
      "#000000", "取消", false, ScanMode.QR);
  // 只处理我们的专属深度链接
  if (scanResult.startsWith("myapp://secret-page?auth=")) {
    await launchUrl(Uri.parse(scanResult));
  }
}

四、给隐藏页面加访问锁

在隐藏页面的初始化阶段做校验,只有携带有效校验参数的请求才能留下,否则直接踢回首页:

class SecretPage extends StatefulWidget {
  final String? authCode;
  const SecretPage({super.key, this.authCode});

  @override
  State<SecretPage> createState() => _SecretPageState();
}

class _SecretPageState extends State<SecretPage> {
  @override
  void initState() {
    super.initState();
    _verifyAccess();
  }

  void _verifyAccess() {
    // 这里用你自己的校验规则,比如和后端接口比对,或者本地存的唯一密钥
    const validAuthCode = "SCAN_ONLY_123";
    if (widget.authCode != validAuthCode) {
      // 无权限直接跳转首页
      Navigator.pushReplacementNamed(context, '/home');
      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text("你没有访问权限")),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("专属隐藏页面")),
      body: const Center(child: Text("只有扫码进来才能看到这里")),
    );
  }
}

五、生成专属二维码

把带有效校验参数的深度链接(比如myapp://secret-page?auth=SCAN_ONLY_123)生成二维码,这样只有扫这个码的链接才能通过校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:15:38