fix:第一轮跑
This commit is contained in:
1 parent
e834ec7586
commit
33235f450b
56 files changed
+4357
-210
No files matched your search
@@ -1,16 +1,80 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:shadcn_ui/shadcn_ui.dart';
|
||||
|
||||
import '../../../common/domain/money.dart';
|
||||
import '../../../common/push/notification_permission.dart';
|
||||
import '../../../common/push/umeng_push_service.dart';
|
||||
import '../../../common/widgets/adaptive.dart';
|
||||
import '../../ads/application/startup_ad_service.dart';
|
||||
import '../../ads/presentation/home_ad_banner.dart';
|
||||
import '../../settings/application/update_controller.dart';
|
||||
import '../../settings/application/update_service.dart';
|
||||
import '../application/asset_portfolio_controller.dart';
|
||||
|
||||
class AssetsPage extends ConsumerWidget {
|
||||
class AssetsPage extends ConsumerStatefulWidget {
|
||||
const AssetsPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
ConsumerState<AssetsPage> createState() => _AssetsPageState();
|
||||
}
|
||||
|
||||
class _AssetsPageState extends ConsumerState<AssetsPage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
unawaited(_completeColdLaunch());
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> _completeColdLaunch() async {
|
||||
if (!mounted) return;
|
||||
await StartupAdService.showIfAvailable(context, ref);
|
||||
if (!mounted) return;
|
||||
await _checkColdLaunchUpgrade();
|
||||
if (mounted) await _requestNotificationPermission();
|
||||
}
|
||||
|
||||
Future<void> _requestNotificationPermission() async {
|
||||
if (!mounted) return;
|
||||
if (defaultTargetPlatform == TargetPlatform.iOS) {
|
||||
// 研听的 U-Push register 会请求 APNs;这里再以系统 API 兜底,避免
|
||||
// 旧安装已跳过欢迎页时永远不触发首次通知授权。iOS 不展示顶部说明。
|
||||
await NotificationPermission.requestFromSettings();
|
||||
} else {
|
||||
await NotificationPermission.requestIfNeeded(context);
|
||||
}
|
||||
await UmengPushService.refreshDeviceToken();
|
||||
}
|
||||
|
||||
Future<void> _checkColdLaunchUpgrade() async {
|
||||
if (!mounted ||
|
||||
!UpdateService.isSupported ||
|
||||
!ref.read(updateSessionGateProvider).takeColdLaunchSlot()) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
final upgrade = await ref
|
||||
.read(updateControllerProvider.notifier)
|
||||
.checkUpgrade();
|
||||
if (!mounted) return;
|
||||
await UpdateService.showIfNeeded(
|
||||
context,
|
||||
ref,
|
||||
upgrade,
|
||||
source: UpgradeCheckSource.automatic,
|
||||
);
|
||||
} catch (_) {
|
||||
// Automatic update checks must never block the assets home page.
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final summary = ref.watch(assetPortfolioControllerProvider);
|
||||
final cs = ShadTheme.of(context).colorScheme;
|
||||
return SafeArea(
|
||||
@@ -71,6 +135,8 @@ class AssetsPage extends ConsumerWidget {
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
const HomeAdBanner(),
|
||||
const SizedBox(height: 12),
|
||||
_Card(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
|
||||
Reference in new issue
Block a user