Flutter Cookie同意插件cookie_consent的使用

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

Flutter Cookie同意插件cookie_consent的使用

在您的Flutter应用或网站中展示一个Cookie同意横幅。

功能

  • 可以选择不同的样式来展示同意横幅。
  • 用户可以自定义他们接受的类别。

开始使用

TODO: 列出前提条件并提供或指向有关如何开始使用该包的信息。

使用方法

最小所需的输入是一个BuildContext和一个Cookie政策URL:

showCookieConsent(
  context,
  cookiePolicyUrl: Uri.parse('https://example.com/cookies'),
);

有几种布局可供选择:

CookieConsentLayout
cupertinoBottomSheet
cupertinoAlert
floatingBottomSheet
materialAlert
materialBottomSheet
materialSnackBar

例如,使用Material SnackBar布局:

showCookieConsent(
  context,
  layout: CookieConsentLayout.materialSnackBar,
  cookiePolicyUrl: Uri.parse('https://example.com/cookies'),
);

我们建议您提供自己的同意文本和类别,以便更好地适应您的应用:

showCookieConsent(
  context,
  cookiePolicyUrl: Uri.parse('https://example.com/cookies'),
  consent: '点击[接受所有Cookie],即表示您同意我们可以将Cookie存储在您的设备上,并根据我们的[Cookie政策](https://example.com/cookies)披露信息。',
  categories: [
    CookeConsentCategory(
      id: 'necessary',
      name: '严格必要的Cookies',
      description: '必要Cookies是启用此站点基本功能所必需的,例如提供安全登录或调整您的同意偏好。这些Cookies不会存储任何可识别的个人信息。',
    ),
    CookeConsentCategory(
      id: 'advertising',
      name: '广告Cookies',
      description: '广告Cookies用于根据您之前访问过的页面向您提供定制化广告,并分析广告活动的有效性。',
    ),
  ],
);

示例代码

以下是在example/lib/main.dart中提供的完整示例代码:

import 'package:cookie_consent/cookie_consent.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

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

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

  // 这个小部件是你的应用程序的根。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'Cookie Consent Demo',
      home: Scaffold(body: DemoPage()),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    final size = MediaQuery.of(context).size;
    final buttonPadding =
        EdgeInsets.symmetric(horizontal: size.width / 5.0, vertical: 10.0);
    return ListView(
      children: [
        Center(
          child: Padding(
            padding: const EdgeInsets.all(22.0),
            child: Text('Cookie Consent Demo',
                style: Theme.of(context).textTheme.headline3),
          ),
        ),
        Padding(
          padding: buttonPadding,
          child: CupertinoButton.filled(
            onPressed: () => showCookieConsent(
              context,
              layout: CookieConsentLayout.cupertinoAlert,
              cookiePolicyUrl: Uri.parse('https://example.com/cookies'),
            ),
            child: const Text('Cupertino alert'),
          ),
        ),
        Padding(
          padding: buttonPadding,
          child: CupertinoButton.filled(
            onPressed: () => showCookieConsent(
              context,
              layout: CookieConsentLayout.cupertinoBottomSheet,
              cookiePolicyUrl: Uri.parse('https://example.com/cookies'),
            ),
            child: const Text('Cupertino bottom sheet'),
          ),
        ),
        Padding(
          padding: buttonPadding,
          child: CupertinoButton.filled(
            onPressed: () => showCookieConsent(
              context,
              cookiePolicyUrl: Uri.parse('https://example.com/cookies'),
            ),
            child: const Text('Floating bottom sheet'),
          ),
        ),
        Padding(
          padding: buttonPadding,
          child: CupertinoButton.filled(
            onPressed: () => showCookieConsent(
              context,
              layout: CookieConsentLayout.materialAlert,
              cookiePolicyUrl: Uri.parse('https://example.com/cookies'),
            ),
            child: const Text('Material alert'),
          ),
        ),
        Padding(
          padding: buttonPadding,
          child: CupertinoButton.filled(
            onPressed: () => showCookieConsent(
              context,
              layout: CookieConsentLayout.materialBottomSheet,
              cookiePolicyUrl: Uri.parse('https://example.com/cookies'),
            ),
            child: const Text('Material bottom sheet'),
          ),
        ),
        Padding(
          padding: buttonPadding,
          child: CupertinoButton.filled(
            onPressed: () => showCookieConsent(
              context,
              layout: CookieConsentLayout.materialSnackBar,
              cookiePolicyUrl: Uri.parse('https://example.com/cookies'),
            ),
            child: const Text('Material snack bar'),
          ),
        ),
      ],
    );
  }
}

更多关于Flutter Cookie同意插件cookie_consent的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Cookie同意插件cookie_consent的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,关于在Flutter项目中使用cookie_consent插件来实现Cookie同意功能,下面是一个简单的代码案例,展示了如何集成和使用该插件。

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

dependencies:
  flutter:
    sdk: flutter
  cookie_consent: ^3.0.3  # 请检查最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter应用中,你可以按照以下步骤实现Cookie同意功能:

  1. 导入必要的包
import 'package:flutter/material.dart';
import 'package:cookie_consent/cookie_consent.dart';
  1. 初始化Cookie同意对话框

在你的主应用入口(通常是main.dart)中,你可以初始化CookieConsent对话框。

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Cookie Consent Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: CookieConsentWrapper(
        child: MyHomePage(),
        builder: (context, accept) {
          return CookieConsent(
            content: Text(
              'This website uses cookies to ensure you get the best experience on our website.',
              style: TextStyle(fontSize: 16),
            ),
            acceptButtonText: 'Accept',
            declineButtonText: 'Decline',
            onAccept: () {
              // 用户点击接受按钮时的逻辑
              print('Cookies accepted');
              // 这里可以添加保存用户选择的逻辑,比如使用SharedPreferences
            },
            onDecline: () {
              // 用户点击拒绝按钮时的逻辑
              print('Cookies declined');
              // 这里可以添加相应的处理逻辑
            },
            showDialogOnInit: true, // 应用启动时是否立即显示对话框
            declineButtonColor: Colors.red,
            acceptButtonColor: Colors.green,
            location: CookieConsentLocation.bottom,
            cookieDuration: Duration(days: 365), // Cookie有效时间
            design: CookieConsentDesign(
              borderRadius: BorderRadius.circular(10),
              backgroundColor: Colors.white,
              contentPadding: EdgeInsets.all(20),
              buttonPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 10),
            ),
          );
        },
      ),
    );
  }
}
  1. 创建主页面

这里是一个简单的MyHomePage实现,你可以根据需要自定义。

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Cookie Consent Example'),
      ),
      body: Center(
        child: Text('Check the console for Cookie acceptance status.'),
      ),
    );
  }
}
  1. 运行应用

现在,你可以运行你的Flutter应用。在启动时,你应该会看到Cookie同意对话框。点击“Accept”或“Decline”按钮后,控制台将打印相应的消息。

这个代码案例展示了如何在Flutter应用中使用cookie_consent插件来实现Cookie同意功能。你可以根据需要进一步自定义对话框的样式和行为。

回到顶部