โซลูชันนี้ได้ผลสำหรับฉันในสองโครงการที่แตกต่างกันสำหรับ Android ไม่สามารถรับประกันได้ว่าจะใช้งานได้กับ iOS ด้วย ฉันได้อ่านคำตอบก่อนหน้านี้ทั้งหมดแล้วและฉันคิดว่าทางออกที่ดีที่สุดและง่ายที่สุดคือทำดังนี้:
Android:
ด้วยวิธีนี้คุณจะหลีกเลี่ยง "รอ" "async" และ "จากนั้น" ทั้งหมดที่อาจยุ่งเกี่ยวกับรหัสของคุณ
main(){
WidgetsFlutterBinding.ensureInitialized();
runApp(
MaterialApp(
initialRoute: '/root',
routes: {
'/root': (context) => MyApp(),
},
title: "Your App Title",
),
);
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown
]);
return MaterialApp(
home: HomeScreen(),
);
}
}
iOS:
ฉันคิดว่าการอัปเดตคำตอบนี้เป็นทางออกที่ดีที่สุดสำหรับ iOS
!! การปฏิเสธความรับผิด !! ฉันได้ทำการวิจัยเล็กน้อยและเห็นได้ชัดว่าเอกสารที่นี่ระบุว่า:
setPreferredOrientations method Limitations:
"This setting will only be respected on iPad if multitasking is disabled."
นี่คือวิธีปิดใช้งานมัลติทาสก์ (AKA เปิดตัวเลือก "ต้องใช้เต็มหน้าจอ") จาก XCode
การแก้ไขที่เป็นไปได้อื่นสำหรับ iOS
คุณอาจลองใช้อันนี้ก็ได้ ฉันยังไม่ได้ลองใช้เป็นการส่วนตัวเนื่องจากฉันไม่มี iPad หรือ XCode บนพีซีของฉัน แต่มันก็คุ้มค่าที่จะยิง
'package:flutter/services.dart'
แล้วอาจเป็นข้อผิดพลาด: github.com/flutter/flutter/issues/13238