美文网首页Flutter圈子Flutter
Flutter Ui 实验室(十一)我的页面

Flutter Ui 实验室(十一)我的页面

作者: funpig | 来源:发表于2019-07-09 07:10 被阅读32次

有同学在QQ群里问类似这样的效果应该怎么做?


image.png

我们现在就来分析一下这样的效果该怎么做?主要针对 2 中间圆形图片框。 看下面的分析图

image.png
  1. 红框范围是我们的整个头部
  2. 绿框范围是我们的背景
  3. 黄框范围是我们需要显示的圆形图片
  4. 蓝框是留白部分

有了这样的分析后,怎么做就有谱了。

  1. 红框 我们使用Container,并指定高度
  2. 绿框黄框 我们使用Stack,外面再包裹一层LayoutBuilder,做为 红框 的子Widget。这样我们就能知道父Widget 红框 的高度
  3. 绿框 使用SizedBox来限定高度,黄框 使用Positioned来定位到屏幕中间

实现的效果如下图


image.png

下面就直接上代码

import 'package:flutter/material.dart';

class MyProfile extends StatefulWidget {
  @override
  _MyProfileState createState() => _MyProfileState();
}

class _MyProfileState extends State<MyProfile> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('My Profile'),
      ),
      body: Container(
        child: Column(
          children: <Widget>[
            Container(
              color: Colors.yellowAccent,
              height: 200.0,
              child: LayoutBuilder(
                builder: (BuildContext context, BoxConstraints constraints) {
                  return Stack(
                    overflow: Overflow.visible,
                    children: <Widget>[
                      SizedBox(
                        width: constraints.maxWidth,
                        height: constraints.maxHeight - 25,
                        child: Image(
                          image: AssetImage("images/bg01.jpg"),
                          fit: BoxFit.fill,
                        ),
                      ),
                      Positioned(
                        left: constraints.maxWidth / 2 - 25,
                        top: constraints.maxHeight - 50,
                        child: CircleAvatar(
                          child: Image(
                            image: AssetImage("images/head01.png"),
                            width: 50,
                            height: 50,
                          ),
                        ),
                      )
                    ],
                  );
                },
              ),
            ),
            Container(
              color: Colors.greenAccent,
              height: 300,
            )
          ],
        ),
      ),
    );
  }
}

相关文章

  • Flutter Ui 实验室(十一)我的页面

    有同学在QQ群里问类似这样的效果应该怎么做? 我们现在就来分析一下这样的效果该怎么做?主要针对 2 中间圆形图片框...

  • Flutter基础篇——常用Widget

    对于初学flutter的朋友来说,要知道,flutter的UI万物皆Widget。flutter所写的页面的结构可...

  • 3.3、Flutter:组件Widget

    一、概述 声明式UI 和 响应式UI Flutter的页面编写风格,属于声明式UI风格这与iOS的 UIKit响应...

  • Flutter SwiftUI React 对比

    都是新一代UI编程框架,都是申明式 UI 编程,都有各自的DSL描述页面。都有各自的场景。 目标 Flutter,...

  • 2020年最想尝试的Flutter UI 库

    Best-Flutter-UI-Templates Best-Flutter-UI-Templates https...

  • Flutter集成到原生的原理

    FlutterActivity等是如何把flutter UI集成到原生页面中去的?带着这个疑问,通过源码来分析一下...

  • 集成-现有App集成Flutter(iOS篇)

    一、混合开发场景原生页面可以打开Flutter页面 Flutter页面可以打开原生页面 二、Flutter混合开发...

  • Flutter

    最近尝试使用Flutter做UI,原生端进行网络请求和部分页面的开发,这就涉及到两个flutter当中的问题一个是...

  • iOS原生和Flutter交互

    一、Flutter调用原生方法 这里我是原生跳转到flutter页面,然后通过点击flutter页面的按钮和原生交...

  • Flutter混合项目实战

    一、在Native页面跳转Flutter页面 Adding a Flutter screen to an iOS ...

网友评论

    本文标题:Flutter Ui 实验室(十一)我的页面

    本文链接:https://www.haomeiwen.com/subject/tzftkctx.html