- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我需要在 ListView 中显示几种不同大小的图像。
当图像大于 screen.width 时,我希望它缩小以适应宽度。但是当图像变短时,我希望它保持原来的大小。
我该怎么做?提前致谢。
我尝试将图像放入 Flex,但无法“阻止”小图像展开。
import 'package:flutter/material.dart';
import 'package:flutter_html/flutter_html.dart';
import 'package:firebase_database/firebase_database.dart';
void main() => runApp(MyApp());
const _imagesDir = "images";
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Image List',
theme: ThemeData(primarySwatch: Colors.blue,),
home: MyListPage(title: 'Image List Page'),
);
}
}
class MyListPage extends StatefulWidget {
MyListPage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyListPageState createState() => _MyListPageState();
}
class _MyListPageState extends State<MyListPage> {
Widget build1(BuildContext context, AsyncSnapshot snapshot) {
Widget _tileImagem(BuildContext context, String imageName) {
imageName = _imagesDir + "/"+ imageName;
return Padding(padding:EdgeInsets.all(2.0),
child: Flex(
direction: Axis.vertical,
children: <Widget>[
Image.asset(imageName),
]
),
);
}
return Scaffold(
appBar: PreferredSize(
preferredSize: Size.fromHeight(40.0),
child: AppBar(
title: Row(
children: <Widget> [
Padding(padding: EdgeInsets.only(right: 20.0),),
Text( 'Duda'),
]),
)
),
body: ListView(
shrinkWrap: true,
children: <Widget>[
Container(),
_tileImagem(context, 'flutter_big_medium.png'),
Container(), //My App have some different widgets
Container(),
Container(), //I kept them here just as place holder
Container(),
Container(),
Container(),
Container(),
Container(),
Divider(),
TileTexts(),
Divider(),
],
),
floatingActionButton: FloatingActionButton(
onPressed: () { },
child: Icon(Icons.skip_next),
),
);
}
@override
Widget build(BuildContext context) {
return new FutureBuilder(
future:
FirebaseDatabase.instance.reference()
.child('Testing')
.once(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
switch (snapshot.connectionState){
case ConnectionState.done: return build1(context, snapshot);
case ConnectionState.waiting: return CircularProgressIndicator();
default:
if (snapshot.hasError) {
return Text("hasError: ${snapshot.error}");
} else {
return Text("${snapshot.data}");
}
}
}
);
}
}
class TileTexts extends StatefulWidget {
TileTexts() : super();
@override
_TileTextsState createState() => _TileTextsState();
}
class _TileTextsState extends State<TileTexts> {
@override
void initState() {
super.initState();
}
Widget text1(String title, String imageName, TextStyle style) {
return Expanded(
child:Container(
margin: const EdgeInsets.only(left: 10.0),
child: Column(
children: <Widget>[
Html(data: title,
useRichText: true,
defaultTextStyle: style,
),
((imageName == null))
? Container()
: Image.asset(_imagesDir + "/"+imageName),
]
),
),
);
}
Widget _tileDetail(BuildContext context, String imageName) {
return Container(
padding: EdgeInsets.fromLTRB(5.0,0.0,10.0,0.0),
child: Row(
children: <Widget>[
Material(
shape: RoundedRectangleBorder(borderRadius:BorderRadius.circular(22.0) ),
clipBehavior: Clip.antiAlias,
child: MaterialButton(
child: Text('X'),
color: Theme.of(context).accentColor,
elevation: 8.0,
height: 36.0,
minWidth: 36.0,
onPressed: () {
//
},
),
),
text1('<body>veja a imagem</body>', imageName, Theme.of(context).textTheme.caption),
],
),
);
}
//_TileTexts
@override
Widget build(BuildContext context) {
print('_TileTexts build');
return Column(
children: <Widget>[
_tileDetail(context, 'flutter_med_medium.png'),
Divider(),
_tileDetail(context, 'flutter_med_medium.png'),
Divider(),
_tileDetail(context, 'flutter_med_medium.png'),
],
);
}
}
最佳答案
创建一个方法,getTitleImage(imageName)
,如果图像比屏幕大则返回 Flex
,否则返回 容器内的图像或其他选择的小部件。
....
return Padding(padding:EdgeInsets.all(2.0),
child: getTitleImage(imageName)
),
);
....
这里是一些其他提示和技巧 using Flex
关于flutter - 如何缩小ListTile中的图像而不展开它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55988534/
目标是在点击时将前和字幕的ListTile中的值更改为空。点击会切换 _act bool(boolean) 值,但ListTile的前导和副标题值不会从其初始状态更改。我的ListView代码如下。请
我目前有一个ExpansionTile,其中有一个包含ListTile的ListView.builder。 我正在做的任务是将多个listTiles放在一个Expansiontile下。 这是文件列表
我在领先的属性中有 ListTile 和按钮。一切正常,但是如果按下按钮,那么也会激活 tile onTap 手势。 Tile onTap 不仅触发动画。 这是代码 ListTile( cont
我有一个带有 ListTile 的 ListView。每个 ListTile 都有一个带有 Text 的 title、带有 Text 的 subtitle 和 >前导与图像。 现在,图像太大,垂直延伸
在标准的 ListTile 中,是否可以将前导图像和标题对齐并置于顶部? child: ListTile( leading: FlutterLogo(size: 72.0), tit
当使用 ListTile 时,leading 属性的左右两侧会有间隙。有没有可能减少它们? child: ListTile( leading: GestureDetector(
ListTile 形状参数在 Flutter 中如何工作? ListTile( shape: RoundedRectangleBorder( borderR
我正在使用 ListTile 在抽屉导航上显示项目,但我很难创建 isSelected Color 并使用它将其应用于 onTap 但不断收到有关索引的错误并且应用程序无法识别onTap 上的 isS
我正在使用带有两个图标(前导和尾随)的 ListTile。我想知道我是否可以有两个不同的 Action 。如果我点击前导图标一个 Action ,如果我点击尾随图标另一个 Action 。 以下是我当
我有一个 flutter 的 ListTile,但我似乎无法弄清楚如何使飞溅/波纹效果适合边框。我的边框是圆角的,但飞溅只是一个没有圆形边框的普通矩形,如下图所示。 ListTile 下面是 List
尝试从 ListTile 小部件中删除左右填充,以便元素看起来更靠近边缘。我已将两侧的属性“contentpadding”设置为 0,这在纵向模式下工作正常,但当我切换到横向时,填充仍然可见。我在下面
我现在正在研究更多小时,但不明白为什么不能将图像和带有一堆 ListTiles 的卡片放在一行中。我得到的错误是: 在 performLayout() 期间抛出了以下断言:BoxConstraints
我正在尝试在ListTile的开头部分和标题之间添加垂直分隔符。 我了解Flutter现在具有VerticalDivider小部件,但我似乎无法使其与ListTile一起正常工作。附上我要尝试的示例。
我刚开始使用 Flutter,只是在尝试一些东西。 我设置了一个自定义主题,但是 ListTile 的 title 属性下的 Text Widgets 没有获得正确的颜色。此外,领先属性下的图标也没有
我到处搜索,但找不到改变 ListTile 背景颜色的方法,例如当它被用户点击时。 对于看似常见的用例,有人有解决方案吗? 最佳答案 更改 ListTile 的背景颜色, 你可以简单地将它包装在 Co
这是我在屏幕上看到的内容: https://i.imgur.com/oSblgWD.png 如何对齐姓氏使其位于名字下方?我不想在姓氏旁边放置图标,只在名字旁边放置图标。 这是我的代码。谢谢。
我正在尝试从 json 文件中接收一些数据,然后将这些数据映射到我的“Json”类字段中。 有没有办法将我的 Json 类中的字段用作我的 ListTile 属性? 例如: Json json1 =
所以这看起来很基本,但我无法弄清楚。我有一个 ListTile,它有一个前导复选框、一个标题和一个尾随图标。在上一次 Flutter 更新中,出于某种原因,复选框和图标不再居中。我希望它们垂直居中。我
我在学习Flutter的过程中摸索着,到目前为止,我想做的事情已经很成功了,但是这个问题一直很困扰。 我有一个项目的 ListView,我希望能够让用户长按一个项目,然后从一对命令中进行选择。我真的找
我正在制作设置页面并希望制作类似 iOS 设置(灰色背景和白色瓷砖)。我正在尝试添加 Container,以便可以向 ListTile 添加颜色,但总是出错。 有人知道如何在这里添加容器吗? bo
我是一名优秀的程序员,十分优秀!