appunion_flutter 0.0.1 copy "appunion_flutter: ^0.0.1" to clipboard
appunion_flutter: ^0.0.1 copied to clipboard

PlatformAndroid

AppUnion Flutter SDK,应用互相推荐联盟客户端。

example/lib/main.dart

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

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await AppUnion.instance.initialize(
    const AppUnionConfig(
      appId: '86ff5f94-2db3-4ef0-9976-b068fbff0754',
      enabledPlatforms: {
        AppUnionPlatform.android,
        AppUnionPlatform.harmony,
      },
      debug: true,
    ),
  );
  runApp(const AppUnionExampleApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'AppUnion Example',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: const Color(0xFF6270FF)),
        useMaterial3: true,
      ),
      home: const _HomePage(),
    );
  }
}

class _HomePage extends StatefulWidget {
  const _HomePage();

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

class _HomePageState extends State<_HomePage> {
  bool? _canShow;
  String _status = '检查中…';

  @override
  void initState() {
    super.initState();
    _refreshStatus();
  }

  Future<void> _refreshStatus() async {
    final requestPlatform = AppUnionPlatform.resolveRequestPlatform(
      AppUnion.instance.config.enabledPlatforms,
      debug: AppUnion.instance.config.debug,
    );
    if (requestPlatform == null) {
      setState(() {
        _canShow = false;
        _status = AppUnionPlatform.isRuntimeBlocked()
            ? '仅支持 Android / 鸿蒙,当前端不会请求接口'
            : '当前端未配置,不会请求接口';
      });
      return;
    }
    if (AppUnion.instance.isLocallyDisabled) {
      setState(() {
        _canShow = false;
        _status = '用户已关闭展示';
      });
      return;
    }
    try {
      final info = await AppUnion.instance.fetchInfo();
      if (!mounted) {
        return;
      }
      if (info == null || info.hidden) {
        setState(() {
          _canShow = false;
          _status = info?.hidden == true
              ? 'hidden: true,已关闭展示'
              : '当前端不可用';
        });
        return;
      }
      setState(() {
        _canShow = true;
        _status = '${info.name} · 可以展示推荐';
      });
    } catch (error) {
      if (!mounted) {
        return;
      }
      setState(() {
        _canShow = false;
        _status = 'info 请求失败:$error';
      });
    }
  }

  String _platformLabel() {
    final current = AppUnionPlatform.current()?.apiValue ?? 'mac/desktop';
    final request = AppUnionPlatform.resolveRequestPlatform(
      AppUnion.instance.config.enabledPlatforms,
      debug: AppUnion.instance.config.debug,
    );
    if (request != null && request.apiValue != current) {
      return '当前端:$current · 调试按 ${request.apiValue} 请求';
    }
    return '当前端:$current';
  }

  Future<void> _open() async {
    await AppUnion.instance.show(
      context,
      onDisabled: _refreshStatus,
    );
    if (mounted) {
      await _refreshStatus();
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('AppUnion')),
      body: Padding(
        padding: const EdgeInsets.all(24),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            Text(
              _platformLabel(),
              style: Theme.of(context).textTheme.titleMedium,
            ),
            const SizedBox(height: 8),
            Text(_status),
            const SizedBox(height: 24),
            FilledButton(
              onPressed: _canShow == true ? _open : null,
              child: const Text('打开推荐'),
            ),
          ],
        ),
      ),
    );
  }
}
0
likes
130
points
87
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

AppUnion Flutter SDK,应用互相推荐联盟客户端。

Homepage
Repository (GitHub)
View/report issues

Topics

#android #harmonyos #recommendation

License

MIT (license)

Dependencies

cached_network_image, dio, flutter, shared_preferences, url_launcher, uuid, visibility_detector

More

Packages that depend on appunion_flutter