iOSPermissionOverlay method
The overlay when the permission is limited on iOS.
Implementation
Widget iOSPermissionOverlay(BuildContext context) {
final Size size = context.mediaQuery.size;
final Widget _closeButton = Container(
margin: const EdgeInsetsDirectional.only(start: 16, top: 4),
alignment: AlignmentDirectional.centerStart,
child: IconButton(
onPressed: Navigator.of(context).maybePop,
icon: const Icon(Icons.close),
padding: EdgeInsets.zero,
constraints: BoxConstraints.tight(const Size.square(32)),
),
);
final Widget _limitedTips = Padding(
padding: const EdgeInsets.symmetric(horizontal: 30),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ScaleText(
Constants.textDelegate.unableToAccessAll,
style: const TextStyle(fontSize: 22),
textAlign: TextAlign.center,
),
SizedBox(height: size.height / 30),
ScaleText(
Constants.textDelegate.accessAllTip,
style: const TextStyle(fontSize: 18),
textAlign: TextAlign.center,
),
],
),
);
final Widget _goToSettingsButton = MaterialButton(
elevation: 0,
minWidth: size.width / 2,
height: appBarItemHeight * 1.25,
padding: const EdgeInsets.symmetric(horizontal: 24),
color: themeColor,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(5),
),
child: ScaleText(
Constants.textDelegate.goToSystemSettings,
style: const TextStyle(fontSize: 17),
),
onPressed: PhotoManager.openSetting,
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
);
final Widget _accessLimitedButton = GestureDetector(
onTap: () => permissionOverlayHidden.value = true,
child: ScaleText(
Constants.textDelegate.accessLimitedAssets,
style: TextStyle(color: interactiveTextColor(context)),
),
);
return ValueListenableBuilder2<PermissionState, bool>(
firstNotifier: permission,
secondNotifier: permissionOverlayHidden,
builder: (_, PermissionState ps, bool isHidden, __) {
if (ps.isAuth || isHidden) {
return const SizedBox.shrink();
}
return Positioned.fill(
child: Container(
padding: context.mediaQuery.padding,
color: context.themeData.canvasColor,
child: Column(
children: <Widget>[
_closeButton,
Expanded(child: _limitedTips),
_goToSettingsButton,
SizedBox(height: size.height / 18),
_accessLimitedButton,
],
),
),
);
},
);
}