Don't ask for notification permission when the app opens. The user just got here, they have no reason to say yes.
You get one shot at the system dialog. On iOS, after "Don't Allow" it never shows again, the user has to dig it out of Settings. Android 13+ is close, two denies and it's permanent. So don't spend that shot on a random moment.
Instead, ask when the benefit is obvious. The user just placed an order, that's the moment for "Get order status updates". In my prayer times app, it's when the user configures their prayer times, with examples of the daily reminders they'll get for the 5 prayers.
And don't show the system dialog directly. Show your own page or modal first, with the concrete benefit and two buttons, "Enable notifications" and "Skip":
Only the enable tap triggers the system dialog:
Future<void> _onEnableTap() async { final PermissionStatus status = await Permission.notification.request(); ...}
This layer is what protects the one shot. A "Skip" costs nothing, you can ask again later at another good moment. A deny on the system dialog is forever.
If the user skips twice, stop asking. They can turn notifications on from your settings page when they want them.