Flutter:放置徽标图像后背景变为一半

Posted

技术标签:

【中文标题】Flutter:放置徽标图像后背景变为一半【英文标题】:Flutter: Background becomes half after putting logo image 【发布时间】:2020-03-12 06:41:44 【问题描述】:

所以我试图将我的图像标志放在背景上,但我的背景突然被裁剪,出现了一半的黑屏。如图:

我的 main.dart 代码:

import 'package:flutter/material.dart';
import 'login_page.dart';

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

class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return new MaterialApp(
      home: new LoginPage(),
      theme: new ThemeData(
        primarySwatch: Colors.green
      )
    );
  

我的 login_page.dart 代码:

import 'package:flutter/material.dart';

class LoginPage extends StatefulWidget
  @override  
  State createState() => new LoginPageState();


class LoginPageState extends State<LoginPage>
  @override 
  Widget build(BuildContext context)
    return new Scaffold(
      backgroundColor: Colors.transparent,
      body: new Container(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Image.asset('assets/arrowPNG.png'),
          ]
        ),
        decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage("assets/background.png"),
            fit: BoxFit.cover,
          )
        )
      )
    );
  

它是在放置图像标志“Image.asset('assets/arrowPNG.png'),”后发生的。我该如何解决这个问题?

【问题讨论】:

尝试添加到容器对齐:Alignment.center 【参考方案1】:

试试下面的代码

class LoginPageState extends State<LoginPage>
    @override
      Widget build(BuildContext context)
        return new Scaffold(
            backgroundColor: Colors.transparent,
            body: new Container(
              width: MediaQuery.of(context).size.width,
                child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      Image.asset('images/a_dot_ham.png'),
                    ]
                ),
                decoration: BoxDecoration(
                    image: DecorationImage(
                      image: AssetImage("images/background.jpg"),
                      fit: BoxFit.cover,
                    )
                )
            )
        );
    

当您将以下行添加到您的容器时,问题将得到解决

width: MediaQuery.of(context).size.width

这是我的结果

【讨论】:

谢谢!您是否碰巧知道如何将图标定位在中心(在您的情况下为箭头),以便 y 轴向上移动一点? 我没有清楚地理解你的问题。如果你能分享一个你想要的例子,我可以帮你。将您的新问题添加为编辑或创建一个新问题。【参考方案2】:

尝试添加,width: MediaQuery.of(context).size.width height: MediaQuery.of(context).size.heightContainer 这样,

Container(
          width: MediaQuery.of(context).size.width,
            height: MediaQuery.of(context).size.height,
            child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Image.asset('assets/images/logo.png'),
                ]
            ),
            decoration: BoxDecoration(
                image: DecorationImage(
                  image: AssetImage("assets/images/splash_bg.png"),
                  fit: BoxFit.cover,
                )
            )
        )

输出

【讨论】:

谢谢!如何调整中心徽标的图像大小? @NadiaM 这样做Image.asset('assets/images/appicon.png',width: 100,height: 100,)

以上是关于Flutter:放置徽标图像后背景变为一半的主要内容,如果未能解决你的问题,请参考以下文章

将 IMG 元素用于标题徽标或背景图像是不是更好,为啥? [复制]

Cast Styled Media Receiver 图像资产(背景、徽标等)的尺寸指南?

如何在android中结合覆盖位图和捕获的图像?

CSS:将标题中的渐变背景与图像结合为徽标[重复]

启动屏幕不显示徽标图像

Flutter App:背景不会从黑色变为蓝绿色