flutter wrap 流式布局

热门商品代码:

import ‘package:flutter/material.dart‘;

import ‘package:flutter_project/service/service_method.dart‘;

import ‘dart:convert‘;

import ‘package:flutter_screenutil/flutter_screenutil.dart‘;//使用json.decode

class HotGoods extends StatefulWidget {

HotGoods({Key key}) : super(key: key);

@override

_HotGoodsState createState() => _HotGoodsState();

}

class _HotGoodsState extends State<HotGoods> {

int page = 1;

List <Map> hotGoodsList = [];

@override

void initState() {

super.initState();

_getHotGoods();

}

//火爆专区接口

void _getHotGoods(){

getHotGoodSContent(page).then((val){

var data = json.decode(val.toString());

List<Map> newGoodList = (data[‘data‘] as List).cast();//强转类型 从字符型转map

setState(() {

hotGoodsList.addAll(newGoodList);//将新数据newGoodList组合到老数据hotGoodsList,还是返回到老数据hotGoodsList

page++;

});

});

}

Widget hotTitle = Container(

margin: EdgeInsets.only(top: 10.0),//上间距

padding: EdgeInsets.all(5.0),//内间距

alignment: Alignment.center,

decoration: BoxDecoration(

border: Border(bottom:BorderSide(width: 0.5,color: Colors.black12)),

color: Colors.white

),

child: Text(‘火爆专区‘),

);

//火爆专区内容 --- 流式布局

Widget _wrapList(){

if (hotGoodsList.length!=0) {//集合有数据

List<Widget> listWidget = hotGoodsList.map((val){//把map集合数据 改成 widget 集合数据 .map 类似于 ForIn

return InkWell(

onTap: (){

print(‘点击了火爆专区的商品‘);

},

child: Container(

width: ScreenUtil().setWidth(372),

padding: EdgeInsets.all(5.0),

margin: EdgeInsets.only(bottom: 3.0),

child: Column(//纵向布局

children: <Widget>[

Image.network(val[‘image‘],width: ScreenUtil().setWidth(375),),

Text(

val[‘name‘],

overflow: TextOverflow.ellipsis,

maxLines: 1,

style: TextStyle(color: Colors.orange,fontSize: ScreenUtil().setSp(26)),//字号

),

Row(//横向布局

mainAxisAlignment: MainAxisAlignment.spaceEvenly,//横向布局 子控件平均分成两份

children: <Widget>[

Text(‘¥${val[‘mallPrice‘]}‘),

Text(

‘¥${val[‘price‘]}‘,

style: TextStyle(color: Colors.grey,decoration: TextDecoration.lineThrough),

)

],

)

],

),

),

);

}).toList();

return Wrap(

spacing: 2,

children: listWidget,

);

} else {

return Text(‘火爆专区无数据‘);

}

}

@override

Widget build(BuildContext context) {

return Container(

child: Column(

children: <Widget>[

hotTitle,

_wrapList()

],

),

);

}

}

原文地址:https://www.cnblogs.com/pp-pping/p/12235880.html

时间: 2024-10-26 20:22:01

flutter wrap 流式布局的相关文章

warp 流式布局

代码: import 'package:flutter/material.dart'; class WarpDemo extends StatefulWidget { WarpDemo({Key key}) : super(key: key); @override _WarpDemoState createState() => _WarpDemoState(); } class _WarpDemoState extends State<WarpDemo> { List<Widget

Flutter 布局类组件:流式布局(Wrap和Flow)

前言 把超出屏幕显示范围会自动折行的布局称为流式布局.Flutter中通过Wrap和Flow来支持流式布局,将Row换成Wrap后溢出部分则会自动折行. Wrap 接口描述 Wrap({ Key key, this.direction = Axis.horizontal, this.alignment = WrapAlignment.start, // 主轴方向子widget的间距 this.spacing = 0.0, // 纵轴方向的对齐方式 this.runAlignment = Wrap

android流式布局:FlexboxLayout用法探析(一)

FlexboxLayout是google官方开源的一个可以简单快速创建具有弹性功能的流式布局,它的目的是使用我们常见的布局模式,帮我们很好的实现UI区域的比例划分,比如三列布局,可以非常简单的实现.它支持非常多的属性设置,用起来很简单. GitHub:https://github.com/google/flexbox-layout 首先引入该库: dependencies { compile 'com.google.android:flexbox:0.2.2' } 然后是在布局文件中声明使用该控

前端(七)—— 高级布局:文档流、浮动布局、流式布局、定位布局、flex布局、响应布局

高级布局:文档流.浮动布局.流式布局.定位布局.flex布局.响应布局 一.文档流 1.什么是文档流 将窗体自上而下分成一行一行,块级元素从上至下.行内元素在每行中从左至右的顺序依次排放元素 2.本质 文档流本质是 nomal flow (普通流.常规流) 3.BFC(Block Formatting Contxt) 块级格式化上下文,它是一个独立的渲染区域,只有Block-level box参与,它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干 4.BFC的规则

含有过滤功能的android流式布局

FilterFlowLayout 含有过滤功能的流式布局, 参考FlowLayout 可以去除宽度不在范围(比例或真实值)内的子view 可以设置最大行数 可以添加组件间水平间距 可以添加行间距 系统要求 Android 4.0以上 快速使用 <me.codeboy.android.lib.FilterFlowLayout xmlns:cb="http://schemas.android.com/apk/res-auto" android:id="@+id/filter

Android自定义之流式布局

流式布局,好处就是父类布局可以自动的判断子孩子是不是需要换行,什么时候需要换行,可以做到网页版的标签的效果.今天就是简单的做了自定义的流式布局. 具体效果: 原理: 其实很简单,Measure  Layout.只需要这两个步骤就可以搞定了.完全的手动去Measure  Layout. 我们看一下代码. 解释就在代码里面做注释了,因为使用为知笔记写的博客,格式不符合代码格式.大家可以看具体的源码.最后又源码下载地址. 1.Measure  测量 @Override protected void o

GUI布局:边界布局、流式布局、网格布局、卡片布局

边界布局 package guiTest; //JFrame默认的是边界布局BorderLayout import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; public class BorderLayoutDemo { public static void main(String[] args) { JFrame f = new JFrame("边界布局BorderLayout&q

c# winform panel 流式布局 panel块可自动排列

代码下载地址  http://download.csdn.net/detail/simadi/7677053 c# winform panel 流式布局 panel块可自动排列,布布扣,bubuko.com

css3流式布局

css3布局方式: 不推荐使用float,有时候使用浮动的时候,对于可适应的流氏布局,无法胜任. 推荐使用css3的display:webkit-box. 使用的html代码 <div class="warp"> <div class="one"> </div> <div class="two"></div> <div class="three"><