错误:在flutter_local_notifications中找不到名为’onSelectNotification’的命名参数

huangapple go评论146阅读模式
英文:

Error: No named parameter with the name 'onSelectNotification' in flutter_local_notifications

问题

我在Flutter中构建了一个[壁纸应用][1],但由于*flutter_local_notifications*出现的错误而被卡住了
[![No named parameter with the name 'onSelectNotification'](https://i.stack.imgur.com/ln7nO.png)](https://i.stack.imgur.com/ln7nO.png)

使用的*flutter_local_notifications*版本:10:0.0

我尝试测试了几个其他版本

代码:


```dart
// 详情页面

import 'dart:convert';
import 'dart:io';
import 'package:awesome_dialog/awesome_dialog.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:open_file/open_file.dart';
import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import 'package:sliding_up_panel/sliding_up_panel.dart';
import 'package:wallpaper/wallpaper.dart';
import 'package:wallpaper_app/blocs/ads_bloc.dart';
import 'package:wallpaper_app/blocs/sign_in_bloc.dart';
import 'package:wallpaper_app/models/content_model.dart';
import 'package:wallpaper_app/utils/dialog.dart';
import '../blocs/data_bloc.dart';
import '../blocs/internet_bloc.dart';
import '../blocs/userdata_bloc.dart';
import '../models/config.dart';
import '../models/icon_data.dart';
import '../utils/circular_button.dart';
import 'package:path/path.dart' as path;

class DetailsPage extends StatefulWidget {
  final String heroTag;
  final ContentModel d;

  DetailsPage({Key? key,required this.heroTag,required this.d}): super(key: key);

  @override
  _DetailsPageState createState() => _DetailsPageState();
}

class _DetailsPageState extends State<DetailsPage> {



  final FirebaseFirestore firestore = FirebaseFirestore.instance;
  final _scaffoldKey = GlobalKey<ScaffoldState>();
  String progress = '设置为壁纸或下载';
  bool downloading = false;
  late Stream<String> progressString;
  Icon dropIcon = Icon(Icons.arrow_upward);
  Icon upIcon = Icon(Icons.arrow_upward);
  Icon downIcon = Icon(Icons.arrow_downward);
  PanelController pc = PanelController();
  PermissionStatus? status;

  late FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin;
  final Dio _dio = Dio();
  String? _fileName;

  Future<PermissionStatus> _requestPermissions() async {
    var permission = await Permission.storage.status;

    if (permission != PermissionStatus.granted) {
      await Permission.storage.request().then((value){
        permission = value;
      });
    }

    return permission;
  }


  Future<Directory?> _getDownloadPath() async {
    Directory? directory;
    try {
      if (Platform.isIOS) {
        directory = await getApplicationDocumentsDirectory();
      } else {
        directory = Directory('/storage/emulated/0/Download');
        // 将文件放在全局下载文件夹中,如果出于未知原因它不存在,我们将回退
        // 忽略:避免慢异步I/O
        if (!await directory.exists()) directory = await getExternalStorageDirectory();
      }
    } catch (err) {
      setState(() {
        progress = '获取目录时出现问题。请尝试重新启动应用程序';
      });
    }
    return directory;
  }


  Future<void> _download() async {
    await _getDownloadPath().then((Directory? dir)async{
    if(dir != null){
      final isPermissionStatus = await _requestPermissions();
      final ib = context.read<InternetBloc>();
      await ib.checkInternet();
      if(ib.hasInternet){
      if (isPermissionStatus.isGranted) {
      final savePath = path.join(dir.path, _fileName);
        await _startDownload(savePath);
      } else{
        askOpenSettingsDialog();
      }
      }else{
        setState(() {
          progress = '请检查您的网络连接!';
        });
      }

    }else{
      setState(() {
        progress = '获取目录时出现问题。请尝试重新启动应用程序';
      });
    }});
    
  }


  void _onReceiveProgress(int received, int total) {
    if (total != -1) {
      setState(() {
        progress = "下载中: ${(received / total * 100).toStringAsFixed(0)}" + "%";
      });
    }
  }



  Future<void> _startDownload(String savePath) async {
    Map<String, dynamic> result = {
      'isSuccess': false,
      'filePath': null,
      'error': null,
    };

    try {
      final response = await _dio.download(
        widget.d.imagelUrl!,
        savePath,
        onReceiveProgress: _onReceiveProgress
      );
      result['isSuccess'] = response.statusCode == 200;
      result['filePath'] = savePath;
    } catch (ex) {
      result['error'] = ex.toString();
    } finally {
      setState(() {
        progress = '下载成功';
      });
      openCompleteDialog();
      await _showNotification(result);
    }
  }






  Future<void> _onSelectNotification(String json) async {
    final obj = jsonDecode(json);

    if (obj['isSuccess']) {
      OpenFile.open(obj['filePath']);
    } else {
      showDialog(
        context: context,
        builder: (_) => AlertDialog(
          title: Text('错误'),
          content: Text('${obj['error']}'),
        ),
      );
    }
  }

  Future<void> _showNotification(Map<String, dynamic> downloadStatus) async {
    final String path = downloadStatus['filePath'];
    final BigPictureStyleInformation bigPictureStyleInformation = BigPictureStyleInformation(FilePathAndroidBitmap

<details>
<summary>英文:</summary>

I am building a [wallpaper app][1] in Flutter and got stuck in an error occured due to *flutter_local_notifications*
[![No named parameter with the name &#39;onSelectNotification&#39;](https://i.stack.imgur.com/ln7nO.png)](https://i.stack.imgur.com/ln7nO.png)

Using version of *flutter_local_notifications* : 10:0.0

I tried testing with few other versions

Code:


// details page

import 'dart:convert';
import 'dart:io';
import 'package:awesome_dialog/awesome_dialog.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:open_file/open_file.dart';
import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import 'package:sliding_up_panel/sliding_up_panel.dart';
import 'package:wallpaper/wallpaper.dart';
import 'package:wallpaper_app/blocs/ads_bloc.dart';
import 'package:wallpaper_app/blocs/sign_in_bloc.dart';
import 'package:wallpaper_app/models/content_model.dart';
import 'package:wallpaper_app/utils/dialog.dart';
import '../blocs/data_bloc.dart';
import '../blocs/internet_bloc.dart';
import '../blocs/userdata_bloc.dart';
import '../models/config.dart';
import '../models/icon_data.dart';
import '../utils/circular_button.dart';
import 'package:path/path.dart' as path;

class DetailsPage extends StatefulWidget {
final String heroTag;
final ContentModel d;

DetailsPage({Key? key,required this.heroTag,required this.d}): super(key: key);

@override
_DetailsPageState createState() => _DetailsPageState();
}

class _DetailsPageState extends State<DetailsPage> {

final FirebaseFirestore firestore = FirebaseFirestore.instance;
final _scaffoldKey = GlobalKey<ScaffoldState>();
String progress = 'Set as Wallpaper or Download';
bool downloading = false;
late Stream<String> progressString;
Icon dropIcon = Icon(Icons.arrow_upward);
Icon upIcon = Icon(Icons.arrow_upward);
Icon downIcon = Icon(Icons.arrow_downward);
PanelController pc = PanelController();
PermissionStatus? status;

late FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin;
final Dio _dio = Dio();
String? _fileName;

Future<PermissionStatus> _requestPermissions() async {
var permission = await Permission.storage.status;

if (permission != PermissionStatus.granted) {
  await Permission.storage.request().then((value){
    permission = value;
  });
}

return permission;

}

Future<Directory?> _getDownloadPath() async {
Directory? directory;
try {
if (Platform.isIOS) {
directory = await getApplicationDocumentsDirectory();
} else {
directory = Directory('/storage/emulated/0/Download');
// Put file in global download folder, if for an unknown reason it didn't exist, we fallback
// ignore: avoid_slow_async_io
if (!await directory.exists()) directory = await getExternalStorageDirectory();
}
} catch (err) {
setState(() {
progress = 'Problem with getting the directory. Try to restart the app';
});
}
return directory;
}

Future<void> _download() async {
await _getDownloadPath().then((Directory? dir)async{
if(dir != null){
final isPermissionStatus = await _requestPermissions();
final ib = context.read<InternetBloc>();
await ib.checkInternet();
if(ib.hasInternet){
if (isPermissionStatus.isGranted) {
final savePath = path.join(dir.path, _fileName);
await _startDownload(savePath);
} else{
askOpenSettingsDialog();
}
}else{
setState(() {
progress = 'Please check your network connection!';
});
}

}else{
  setState(() {
    progress = &#39;Problem with getting the directory. Try to restart the app&#39;;
  });
}});

}

void _onReceiveProgress(int received, int total) {
if (total != -1) {
setState(() {
progress = "Downloading: ${(received / total * 100).toStringAsFixed(0)}" + "%";
});
}
}

Future<void> _startDownload(String savePath) async {
Map<String, dynamic> result = {
'isSuccess': false,
'filePath': null,
'error': null,
};

try {
  final response = await _dio.download(
    widget.d.imagelUrl!,
    savePath,
    onReceiveProgress: _onReceiveProgress
  );
  result[&#39;isSuccess&#39;] = response.statusCode == 200;
  result[&#39;filePath&#39;] = savePath;
} catch (ex) {
  result[&#39;error&#39;] = ex.toString();
} finally {
  setState(() {
    progress = &#39;Downloaded Successfully&#39;;
  });
  openCompleteDialog();
  await _showNotification(result);
}

}

Future<void> _onSelectNotification(String json) async {
final obj = jsonDecode(json);

if (obj[&#39;isSuccess&#39;]) {
  OpenFile.open(obj[&#39;filePath&#39;]);
} else {
  showDialog(
    context: context,
    builder: (_) =&gt; AlertDialog(
      title: Text(&#39;Error&#39;),
      content: Text(&#39;${obj[&#39;error&#39;]}&#39;),
    ),
  );
}

}

Future<void> _showNotification(Map<String, dynamic> downloadStatus) async {
final String path = downloadStatus['filePath'];
final BigPictureStyleInformation bigPictureStyleInformation = BigPictureStyleInformation(FilePathAndroidBitmap(path),);
final String channelId = 'download';
final String channelName = 'download';
final int notificationId = widget.d.timestamp.hashCode;
final android = AndroidNotificationDetails(
channelId,
channelName,
priority: Priority.high,
importance: Importance.max,
subText: _fileName,
styleInformation: bigPictureStyleInformation,

);
//final iOS = IOSNotificationDetails();
final platform = NotificationDetails(android: android);
final json = jsonEncode(downloadStatus);
final isSuccess = downloadStatus[&#39;isSuccess&#39;];

await flutterLocalNotificationsPlugin.show(
  notificationId, // notification id
  isSuccess ? &#39;Download Success&#39; : &#39;Failure&#39;,
  isSuccess ? &#39;Image has been downloaded successfully! Click here to open it&#39; : &#39;There was an error while downloading the file.&#39;,
  platform,
  payload: json
);

}

@override
void initState() {
super.initState();
_fileName = '${widget.d.category}${widget.d.timestamp}.png';
flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
final android = AndroidInitializationSettings('@mipmap/ic_launcher');
final initSettings = InitializationSettings(android: android);

flutterLocalNotificationsPlugin.initialize(initSettings, onSelectNotification: (payload) =&gt; _onSelectNotification(payload!),);

}

void openSetDialog() async {
showDialog(
context: context,
builder: (BuildContext context) {
return SimpleDialog(
title: Text('SET AS'),
contentPadding:
EdgeInsets.only(left: 30, top: 40, bottom: 20, right: 40),
children: <Widget>[
ListTile(
contentPadding: EdgeInsets.all(0),
leading: circularButton(Icons.format_paint, Colors.blueAccent),
title: Text('Set As Lock Screen'),
onTap: () async {
await _setLockScreen();
Navigator.pop(context);
},
),
ListTile(
contentPadding: EdgeInsets.all(0),
leading: circularButton(Icons.donut_small, Colors.pinkAccent),
title: Text('Set As Home Screen'),
onTap: () async {
await _setHomeScreen();
Navigator.pop(context);
},
),
ListTile(
contentPadding: EdgeInsets.all(0),
leading: circularButton(Icons.compare, Colors.orangeAccent),
title: Text('Set As Both'),
onTap: () async {
await _setBoth();
Navigator.pop(context);
},
),
SizedBox(
height: 40,
),
Center(
child: TextButton(
child: Text('Cancel'),
onPressed: () {
Navigator.pop(context);
},
),
)
],
);
},
);
}

//lock screen procedure
_setLockScreen() {
Platform.isIOS
? setState(() {
progress = 'iOS is not supported';
})
: progressString = Wallpaper.imageDownloadProgress(widget.d.imagelUrl!);
progressString.listen((data) {
setState(() {
downloading = true;
progress = 'Setting Your Lock Screen\nProgress: $data';
});
print("DataReceived: " + data);
}, onDone: () async {
progress = await Wallpaper.lockScreen();
setState(() {
downloading = false;
progress = progress;
});

  openCompleteDialog();
}, onError: (error) {
  setState(() {
    downloading = false;
  });
  print(&quot;Some Error&quot;);
});

}

// home screen procedure
_setHomeScreen() {
Platform.isIOS
? setState(() {
progress = 'iOS is not supported';
})
: progressString = Wallpaper.imageDownloadProgress(widget.d.imagelUrl!);
progressString.listen((data) {
setState(() {
//res = data;
downloading = true;
progress = 'Setting Your Home Screen\nProgress: $data';
});
print("DataReceived: " + data);
}, onDone: () async {
progress = await Wallpaper.homeScreen();
setState(() {
downloading = false;
progress = progress;
});

  openCompleteDialog();
}, onError: (error) {
  setState(() {
    downloading = false;
  });
  print(&quot;Some Error&quot;);
});

}

// both lock screen & home screen procedure
_setBoth() {
Platform.isIOS
? setState(() {
progress = 'iOS is not supported';
})
: progressString = Wallpaper.imageDownloadProgress(widget.d.imagelUrl!);
progressString.listen((data) {
setState(() {
downloading = true;
progress = 'Setting your Both Home & Lock Screen\nProgress: $data';
});
print("DataReceived: " + data);
}, onDone: () async {
progress = await Wallpaper.bothScreen();
setState(() {
downloading = false;
progress = progress;
});

  openCompleteDialog();
}, onError: (error) {
  setState(() {
    downloading = false;
  });
  print(&quot;Some Error&quot;);
});

}

void openCompleteDialog() async {
AwesomeDialog(
context: context,
dialogType: DialogType.SUCCES,
title: 'Complete',
animType: AnimType.SCALE,
padding: EdgeInsets.all(30),
body: Center(
child: Container(
alignment: Alignment.center,
height: 80,
child: Text(
progress,
style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600),
)),
),
btnOkText: 'Ok',
dismissOnTouchOutside: false,
btnOkOnPress: () {
context.read<AdsBloc>().showInterstitialAdAdmob(); //-------admob--------
//context.read<AdsBloc>().showFbAdd(); //-------fb--------

    }).show();

}

askOpenSettingsDialog() {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Grant Storage Permission to Download'),
content: Text(
'You have to allow storage permission to download any wallpaper fro this app'),
contentTextStyle:
TextStyle(fontSize: 13, fontWeight: FontWeight.w400),
actions: [
TextButton(
child: Text('Open Settins'),
onPressed: () async {
Navigator.pop(context);
await openAppSettings();
},
),
TextButton(
child: Text('Close'),
onPressed: () async {
Navigator.pop(context);
},
)
],
);
});
}

@override
Widget build(BuildContext context) {
double h = MediaQuery.of(context).size.height;
double w = MediaQuery.of(context).size.width;
final DataBloc db = Provider.of<DataBloc>(context, listen: false);

return Scaffold(
    key: _scaffoldKey,
    body: SlidingUpPanel(
      controller: pc,
      color: Colors.white.withOpacity(0.9),
      minHeight: 120,
      maxHeight: 450,
      backdropEnabled: false,
      borderRadius: BorderRadius.only(
          topLeft: Radius.circular(15), topRight: Radius.circular(15)),
      body: panelBodyUI(h, w),
      panel: panelUI(db),
      onPanelClosed: () {
        setState(() {
          dropIcon = upIcon;
        });
      },
      onPanelOpened: () {
        setState(() {
          dropIcon = downIcon;
        });
      },
    ));

}

// floating ui
Widget panelUI(db) {

return Container(
  child: Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: &lt;Widget&gt;[
      InkWell(
        child: Container(
          padding: EdgeInsets.only(top: 10),
          width: double.infinity,
          child: CircleAvatar(
            backgroundColor: Colors.grey[800],
            child: dropIcon,
          ),
        ),
        onTap: () {
          pc.isPanelClosed ? pc.open() : pc.close();
        },
      ),
      SizedBox(
        height: 5,
      ),
      Padding(
        padding: const EdgeInsets.only(left: 20),
        child: Row(
          children: &lt;Widget&gt;[
            Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: &lt;Widget&gt;[
                Text(
                  Config().hashTag,
                  style: TextStyle(color: Colors.grey[600], fontSize: 14),
                ),
                Text(
                  &#39;${widget.d.category} Wallpaper&#39;,
                  style: TextStyle(
                      color: Colors.black,
                      fontSize: 18,
                      fontWeight: FontWeight.w600),
                )
              ],
            ),
            Spacer(),
            Row(
              children: &lt;Widget&gt;[
                Icon(
                  Icons.favorite,
                  color: Colors.pinkAccent,
                  size: 22,
                ),
                StreamBuilder(
                  stream: firestore.collection(&#39;contents&#39;).doc(widget.d.timestamp).snapshots(),
                  builder: (context, AsyncSnapshot snap) {
                    if (!snap.hasData) return _buildLoves(0);
                    return _buildLoves(snap.data[&#39;loves&#39;]);
                  },
                ),
              ],
            ),
            SizedBox(
              width: 20,
            ),
          ],
        ),
      ),
      SizedBox(
        height: 30,
      ),
      Padding(
        padding: const EdgeInsets.only(left: 20),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.start,
          children: &lt;Widget&gt;[
            Column(
              children: &lt;Widget&gt;[
                InkWell(
                  child: Container(
                    height: 50,
                    width: 50,
                    decoration: BoxDecoration(
                        color: Colors.blueAccent,
                        shape: BoxShape.circle,
                        boxShadow: &lt;BoxShadow&gt;[
                          BoxShadow(
                              color: Colors.grey[400]!,
                              blurRadius: 10,
                              offset: Offset(2, 2))
                        ]),
                    child: Icon(
                      Icons.format_paint,
                      color: Colors.white,
                    ),
                  ),
                  onTap: () async {
                    final ib =  context.read&lt;InternetBloc&gt;();
                    await context.read&lt;InternetBloc&gt;().checkInternet();
                    if (ib.hasInternet == false) {
                      setState(() {
                        progress = &#39;Check your internet connection!&#39;;
                      });
                    } else{
                      openSetDialog();
                    }
                    
                  },
                ),
                SizedBox(
                  height: 8,
                ),
                Text(
                  &#39;Set Wallpaper&#39;,
                  textAlign: TextAlign.center,
                  style: TextStyle(
                      fontSize: 13,
                      color: Colors.grey[800],
                      fontWeight: FontWeight.w600),
                )
              ],
            ),
            SizedBox(
              width: 20,
            ),
            Column(
              children: &lt;Widget&gt;[
                InkWell(
                  child: Container(
                    height: 50,
                    width: 50,
                    decoration: BoxDecoration(
                        color: Colors.pinkAccent,
                        shape: BoxShape.circle,
                        boxShadow: &lt;BoxShadow&gt;[
                          BoxShadow(
                              color: Colors.grey[400]!,
                              blurRadius: 10,
                              offset: Offset(2, 2))
                        ]),
                    child: Icon(
                      Icons.donut_small,
                      color: Colors.white,
                    ),
                  ),
                  onTap: () {
                    _download();
                  },
                ),
                SizedBox(
                  height: 8,
                ),
                Text(
                  &#39;Download&#39;,
                  textAlign: TextAlign.center,
                  style: TextStyle(
                      fontSize: 13,
                      color: Colors.grey[800],
                      fontWeight: FontWeight.w600),
                )
              ],
            ),
            SizedBox(
              width: 20,
            ),
          ],
        ),
      ),
      Spacer(),
      Padding(
          padding: const EdgeInsets.only(left: 20, right: 10),
          child: Row(
            children: &lt;Widget&gt;[
              Container(
                width: 5,
                height: 30,
                color: Colors.blueAccent,
              ),
              SizedBox(width: 10),
              Expanded(
                child: Text(
                  progress,
                  style: TextStyle(
                      fontSize: 15,
                      color: Colors.black87,
                      fontWeight: FontWeight.w600),
                ),
              ),
            ],
          )),
      SizedBox(
        height: 40,
      )
    ],
  ),
);

}

Widget _buildLoves(loves) {
return Text(
loves.toString(),
style: TextStyle(color: Colors.black54, fontSize: 16),
);
}

// background ui
Widget panelBodyUI(h, w) {
final SignInBloc sb = Provider.of<SignInBloc>(context, listen: false);
return Stack(
children: <Widget>[
Container(
height: h,
width: w,
color: Colors.grey[200],
child: Hero(
tag: widget.heroTag,
child: CachedNetworkImage(
imageUrl: widget.d.imagelUrl!,
imageBuilder: (context, imageProvider) => Container(
decoration: BoxDecoration(
image: DecorationImage(
image: imageProvider, fit: BoxFit.cover)),
),
placeholder: (context, url) => Icon(Icons.image),
errorWidget: (context, url, error) =>
Center(child: Icon(Icons.error)),
),
),
),
Positioned(
top: 60,
right: 20,
child: InkWell(
child: Container(
height: 40,
width: 40,
decoration:
BoxDecoration(color: Colors.white, shape: BoxShape.circle),
child: _buildLoveIcon(sb.uid)),
onTap: () {
_loveIconPressed();
},
),
),
Positioned(
top: 60,
left: 20,
child: InkWell(
child: Container(
height: 40,
width: 40,
decoration:
BoxDecoration(color: Colors.white, shape: BoxShape.circle),
child: Icon(
Icons.close,
size: 25,
),
),
onTap: () {
Navigator.pop(context);
},
),
)
],
);
}

Widget _buildLoveIcon(uid) {
final sb = context.watch<SignInBloc>();
if (sb.guestUser == false) {
return StreamBuilder(
stream: firestore.collection('users').doc(uid).snapshots(),
builder: (context, AsyncSnapshot snap) {
if (!snap.hasData) return LoveIcon().greyIcon;
List d = snap.data['loved items'];

      if (d.contains(widget.d.timestamp)) {
        return LoveIcon().pinkIcon;
      } else {
        return LoveIcon().greyIcon;
      }
    },
  );
} else {
  return LoveIcon().greyIcon;
}

}

_loveIconPressed() async {
final sb = context.read<SignInBloc>();
if (sb.guestUser == false) {
context.read<UserBloc>().handleLoveIconClick(context, widget.d.timestamp, sb.uid);
} else {
await showGuestUserInfo(context);
}
}
}




tried changing **onSelectNotification** to **onDidReceiveNotificationResponse**
tried upgrading, cleaning downgrading notification pkg


  [1]: https://audiokumbh.com/sangh-shakha/rss-shakha/

</details>


# 答案1
**得分**: 1

如果你正在使用 `flutter_local_notifications` 版本 10.0.0,那么你需要使用参数 `onDidReceiveNotificationResponse`。你可以在这里看到声明:

```dart
  Future<bool?> initialize(
    InitializationSettings initializationSettings, {
    DidReceiveNotificationResponseCallback? onDidReceiveNotificationResponse,
    DidReceiveBackgroundNotificationResponseCallback?
        onDidReceiveBackgroundNotificationResponse,
  }) async {

https://github.com/MaikuB/flutter_local_notifications/blob/flutter_local_notifications-v10.0.0/flutter_local_notifications/lib/src/flutter_local_notifications_plugin.dart#L121

如果你在使用这个版本时遇到问题,可以关闭编辑器并执行以下命令:

flutter clean
flutter packages get
英文:

If you are using flutter_local_notifications version 10.0.0 then you need to use the parameter onDidReceiveNotificationResponse. You can see the declaration here:

  Future&lt;bool?&gt; initialize(
    InitializationSettings initializationSettings, {
    DidReceiveNotificationResponseCallback? onDidReceiveNotificationResponse,
    DidReceiveBackgroundNotificationResponseCallback?
        onDidReceiveBackgroundNotificationResponse,
  }) async {

https://github.com/MaikuB/flutter_local_notifications/blob/flutter_local_notifications-v10.0.0/flutter_local_notifications/lib/src/flutter_local_notifications_plugin.dart#L121

If you are having problems with the version, then close the editor and execute the following commands:

flutter clean
flutter packages get

huangapple
  • 本文由 发表于 2023年2月27日 02:24:21
  • 转载请务必保留本文链接:https://go.coder-hub.com/75574132.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定