Flutter浏览器启动插件chrome_launcher的使用

发布于 1周前 作者 sinazl 来自 Flutter

chrome_launcher #

Android Flutter 插件用于强制使用 Google Chrome 打开一个 URL。

背景(为什么?)#

一些预装的浏览器无法执行我指定的深层链接/应用链接,但 Chrome 可以。为了强制使用 Chrome,我制作了这个插件。

开始使用#

非常简单。

在 Android 设备上使用 Google Chrome 打开一个 URL。还提供了检查 Chrome for Android 是否已安装的实用方法。

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:chrome_launcher/chrome_launcher.dart';

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

class ChromeLauncherExampleApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( color: Colors.blue, home: MainPage(), ); } }

class MainPage extends StatefulWidget { @override _MainPageState createState() => _MainPageState(); }

class _MainPageState extends State<MainPage> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(“Chrome Launcher 示例”), ), body: Center( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 24.0,), child: Column( mainAxisSize: MainAxisSize.min, children: [ SizedBox( width: double.infinity, child: TextField( controller: _urlController, decoration: InputDecoration( labelText: “URL”, ), keyboardType: TextInputType.url, ), ), Padding( padding: const EdgeInsets.only(top: 24.0,), child: ElevatedButton( onPressed: _launchWithChrome, child: Text(“用 Chrome 启动”), ), ), ], ), ), ), ); }

@override void dispose() { _urlController.dispose(); super.dispose(); }

final TextEditingController _urlController = TextEditingController();

void _launchWithChrome() { final chromeLauncher = ChromeLauncher(); chromeLauncher.hasChromeInstalled().then((hasChromeInstalled,) { if (!hasChromeInstalled) { showDialog( context: context, builder: (context) => AlertDialog( title: Text(“无法继续”), content: Text(“您的设备没有安装启用 Chrome”), actions: [ TextButton( onPressed: () => Navigator.of(context,).pop(), child: Text(“关闭”), ), ], ), ); return; } final data = _urlController.text;

  chromeLauncher.isChromeDefaultBrowser().then((isDefaultBrowser) {
    debugPrint("isDefaultBrowser: $isDefaultBrowser",);
  },).catchError((e) {
    debugPrint("isDefaultBrowser: $e",);
  },);

  chromeLauncher.launchWithChrome(data,).catchError((e) {
    debugPrint(e.toString(),);
    showDialog(
      context: context,
      builder: (context) =&gt; AlertDialog(
        title: Text("未能用 Chrome 启动"),
        content: Text(e.toString(),),
        actions: [
          TextButton(
            onPressed: () =&gt; Navigator.of(context,).pop(),
            child: Text("关闭"),
          ),
        ],
      ),
    );
  },);
},);

} }


更多关于Flutter浏览器启动插件chrome_launcher的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter浏览器启动插件chrome_launcher的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用 chrome_launcher 插件在 Flutter 应用中启动 Chrome 浏览器的示例代码。这个示例将展示如何在 Flutter 应用中打开一个指定的 URL。

首先,确保你已经在 pubspec.yaml 文件中添加了 chrome_launcher 依赖:

dependencies:
  flutter:
    sdk: flutter
  chrome_launcher: ^0.2.0  # 请检查最新版本号

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

接下来,在你的 Flutter 应用中使用 chrome_launcher 插件。以下是一个完整的示例代码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Chrome Launcher Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chrome Launcher Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _launchChrome,
          child: Text('Open Chrome'),
        ),
      ),
    );
  }

  Future<void> _launchChrome() async {
    const url = 'https://flutter.dev';  // 替换为你想要打开的URL
    try {
      // 尝试在Chrome中打开URL
      bool success = await launchChrome(url);
      if (success) {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('URL opened in Chrome')),
        );
      } else {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('Failed to open URL in Chrome')),
        );
      }
    } catch (e) {
      // 捕获任何异常并显示错误信息
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Error: ${e.message}')),
      );
    }
  }
}

在这个示例中,我们创建了一个简单的 Flutter 应用,包含一个按钮。当用户点击按钮时,将尝试在 Chrome 浏览器中打开指定的 URL(在这个例子中是 https://flutter.dev)。

请注意以下几点:

  1. launchChrome 函数返回一个布尔值,表示是否成功打开 URL。
  2. 使用 ScaffoldMessenger.of(context).showSnackBar 来显示操作结果或错误信息。
  3. 请确保设备上已安装 Chrome 浏览器,否则 launchChrome 函数可能会失败。

这个示例代码提供了一个基础框架,你可以根据需要进一步扩展和修改。

回到顶部