美文网首页
包装组件

包装组件

作者: 乐狐 | 来源:发表于2022-07-08 09:53 被阅读0次
包装组件.png Decoration 装饰.png

Transform 变换在绘制阶段,而非布局(layout)阶段,所以无论对子组件怎么变化,其占用空间的大小和位置都是固定不变,因为这些是在布局阶段就确定的。RotatedBox和Transform.rotate功能相似,都可对子组件进行旋转变换,但RotatedBox的变换是在layout阶段。

import 'package:flutter/material.dart';

void main() {
  runApp(const MaterialApp(
    debugShowCheckedModeBanner: false,
    home: LayoutWidget(),
  ));
}

class LayoutWidget extends StatefulWidget {
  const LayoutWidget({Key? key}) : super(key: key);

  @override
  State<StatefulWidget> createState() => _LayoutState();
}

class _LayoutState extends State<LayoutWidget> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('包装组件'),
        ),
        body: Column(children: [
          //或者使用装饰容器 DecoratedBox
          Container(
            width: 100,
            height: 100,
            //设置子元素对齐方式
            alignment: Alignment.center,
            //设置内边距
            padding: const EdgeInsets.all(2),
            //设置外边距
            margin: const EdgeInsets.only(top: 10.0),
            //设置倾斜
            transform: Matrix4.rotationZ(0.2),
            decoration: BoxDecoration(
                //形状
                shape: BoxShape.rectangle,
                //背景渐变
                gradient: RadialGradient(
                    colors: [Colors.red, Colors.orange.shade700]),
                //3像素圆角
                borderRadius: BorderRadius.circular(3.0),
                boxShadow: const [
                  //阴影
                  BoxShadow(
                      color: Colors.black54,
                      offset: Offset(2.0, 2.0),
                      blurRadius: 4.0)
                ]),
            child: const Text("欢迎学习Flutter"),
          ),

          Container(
            color: Colors.black,
            margin: const EdgeInsets.only(top: 50.0, bottom: 10),
            child: Transform(
              alignment: Alignment.topRight,
              transform: Matrix4.skewY(0.3),
              child: Container(
                padding: const EdgeInsets.all(8.0),
                color: Colors.deepOrange,
                child: const Text('你好Flutter!'),
              ),
            ),
          ),

          const DecoratedBox(
            decoration: BoxDecoration(color: Colors.blue),
            //将Transform.rotate换成RotatedBox
            child: RotatedBox(
              //旋转90度
              quarterTurns: 1,
              child: Text("旋转测试"),
            ),
          ),
        ]));
  }
}

相关文章

  • antd中表单提交的基本使用

    Form.create 使用Form.create({options})(Forgot)包装组件,包装之后的组件会...

  • admin-client-antd-react-demo

    antd表单收集数据 组件和组件标签的关系:就好比类型和实例的关系。 使包装的路由组件成为默认暴露的组件: 打开工...

  • react-dnd实现拖拽效果

    最终效果 几个概念 DragSource 用于包装你需要拖动的组件,使组件能够被拖拽(make it dragga...

  • Weex——DIV

    div是一个用于包装其它组件的最基本容器组件。支持所有的公共样式、 属性、 flexbox布局.这类组件支持任意类...

  • React 高阶组件

    高阶组件是对既有组件进行包装,以增强既有组件的功能。其核心实现是一个无状态组件(函数),接收另一个组件作为参数,然...

  • 自定义Banner组件

    ScrollView组件 一个包装了平台的ScrollView(滚动视图)的组件,同时还集成了触摸锁定的“响应者”...

  • Flutter事件穿透

    使用GestureTap 包装组件的时候,子组件使用Expand,点击Expand上有时候不会触发点击事件,这时候...

  • vue2.x与vue3.x的对比

    异步组件(vue3.x新增) vue3.x 由于函数式组件被定义为纯函数,因此异步组件的定义需要通过将其包装在新的...

  • react之表单操作

    Form.create(options),经 Form.create() 包装过的组件会自带 this.props...

  • React Native创建高阶组件(修饰器)

    创建 两种方式: 代理方式的高阶组件 继承方式的高阶组件 调用 两种方式都可以包装组件、扩展生命周期方法。不同点是...

网友评论

      本文标题:包装组件

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