appunion_flutter 0.0.1
appunion_flutter: ^0.0.1 copied to clipboard
AppUnion Flutter SDK,应用互相推荐联盟客户端。
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('打开推荐'),
),
],
),
),
);
}
}