Flutter加速度传感器插件flutter_adcel的使用

Flutter加速度传感器插件flutter_adcel的使用

flutter_adcel 是官方为 Flutter 提供的用于 Android 和 iOS 的 AdCel SDK 插件。

安装

  1. 在你的项目 pubspec.yaml 文件中添加以下依赖:
dependencies:
  flutter_adcel: "<LATEST_VERSION>"
  1. 运行以下命令来安装插件:
flutter pub get

示例代码

以下是完整的示例代码,展示了如何在 Flutter 应用程序中使用 flutter_adcel 插件。

import 'dart:io';

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

import 'package:flutter_adcel/flutter_adcel.dart';

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

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with AdCelInterstitialListener, AdCelBannerListener {
  bool _isButtonDisabled = true;

  AdCelBannerController? _adCelBannerController;

  [@override](/user/override)
  void initState() {
    super.initState();
    initAdCel();
  }

  // 初始化 AdCel SDK
  Future<void> initAdCel() async {
    String key = '';
    if (Platform.isAndroid) {
      key = '89fdf849-b5bc-49d0-ad51-0b790e777ae4:fc7094bb-3ca7-4450-9a7e-320b6b4f4e42';
    } else if (Platform.isIOS) {
      key = 'ab3d155f-7703-4289-8372-848737c2b879:d949782d-cb74-4501-8f38-613f89a579b9';
    }
    AdCel.setInterstitialListener(this);
    AdCel.setLogging(true);
    // AdCel.setTestMode(true);
    AdCel.setUserConsent(true);
    AdCel.requestTrackingAuthorization();
    AdCel.init(key, [
      AdCelAdType.BANNER,
      AdCelAdType.IMAGE,
      AdCelAdType.VIDEO,
      AdCelAdType.INTERSTITIAL,
      AdCelAdType.REWARDED
    ]);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Column(
          children: [
            MaterialButton(
              child: Text('显示广告'),
              onPressed: _isButtonDisabled
                  ? null
                  : () {
                      AdCel.showInterstitialAdZone(AdCelAdType.REWARDED, "菜单");
                    },
            ),
            Container(
              height: 50,
              color: Colors.blue[700],
              child: AdCelBanner(
                adSize: AdCelBanner.SIZE_320x50,
                listener: this,
                onBannerCreated: (AdCelBannerController controller) {
                  print('MAIN.DART >>>> Load Banner Ad with ID = ${controller.getId}');
                },
              ),
            ),
            Container(
              height: 250,
              color: Colors.green[700],
              child: AdCelBanner(
                adSize: AdCelBanner.SIZE_300x250,
                listener: this,
                onBannerCreated: (AdCelBannerController controller) {
                  print('MAIN.DART >>>> Load Banner Ad with ID = ${controller.getId}');

                  _adCelBannerController = controller;
                },
              ),
            ),
          ],
        ),
      ),
    );
  }

  // 插播广告回调方法
  [@override](/user/override)
  void onFirstInterstitialLoad(String adType, String provider) {
    print('MAIN.DART >>>> onFirstInterstitialLoad: $adType, $provider');
    setState(() {
      _isButtonDisabled = false;
    });
  }

  [@override](/user/override)
  void onInterstitialClicked(String adType, String provider) {
    print('MAIN.DART >>>> onInterstitialClicked: $adType, $provider');
  }

  [@override](/user/override)
  void onInterstitialDidDisappear(String adType, String provider) {
    print('MAIN.DART >>>> onInterstitialDidDisappear: $adType, $provider');
  }

  [@override](/user/override)
  void onInterstitialFailLoad(String adType, String error) {
    print('MAIN.DART >>>> onInterstitialFailLoad: $adType, $error');
  }

  [@override](/user/override)
  void onInterstitialFailedToShow(String adType) {
    print('MAIN.DART >>>> onInterstitialFailedToShow: $adType');
  }

  [@override](/user/override)
  void onInterstitialWillAppear(String adType, String provider) {
    print('MAIN.DART >>>> onInterstitialWillAppear: $adType, $provider');
  }

  [@override](/user/override)
  void onRewardedCompleted(String adProvider, String currencyName, String currencyValue) {
    print('MAIN.DART >>>> onRewardedCompleted: $adProvider, $currencyName, $currencyValue');
  }

  // 横幅广告回调方法
  [@override](/user/override)
  void onBannerClicked() {
    print('MAIN.DART >>>> onBannerClicked');
  }

  [@override](/user/override)
  void onBannerAllProvidersFailedToLoad() {
    print('MAIN.DART >>>> onBannerAllProvidersFailedToLoad');

    _adCelBannerController?.setRefreshInterval(0);
    _adCelBannerController?.loadNextAd();
  }

  [@override](/user/override)
  void onBannerFailedToLoad() {
    print('MAIN.DART >>>> onBannerFailedToLoad');
  }

  [@override](/user/override)
  void onBannerFailedToLoadProvider(String provider) {
    print('MAIN.DART >>>> onBannerFailedToLoadProvider: $provider');
  }

  [@override](/user/override)
  void onBannerLoad() {
    print('MAIN.DART >>>> onBannerLoad');
  }
}

更多关于Flutter加速度传感器插件flutter_adcel的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter加速度传感器插件flutter_adcel的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中使用加速度传感器可以通过插件 flutter_accelerometer 来实现。以下是如何使用 flutter_accelerometer 插件的步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 flutter_accelerometer 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_accelerometer: ^0.1.0

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

2. 导入插件

在需要使用加速度传感器的 Dart 文件中导入插件:

import 'package:flutter_accelerometer/flutter_accelerometer.dart';

3. 监听加速度数据

你可以通过 FlutterAccelerometer.accelerometerStream 来监听加速度传感器的数据。以下是一个简单的示例:

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

class AccelerometerScreen extends StatefulWidget {
  [@override](/user/override)
  _AccelerometerScreenState createState() => _AccelerometerScreenState();
}

class _AccelerometerScreenState extends State<AccelerometerScreen> {
  AccelerometerEvent? _accelerometerEvent;

  [@override](/user/override)
  void initState() {
    super.initState();
    FlutterAccelerometer.accelerometerStream.listen((AccelerometerEvent event) {
      setState(() {
        _accelerometerEvent = event;
      });
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('加速度传感器示例'),
      ),
      body: Center(
        child: _accelerometerEvent == null
            ? Text('等待加速度数据...')
            : Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Text('X: ${_accelerometerEvent!.x.toStringAsFixed(2)}'),
                  Text('Y: ${_accelerometerEvent!.y.toStringAsFixed(2)}'),
                  Text('Z: ${_accelerometerEvent!.z.toStringAsFixed(2)}'),
                ],
              ),
      ),
    );
  }
}
回到顶部