flutter中的網格布局GridView


GridView使用,以及參數說明:

 

 代碼演示:

import 'package:flutter/material.dart';

class OnlineMall extends StatefulWidget {
  @override
  _OnlineMall createState() => _OnlineMall();
  
}

class _OnlineMall extends State<OnlineMall> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('在線商城'),
        centerTitle: true,
      ),
      body: renderBody(),
    );
  }

  renderBody() {
    return GridView.count(
      crossAxisCount: 2,
      padding: EdgeInsets.all(20.0),
      crossAxisSpacing: 20.0,
      mainAxisSpacing: 20.0,
      childAspectRatio: 0.7,
      children: <Widget>[
        Container(
          color: Colors.white70,
          child: Column(
            children: <Widget>[
              Image.network('http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'),
              SizedBox(height: 12),
              Text('OPPO Reno3 Pro雙模5G驍龍')
            ],
          ),
        ),
        Container(
          color: Colors.white70,
          child: Column(
            children: <Widget>[
              Image.network('http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'),
              SizedBox(height: 12),
              Text('OPPO Reno3 Pro雙模5G驍龍')
            ],
          ),
        ),
        Container(
          color: Colors.white70,
          child: Column(
            children: <Widget>[
              Image.network('http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'),
              SizedBox(height: 12),
              Text('OPPO Reno3 Pro雙模5G驍龍')
            ],
          ),
        ),
        Container(
          color: Colors.white70,
          child: Column(
            children: <Widget>[
              Image.network('http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'),
              SizedBox(height: 12),
              Text('OPPO Reno3 Pro雙模5G驍龍')
            ],
          ),
        ),
        Container(
          color: Colors.white70,
          child: Column(
            children: <Widget>[
              Image.network('http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'),
              SizedBox(height: 12),
              Text('OPPO Reno3 Pro雙模5G驍龍')
            ],
          ),
        )
      ],
    );
  }
}

效果:

 

   通過build方式動態實現網格:

代碼:

import 'package:flutter/material.dart';
import 'package:flutter_app_zfy/res/istData.dart';

class OnlineMall extends StatefulWidget {
  @override
  _OnlineMall createState() => _OnlineMall();
  
}

class _OnlineMall extends State<OnlineMall> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('在線商城'),
        centerTitle: true,
      ),
      body: renderBody(),
    );
  }

  renderBody() {
    return GridView.builder(
      itemCount: listData.length,
      itemBuilder: this._getListData,
      gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
        crossAxisCount: 2,
        crossAxisSpacing: 20.0,
        mainAxisSpacing: 20.0,
        childAspectRatio: 0.7,
      ),
    );
  }

  Widget _getListData(context, index) {
    return Container(
          color: Colors.white70,
          child: Column(
            children: <Widget>[
              Image.network(listData[index]['imageUrl']),
              SizedBox(height: 12),
              Text(listData[index]['title'])
            ],
          ),
        );
  }
}
List listData = [
  {
    'title': 'OPPO Reno3 Pro雙模5G驍龍',
    'source': 'JD',
    'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'
  },
  {
    'title': 'OPPO Reno3 Pro雙模5G驍龍',
    'source': 'JD',
    'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'
  },
  {
    'title': 'OPPO Reno3 Pro雙模5G驍龍',
    'source': 'JD',
    'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'
  },
  {
    'title': 'OPPO Reno3 Pro雙模5G驍龍',
    'source': 'JD',
    'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'
  },
  {
    'title': 'OPPO Reno3 Pro雙模5G驍龍',
    'source': 'JD',
    'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'
  },
  {
    'title': 'OPPO Reno3 Pro雙模5G驍龍',
    'source': 'JD',
    'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'
  },
  {
    'title': 'OPPO Reno3 Pro雙模5G驍龍',
    'source': 'JD',
    'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'
  }
];

效果展示:

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM