在列或行内时容器装饰不可见
Container decoration is not visible when inside a column or row
我是 flutter 的新手,我想在 AppBar 之后在顶部显示全宽的图像,我从堆栈溢出中获得了代码,如果我将容器放在 Scaffold 的主体中,它工作正常向我显示沿屏幕全宽的图像,但是当我将此代码放在列或行中时,它是不可见的。
我曾尝试在 Image() class 中显示图像,但它不会根据屏幕尺寸进行调整。我的意思是它没有响应。
import 'package:flutter/material.dart';
class SecondRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
MediaQueryData queryData;
queryData = MediaQuery.of(context);
return Scaffold(
appBar: AppBar(),
body: Container(
margin: EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
bannerImage(),
],
)
],
),
),
);
}
}
class bannerImage extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return new DecoratedBox(
decoration: new BoxDecoration(
image: new DecorationImage(
image: new AssetImage("images/banner.png"),
fit: BoxFit.fitWidth,
),
));
}
}
我为 bannerImage 创建了单独的小部件。请建议我如何以全屏宽度显示我的图像,或者如何在不定义子项的情况下显示容器。
谢谢
将DecoratedBox
放入容器中并给出高度和宽度。
试试这个方法:
Container(
decoration: BoxDecoration(
color: const Color(0xff7c94b6),
image: DecorationImage(
image: ExactAssetImage('images/flowers.jpeg'),
fit: BoxFit.fitWidth,
),
border: Border.all(
color: Colors.black,
width: 8.0,
),
),
)
在您的 Column() 中使用此容器。
请解释您要在屏幕上显示的内容。
当您添加一列时,它会垂直放置小部件,并且您已添加一行作为屏幕上的唯一元素。
添加行时,您可能希望添加多个彼此水平放置的小部件。
我建议您阅读这篇文章以正确理解布局 - https://medium.com/flutter-community/flutter-layout-cheat-sheet-5363348d037e
首先你想要什么不清楚,而且你不能直接使用 queryData = MediaQuery.of(context);
你必须用 MaterialApp/WidgetsApp 小部件包装。
您必须设置 DecoratedBox
的子项才能显示图像,并且还需要换行 Expanded bannerImage
。以下是您的一些代码。
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Streams Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: SecondRoute());
}
}
class SecondRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Container(
margin: EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(child: bannerImage()),
],
)
],
),
),
);
}
}
class bannerImage extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return new DecoratedBox(
decoration: new BoxDecoration(
image: new DecorationImage(
image: new NetworkImage("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSGTVf63Vm3XgOncMVSOy0-jSxdMT8KVJIc8WiWaevuWiPGe0Pm"),
fit: BoxFit.fitWidth,
),
), child: Text('dddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgf'),);
}
}
使用指定了高度和宽度的容器小部件包装图像代码,有助于 Container() 和 Row() 显示您的图像。当行在其中的 Container() 子项中指定宽度(双精度)值时显示图像,而当指定高度(双精度)值时 Container() 显示。我只是将您的图像包装在 Row() 子项内的 Container() 小部件中,并指定了宽度和高度双精度值。随意调整值以适合实际图像的比例尺寸。希望本指南对您的项目有所帮助。
用以下代码替换 Row() 小部件:
Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Container(
height: 50.0,
width: 100.0,
decoration: BoxDecoration(
image: bannerImage(),
),
),
],
),
我是 flutter 的新手,我想在 AppBar 之后在顶部显示全宽的图像,我从堆栈溢出中获得了代码,如果我将容器放在 Scaffold 的主体中,它工作正常向我显示沿屏幕全宽的图像,但是当我将此代码放在列或行中时,它是不可见的。
我曾尝试在 Image() class 中显示图像,但它不会根据屏幕尺寸进行调整。我的意思是它没有响应。
import 'package:flutter/material.dart';
class SecondRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
MediaQueryData queryData;
queryData = MediaQuery.of(context);
return Scaffold(
appBar: AppBar(),
body: Container(
margin: EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
bannerImage(),
],
)
],
),
),
);
}
}
class bannerImage extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return new DecoratedBox(
decoration: new BoxDecoration(
image: new DecorationImage(
image: new AssetImage("images/banner.png"),
fit: BoxFit.fitWidth,
),
));
}
}
我为 bannerImage 创建了单独的小部件。请建议我如何以全屏宽度显示我的图像,或者如何在不定义子项的情况下显示容器。 谢谢
将DecoratedBox
放入容器中并给出高度和宽度。
试试这个方法:
Container(
decoration: BoxDecoration(
color: const Color(0xff7c94b6),
image: DecorationImage(
image: ExactAssetImage('images/flowers.jpeg'),
fit: BoxFit.fitWidth,
),
border: Border.all(
color: Colors.black,
width: 8.0,
),
),
)
在您的 Column() 中使用此容器。
请解释您要在屏幕上显示的内容。 当您添加一列时,它会垂直放置小部件,并且您已添加一行作为屏幕上的唯一元素。 添加行时,您可能希望添加多个彼此水平放置的小部件。 我建议您阅读这篇文章以正确理解布局 - https://medium.com/flutter-community/flutter-layout-cheat-sheet-5363348d037e
首先你想要什么不清楚,而且你不能直接使用 queryData = MediaQuery.of(context);
你必须用 MaterialApp/WidgetsApp 小部件包装。
您必须设置 DecoratedBox
的子项才能显示图像,并且还需要换行 Expanded bannerImage
。以下是您的一些代码。
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Streams Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: SecondRoute());
}
}
class SecondRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Container(
margin: EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(child: bannerImage()),
],
)
],
),
),
);
}
}
class bannerImage extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return new DecoratedBox(
decoration: new BoxDecoration(
image: new DecorationImage(
image: new NetworkImage("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSGTVf63Vm3XgOncMVSOy0-jSxdMT8KVJIc8WiWaevuWiPGe0Pm"),
fit: BoxFit.fitWidth,
),
), child: Text('dddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgfdddsfdff dfdfds dfgfdgfg fdgf'),);
}
}
使用指定了高度和宽度的容器小部件包装图像代码,有助于 Container() 和 Row() 显示您的图像。当行在其中的 Container() 子项中指定宽度(双精度)值时显示图像,而当指定高度(双精度)值时 Container() 显示。我只是将您的图像包装在 Row() 子项内的 Container() 小部件中,并指定了宽度和高度双精度值。随意调整值以适合实际图像的比例尺寸。希望本指南对您的项目有所帮助。
用以下代码替换 Row() 小部件:
Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Container(
height: 50.0,
width: 100.0,
decoration: BoxDecoration(
image: bannerImage(),
),
),
],
),