国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Flutter中ListView 的使用示例

2019-10-21 21:45:19
字體:
來源:轉載
供稿:網友

這個小例子使用的是豆瓣 API 中 正在上映的電影 的開放接口,要實現的主要效果如下:

Flutter,ListView

JSON 數據結構

Flutter,ListView

Item 結構

Item 的結構是一個 Card 包含著一個 Row 然后這個 Row 里面左邊是一個 Image ,右邊是一個 Column

功能實現

  1. material 庫
  2. Json 解析
  3. 網絡請求
  4. 加載菊花

要實現上面四個功能,我們首先需要在 .dart 文件中引入如下代碼

import 'dart:convert';import 'package:http/http.dart' as http;import 'package:flutter/material.dart';import 'package:flutter/cupertino.dart';

網絡請求

loadData() async { String loadRUL = "https://api.douban.com/v2/movie/in_theaters"; http.Response response = await http.get(loadRUL); var result = json.decode(response.body); setState(() {  print('title: $title');  subjects = result['subjects']; }); }

ListView && 加載菊花

getBody() { if (subjects.length != 0) {  return ListView.builder(   itemCount: subjects.length,   itemBuilder: (BuildContext context, int position) {   return getItem(subjects[position]);   }); } else {  // 加載菊花  return CupertinoActivityIndicator(); } }

Item編寫

getItem(var subject) {// 演員列表 var avatars = List.generate(subject['casts'].length, (int index) =>  Container(   margin: EdgeInsets.only(left: index.toDouble() == 0.0 ? 0.0 : 16.0),   child: CircleAvatar(    backgroundColor: Colors.white10,    backgroundImage: NetworkImage(     subject['casts'][index]['avatars']['small']    )   ),  ), ); var row = Container(  margin: EdgeInsets.all(4.0),  child: Row(  children: <Widget>[   ClipRRect(   borderRadius: BorderRadius.circular(4.0),   child: Image.network(    subject['images']['large'],    width: 100.0, height: 150.0,    fit: BoxFit.fill,   ),   ),   Expanded(    child: Container(    margin: EdgeInsets.only(left: 8.0),    height: 150.0,    child: Column(     crossAxisAlignment: CrossAxisAlignment.start,     children: <Widget>[//     電影名稱     Text(      subject['title'],      style: TextStyle(      fontWeight: FontWeight.bold,      fontSize: 20.0,      ),      maxLines: 1,     ),//     豆瓣評分     Text(      '豆瓣評分:${subject['rating']['average']}',      style: TextStyle(       fontSize: 16.0      ),     ),//     類型     Text(      "類型:${subject['genres'].join("、")}"     ),//     導演     Text(      '導演:${subject['directors'][0]['name']}'     ),//     演員     Container(      margin: EdgeInsets.only(top: 8.0),      child: Row(      children: <Widget>[       Text('主演:'),       Row(       children: avatars,       )      ],      ),     )     ],    ),    )   )  ],  ), ); return Card(  child: row, ); }

主要代碼就是上述這些... 效果圖, 源碼地址

Flutter,ListView

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丹棱县| 瓮安县| 齐河县| 宁化县| 镇远县| 堆龙德庆县| 韩城市| 古田县| 图片| 孟州市| 晋宁县| 扎囊县| 德江县| 银川市| 栖霞市| 桂阳县| 会昌县| 甘南县| 尼玛县| 宜兰县| 蓝田县| 视频| 来安县| 涞源县| 安化县| 富宁县| 巨鹿县| 柏乡县| 灵璧县| 乌鲁木齐县| 阿拉善左旗| 酒泉市| 喀喇| 凌海市| 平远县| 炉霍县| 克山县| 金平| 莒南县| 牟定县| 海伦市|