Flutter入门——面向Android开发者——布局

227 阅读1分钟

一、LinearLyout的相似的是什么?

在Android中,LinearLyout用于线性放置小部件——水平或垂直。在Flutter中,使用Row或Column小部件来获得相同的结果。

如果您注意到这两行示例除了“行”和“列”小部件之外是相同的。child是相同的,可以利用此功能开发丰富的布局,这些布可以随意相同的child而改变

@override
Widget build(BuildContext context) {
    return Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: const <Widget>[
            Text('Row One'),
            Text('Row Two'),
            Text('Row Three'),
            Text('Row Four'),
        ],
    );
}
@override
Widger build(BuildContext context) {
    return Column(
        minAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
            Text('Column One'),
            Text('Column Two'),
            Text('Column Three'),
            Text('Column Four'),
        ],
    );
}

要了解有关构建线性布局的更多信息,参考文章 Flutter for Android Developers: How to design LinearLayout in Flutter

二、什么是RelativeLayout的等价物?

RelativeLayout将您的小部件相对于彼此布置。在Flutter中,有几种方法可以达到相同的结果。

您可以通过组合是使用Column、Row和Stack小部件来实现RelativeLayout的结果。您可以为小部件构造函数指定相关对于父项的布局方式的规则。

有关在 Flutter 中构建 RelativeLayout 的良好示例,请参阅 Collin 在StackOverflow上的回答。

三、ScrollView的等价物是什么?

在Android中,使用ScrollView来布置您的小部件——如果用户设备的屏幕比您的内容小,它就会滚动。

在Flutter中,最简单的方法是使用ListView小部件。这可能看起来像是来自Android的矫枉过正 ,但在Flutter中,ListView小部件即是ScrollView又是Android ListView。

@override
Widget build(BuildContext context) {
    return ListView(
        children: const <Widget>[
            Text('Row One'),
            Text('Row Two'),
            Text('Row Three'),
            Text('Row Four'),
        ],
    );
}

四、我如何处理Flutter中的横向过渡?

如果AndroidManifest.xml包含以下内容,则FlutterView会处理配置更改:

android:configChange="orientation|screenSize"