我想在我的应用程序中只在一个屏幕上应用屏幕方向。我尝试使用if条件和orientation builder来应用它,但是不知何故无法正常工作。
例如,如果用户按下自动旋转按钮,则屏幕应根据旋转进行操作,但我仅希望在一个屏幕上实现该效果。
//main.dart
//main.dart
void main(
{
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations
([DeviceOrientation.portraitUp]);
runApp(IframeScreen());
}
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:flutter/services.dart';
import 'package:modal_progress_hud/modal_progress_hud.dart';
import 'package:provider/provider.dart';
class IframeScreen extends StatefulWidget {
@override
_IframeScreenState createState() => _IframeScreenState();
}
class _IframeScreenState extends State<IframeScreen> {
InAppWebViewController _webViewController;
IframeScreen iframe = new IframeScreen();
_IframeScreenState(
@override
void initState() {
onLoadingTesting().then((value) {
print('check modalprogress');
});
super.initState();
}
@override
void dispose(){
SystemChrome.setPreferredOrientations([
DeviceOrientation.landscapeLeft,
DeviceOrientation.portraitUp
]);
super.dispose();
}
InAppWebView webViewMethod() {
WidgetsFlutterBinding.ensureInitialized();
Permission.camera.request();
Permission.microphone.request();
}
}
@override
Widget build(BuildContext context) {
return ModalProgressHUD(
inAsyncCall: _saving,
child: WillPopScope(
onWillPop: (){
if(MediaQuery.of(context).orientation==Orientation.landscape){
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
}
return Future.value(true);
},
child: Scaffold(
body: OrientationBuilder(
builder: (BuildContext context,orientation) {
return Column(
children: <Widget>[
Expanded(
child: Container(
child: InAppWebView(
initialUrl:
"https://appr.tc/r/158489234",
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
mediaPlaybackRequiresUserGesture: false,
debuggingEnabled: true,
),
),
onWebViewCreated: (
InAppWebViewController controller) {
_webViewController = controller;
},
androidOnPermissionRequest:
(InAppWebViewController controller, String origin,
List<String> resources) async {
return PermissionRequestResponse(
resources: resources,
action: PermissionRequestResponseAction.GRANT);
}),
),
)
],
);
}
)
),
),
);
}