我想知道为什么Flutter在iOS设备上运行时会从纵向旋转到横向,而在我的Android设备上根本不旋转?
作为一个代码示例,您在下面找到一个“ hello world”示例。再次,对于这个简单的代码示例,Flutter可以为iOS设备开箱即用旋转,但对于Android则不旋转。为什么??
添加ListViews或其他功能的更复杂的应用程序也是如此(即iOS可以很好地旋转屏幕,Android则不能)。
我发现了一个叫做OrientationBuilder
(link1)或MediaQuery.orientation
(link2)的东西。
但这似乎仅提供区分设备方向的功能,然后您必须相应地执行代码。这似乎是一个可能的解决方案,但我想知道为什么我必须为Android设备而不是iOS投入额外的Work吗?
我要寻找的是Flutter下Android的“ AUTOMATIC”旋转可能性(就像iOS开箱即用)。我怎么能做到这一点?
这是我的“ hello world”示例的两个屏幕截图。 (iOS可以直接使用,而Android则不能):
这是Dart代码:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter = _counter + 2;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.display1,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
答案 0 :(得分:2)
在通知面板或手机(Android)的系统设置中,将设备方向更改为自动。 另一种方法是使用flutter的系统镶边lib,您可以更改或设置首选方向, 可能对您有帮助,flutter docs
答案 1 :(得分:2)
借助Jagraj Singh和user1462442的答案,我终于找到了一种旋转Android仿真器的方法。
仅旋转Android仿真器是不够的(例如,按CMD <-
键或通过设置菜单)-否!此外,您还必须选择Android仿真器电话菜单栏上的小图标(请参见图片中的红色圆圈)...
不知道为什么AVD会采用这种方式。...
答案 2 :(得分:1)
您是否正在模拟器中运行抖动? 我相信将旋转安装到设备后会自动旋转。您可能需要在android模拟器设置上触发它。