我正在使用提供程序来进行 Flutter 的状态管理。我正在制作异步等待函数,并警告不要跨异步间隙使用 BuildContexts。因此,我尝试输入“if(!mounted)”代码,但收到警告,未定义名称“mounted”。
我该如何解决这个问题?谢谢你!
提供商代码
signIn(BuildContext context) async{
try {
final navigator = Navigator.of(context);
!isSignupValid ? isSignupValid = true : null;
await authentication.signInWithEmailAndPassword(
email: userEmail.trim(), password: userPassword.trim()
);
navigator.pop();
} on FirebaseAuthException catch (errorCode) {
isSignupValid = false;
print('isSignupValid : $isSignupValid');
print('SignIn FirebaseAuthException : $errorCode');
ScaffoldMessenger.of(context).showSnackBar(
returnSnackBar(context, errorCode)
);
}
await Future.delayed(const Duration(seconds: 0));
if (!mounted) return;
context.watch<ProfileData>().profileImage = null;
notifyListeners();
}
Run Code Online (Sandbox Code Playgroud) 我用png文件制作了本地通知图标。然而,在android中,图标看起来是透明的。在ios应用程序中看起来不错。如何将原始图标图像显示为通知图标?
通知代码
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
// import 'package:timezone/data/latest_all.dart' as tz;
// import 'package:timezone/timezone.dart' as tz;
final notifications = FlutterLocalNotificationsPlugin();
initNotification() async {
var androidSetting = const AndroidInitializationSettings('ic_launcher');
var iosSetting = const IOSInitializationSettings(
requestAlertPermission: true,
requestBadgePermission: true,
requestSoundPermission: true,
);
var initializationSettings = InitializationSettings(
android: androidSetting,
iOS: iosSetting
);
await notifications.initialize(
initializationSettings,
);
}
showNotification() async {
var androidDetails = const AndroidNotificationDetails(
'ID',
'notification',
priority: Priority.high,
importance: Importance.max,
// color: Color.fromARGB(255, 255, 0, 0),
);
var iosDetails = const IOSNotificationDetails( …Run Code Online (Sandbox Code Playgroud) 我正在使用 flutter 制作移动应用程序,并使用 FCM 制作推送通知。
我正在使用 flutter 权限处理程序包来了解用户在看到通知权限对话框时是否允许通知。
但是,权限处理程序不起作用。无论用户是否允许该权限,权限处理程序总是表示用户拒绝了通知权限。
我尝试使用其他包,但它不起作用。请随时给我一些想法。
这是我使用的代码。
var status = await Permission.notification.status;
developer.log('status : ${status.isDenied}');
Run Code Online (Sandbox Code Playgroud)