如何为容器添加背景颜色,包括 Flutter 中的 Expanded

Posted

技术标签:

【中文标题】如何为容器添加背景颜色,包括 Flutter 中的 Expanded【英文标题】:How to add a background color to a Container including Expanded in Flutter 【发布时间】:2020-04-04 22:30:20 【问题描述】:

我目前在 Flutter 中遇到 layout 问题:/

所以我想添加一个 background color 到一个容器,该容器嵌入一个 column Widget 和一个 SizedBox & Expended 小部件。

布局就像没有颜色的魅力,但是当我添加 属性颜色 时显示错误:(

代码如下:

Container(
  color: Colors.white // <- Not working when I add color property
  child: Expanded(
    child: Column(
      children: <Widget>[
        SizedBox(),
        Expanded()
      ],
    ),
  ),
),
SizedBox(),

这是错误:

有关信息,这里是我想要实现的布局,我只想为蓝色容器设置背景颜色并在底部 SizedBox 设置透明(以便看到橙色背景渐变)。

提前非常感谢!!

【问题讨论】:

【参考方案1】:

@iStormz,您为Container 所做的颜色是正确的,但您对Expanded 的使用不正确。 Expanded 只能在RowColumnFlex 中使用。您在Column 之外有Expanded。请在此处找到更多信息 - https://api.flutter.dev/flutter/widgets/Expanded-class.html

【讨论】:

【参考方案2】:

这是您正在寻找的布局。你得到的错误是因为扩展需要一个弹性布局。我对您是否需要的背景颜色天气感到困惑,但布局是在下面的代码中实现的。如果需要,您可以删除背景颜色

代码

import 'package:flutter/material.dart';



void main() 
  runApp(MyApp());


class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: MyWidget(),
        ),
      ),
    );
  


class MyWidget extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return Column(
      children: <Widget>[
        Expanded(
            child: Container(
                width: double.infinity,
                decoration: BoxDecoration(
                    gradient: LinearGradient(

                      begin: Alignment.topRight,
                      end: Alignment.bottomLeft,


                      colors: [

                        Color(0xffFFCE00),
                        Color(0xffE86F1C),
                      ],
                    ),
                    border: Border.all(
                        style: BorderStyle.solid, color: Colors.blue)),
                child: Column(
                  children: <Widget>[
                    SizedBox(
                      height: MediaQuery.of(context).size.height / 3,
                      child: Container(
                          color: Colors.blueAccent,//remove color to make it transpatrent
                          child: Center(child: Text("This is Sized Box"))),
                    ),
                    Expanded(
                      child: Container(
                          decoration: BoxDecoration(
                              color: Colors.blueAccent,//remove color to make it transpatent
                              border: Border.all(
                                  style: BorderStyle.solid,
                                  color: Colors.white)),
                          child: Center(child: Text("This is Expanded"))),
                    ),
                    SizedBox(
                      height: MediaQuery.of(context).size.height / 4,
                      child: Center(child: Text("This is Sized Box")),
                    ),
                  ],
                ))),
      ],
    );
  

这里是布局SS

谢谢,希望对你有帮助

【讨论】:

以上是关于如何为容器添加背景颜色,包括 Flutter 中的 Expanded的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何为透明容器添加阴影?

Django 管理员。当对象具有布尔字段== True时,如何为列表视图中的每一行添加背景颜色?

如何为使用 php mail() 发送的 html 电子邮件添加背景颜色

Flutter - 如何为 IconButton 赋予颜色?

如何为背景图像添加背景颜色? [复制]

如何为 Flutter 中的文本赋予边框/背景?