在 flutter 应用程序中显示有效载荷时的黑色背景
Black background when showing payload in flutter app
我为我的应用程序使用 flutter_local_notifications 包。当我点击通知时,负载以黑色背景出现,我必须多次按 return 按钮才能看到应用程序的页面。每次按下按钮时背景都会变亮。有什么问题?
class _StatefulListTileState extends State<StatefulListTile> {
Color _iconColor1 = Colors.white;
Color _iconColor2 = Colors.yellow;
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin;
@override
initState() {
super.initState();
var initializationSettingsAndroid =
new AndroidInitializationSettings('@mipmap/ic_launcher');
var initializationSettingsIOS = new IOSInitializationSettings();
var initializationSettings = new InitializationSettings(
initializationSettingsAndroid, initializationSettingsIOS);
flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: onSelectNotification);
}
@override
Widget build(BuildContext context) {
return new Container(
child: new FutureBuilder(
future: saveColors(),
builder: (context, snapshot) {
return new ListTile(
title: new Text(widget.title),
leading: new IconButton(
icon: Icon(Icons.star, color: snapshot.data.contains('${widget.id}') ? _iconColor2: _iconColor1),
onPressed: () {
setState(() {
if (snapshot.data.contains('${widget.id}')) {
_iconColor2 = Colors.white;
_iconColor1 = Colors.white;
flutterLocalNotificationsPlugin.cancel(widget.id);
snapshot.data.remove('${widget.id}');
} else {
_iconColor1 = Colors.yellow;
_iconColor2 = Colors.yellow;
_showNotification(widget.id, widget.day, widget.clock);
snapshot.data.add('${widget.id}');
}});},),);}));}
Future onSelectNotification(String payload) async {
showDialog(
context: context,
builder: (_) {
return new AlertDialog(...
);},);}
Future _showNotification(id, day, clock) async {
//determine hour, minute and d
var time = new Time(hour, minute, 0);
var androidPlatformChannelSpecifics =
new AndroidNotificationDetails('show weekly channel id',
'show weekly channel name', 'show weekly description');
var iOSPlatformChannelSpecifics =
new IOSNotificationDetails();
var platformChannelSpecifics = new NotificationDetails(
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.showWeeklyAtDayAndTime(
id,
widget.title,
widget.team,
d,
time,
platformChannelSpecifics,
payload: widget.title + '\n' + widget.team + '\n' + widget.channel);
}
}
如果您能给我任何帮助,我们将不胜感激。
确保您在代码中只执行一次此操作
@override
initState() {
super.initState();
var initializationSettingsAndroid =
new AndroidInitializationSettings('@mipmap/ic_launcher');
var initializationSettingsIOS = new IOSInitializationSettings();
var initializationSettings = new InitializationSettings(
initializationSettingsAndroid, initializationSettingsIOS);
flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: onSelectNotification);
}
我为我的应用程序使用 flutter_local_notifications 包。当我点击通知时,负载以黑色背景出现,我必须多次按 return 按钮才能看到应用程序的页面。每次按下按钮时背景都会变亮。有什么问题?
class _StatefulListTileState extends State<StatefulListTile> {
Color _iconColor1 = Colors.white;
Color _iconColor2 = Colors.yellow;
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin;
@override
initState() {
super.initState();
var initializationSettingsAndroid =
new AndroidInitializationSettings('@mipmap/ic_launcher');
var initializationSettingsIOS = new IOSInitializationSettings();
var initializationSettings = new InitializationSettings(
initializationSettingsAndroid, initializationSettingsIOS);
flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: onSelectNotification);
}
@override
Widget build(BuildContext context) {
return new Container(
child: new FutureBuilder(
future: saveColors(),
builder: (context, snapshot) {
return new ListTile(
title: new Text(widget.title),
leading: new IconButton(
icon: Icon(Icons.star, color: snapshot.data.contains('${widget.id}') ? _iconColor2: _iconColor1),
onPressed: () {
setState(() {
if (snapshot.data.contains('${widget.id}')) {
_iconColor2 = Colors.white;
_iconColor1 = Colors.white;
flutterLocalNotificationsPlugin.cancel(widget.id);
snapshot.data.remove('${widget.id}');
} else {
_iconColor1 = Colors.yellow;
_iconColor2 = Colors.yellow;
_showNotification(widget.id, widget.day, widget.clock);
snapshot.data.add('${widget.id}');
}});},),);}));}
Future onSelectNotification(String payload) async {
showDialog(
context: context,
builder: (_) {
return new AlertDialog(...
);},);}
Future _showNotification(id, day, clock) async {
//determine hour, minute and d
var time = new Time(hour, minute, 0);
var androidPlatformChannelSpecifics =
new AndroidNotificationDetails('show weekly channel id',
'show weekly channel name', 'show weekly description');
var iOSPlatformChannelSpecifics =
new IOSNotificationDetails();
var platformChannelSpecifics = new NotificationDetails(
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.showWeeklyAtDayAndTime(
id,
widget.title,
widget.team,
d,
time,
platformChannelSpecifics,
payload: widget.title + '\n' + widget.team + '\n' + widget.channel);
}
}
如果您能给我任何帮助,我们将不胜感激。
确保您在代码中只执行一次此操作
@override
initState() {
super.initState();
var initializationSettingsAndroid =
new AndroidInitializationSettings('@mipmap/ic_launcher');
var initializationSettingsIOS = new IOSInitializationSettings();
var initializationSettings = new InitializationSettings(
initializationSettingsAndroid, initializationSettingsIOS);
flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: onSelectNotification);
}