4.1 容器类Widget-Padding

2018-12-31  本文已影响18人  lltree

原文在此,这里只为学习

容器类Widget和布局类Widget区别

Padding

Padding给其子节点添加内边距

class Padding extends SingleChildRenderObjectWidget {
  ......
  const Padding({
    Key key,
    @required this.padding,
    Widget child,
  }) : assert(padding != null),
       super(key: key, child: child);
  ......
}

EdgeInsets

我们看看EdgeInsets提供的便捷方法:

示例:


import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
      
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}
class MyHomePage extends StatelessWidget{

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text("测试Padding"),
      ),
     
      body: Align(
        alignment: Alignment.centerLeft,
        child: PaddingTestRoute()
      ),
    );
  }
}

class PaddingTestRoute extends StatelessWidget{

    @override
    Widget build(BuildContext context){

      return Padding(
        padding: EdgeInsets.all(15.0),
        child: Column(
          
            mainAxisAlignment:MainAxisAlignment.start ,

            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.only(left: 8),
              
                child: Container(
                  width: 100,
                  height: 100,
                  color: Colors.red,
                ),
              ),
              Container(
                  width: 100,
                  height: 100,
                  color: Colors.green,
                ),
            ],
        ),
      );
    }
}


其中:

    选用Align 为了方便定义alignment的起始位置
    如果用center则子Widget使用Column 即使设置了
    crossAxisAlignment: CrossAxisAlignment.start,
    也无法让Column从左侧开始布局
上一篇 下一篇

猜你喜欢

热点阅读