play_age_signals 0.0.1
play_age_signals: ^0.0.1 copied to clipboard
Flutter library to interact with Google Play Age Signals
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:play_age_signals/play_age_signals.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _playAgeSignalsPlugin = PlayAgeSignals();
String _result = 'Waiting for action...';
bool _isTestMode = false;
@override
void initState() {
super.initState();
}
Future<void> _checkAgeSignals() async {
String resultText;
try {
final result = await _playAgeSignalsPlugin.checkAgeSignals();
resultText = 'Status: ${result.status}\n'
'Age Range: ${result.ageLower} - ${result.ageUpper}\n'
'Approval Date: ${result.mostRecentApprovalDate}';
} on PlatformException catch (e) {
resultText = 'Error: ${e.message}';
}
if (!mounted) return;
setState(() {
_result = resultText;
});
}
Future<void> _toggleTestMode(bool enabled) async {
try {
await _playAgeSignalsPlugin.setTestMode(enabled);
setState(() {
_isTestMode = enabled;
_result = 'Test Mode: $enabled';
});
} on PlatformException catch (e) {
setState(() {
_result = 'Error setting test mode: ${e.message}';
});
}
}
Future<void> _setMockResult(AgeSignalsVerificationStatus status,
{int? lower, int? upper}) async {
try {
await _playAgeSignalsPlugin.setMockResult(AgeSignalsResult(
status: status, ageLower: lower, ageUpper: upper));
setState(() {
_result = 'Mock set to: $status ($lower-$upper)';
});
} on PlatformException catch (e) {
setState(() {
_result = 'Error setting mock: ${e.message}';
});
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Age Signals Example'),
),
body: Center(
child: SingleChildScrollView(
padding: const EdgeInsets.all(16),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
_result,
textAlign: TextAlign.center,
style: const TextStyle(
fontSize: 16, fontWeight: FontWeight.bold),
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: _checkAgeSignals,
child: const Text('Check Age Signals'),
),
const SizedBox(height: 20),
const Divider(),
SwitchListTile(
title: const Text('Test Mode'),
value: _isTestMode,
onChanged: _toggleTestMode,
),
const Text('Mock Scenarios (Test Mode Only):'),
Wrap(
spacing: 8,
runSpacing: 8,
alignment: WrapAlignment.center,
children: [
ElevatedButton(
onPressed: _isTestMode
? () => _setMockResult(
AgeSignalsVerificationStatus.verified)
: null,
child: const Text('Verified'),
),
ElevatedButton(
onPressed: _isTestMode
? () => _setMockResult(
AgeSignalsVerificationStatus.supervised,
lower: 13,
upper: 17)
: null,
child: const Text('Supervised (13-17)'),
),
ElevatedButton(
onPressed: _isTestMode
? () => _setMockResult(AgeSignalsVerificationStatus
.supervisedApprovalPending, lower: 10, upper: 12)
: null,
child: const Text('Pending (10-12)'),
),
ElevatedButton(
onPressed: _isTestMode
? () => _setMockResult(
AgeSignalsVerificationStatus.unknown)
: null,
child: const Text('Unknown'),
),
],
),
],
),
),
),
),
);
}
}