flutter - 如何在 Flutter 中创建页眉/页脚/主布局

标签 flutter dart flutter-layout

我正致力于在 Flutter 中创建附加布局。虽然我创建了一些有用的东西,但它确实很复杂且丑陋(代码方面)。我想要有关如何创建它的建议?

注意:我只希望使用标准布局(行/列/居中/等)创建它,我不想使用像 BottomNavigationBar 这样的小部件。

enter image description here

最佳答案

你可以这样做,(请阅读代码中的注释)

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      //You should use `Scaffold` if you have `TextField` in body.
      //Otherwise on focus your `TextField` won`t scroll when keyboard popup.
      body: SafeArea(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: <Widget>[
            //Header Container
            Container(
              padding: const EdgeInsets.all(8.0),
              color: Colors.blue,
              alignment: Alignment.center,
              child: Text("Header"),
            ),

            //Body Container
            Expanded(
              child: SingleChildScrollView(
                padding: const EdgeInsets.symmetric(horizontal: 30.0),
                child: Column(
                  children: <Widget>[
                    Container(
                      color: Colors.red,
                      height: 200.0,
                      alignment: Alignment.center,
                      child: Text("Content 1"),
                    ),
                    Container(
                      color: Colors.green,
                      height: 300.0,
                      alignment: Alignment.center,
                      child: Text("Content 1"),
                    ),
                    //TextField nearly at bottom
                    TextField(
                      decoration: InputDecoration(hintText: "Enter Text Here"),
                    ),
                  ],
                ),
              ),
            ),

            //Footer Container
            //Here you will get unexpected behaviour when keyboard pops-up. 
            //So its better to use `bottomNavigationBar` to avoid this.
            Container(
              padding: const EdgeInsets.all(8.0),
              color: Colors.blue,
              alignment: Alignment.center,
              child: Text("Footer"),
            ),
          ],
        ),
      ),
    );
  }
}

关于flutter - 如何在 Flutter 中创建页眉/页脚/主布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59864983/

相关文章:

dart - Dart 2中新增的可选关键字的实用程序

flutter - 我怎样才能使自定义粘性 header 中的 header 相互粘在下面而不是在 flutter 中重叠?

flutter 工具栏在状态栏下方重叠

firebase - flutter - firebase 消息未显示在手机中

flutter - 使用 StreamBuilder 制作动画

dart - 如何实现像 Youtube 和 Instagram 应用程序中那样的导航堆栈?

firebase - 如何在flutter中更新firebase中的集合文档?

dart - Sembast 删除所有文件的最佳方法

php - 有没有办法让 flutter webview 使用 android 相机上传文件?如何在 webview_flutter flutter 中打开文件选择器?

android - 键盘在 flutter 应用程序中向上插入 FloatingActionButton