Flutter实战视频-移动电商-47.详细页_Flutter_html插件的使用
47.详细页_Flutter_html插件的使用
详情里面是hemlt和图片组成的,但是flutter是不支持html的所以需要其他插件
flutter webview plugin:这个不太好用
flutter_html:用这个插件
先解决之前一个bug
在加载详情页面的时候,控制台输出报错了。
需要用的到异步的处理
provide/details_info.dart类的方法:getGoodsInfo
html插件
https://github.com/Sub6Resources/flutter_html
视频和iframe标签目前不支持
添加引用:
flutter_html: ^0.9.6
开了上网工具 下载也还是比较慢的
详细列表和评论区域
新建details_web.dart页面。把details_tabbar.dart里面的导入的包引入进来。
- import 'package:flutter/material.dart';
- import 'package:provide/provide.dart';
- import '../../provide/details_info.dart';
- import 'package:flutter_screenutil/flutter_screenutil.dart';
引入HTML的插件。直接输入html就出出现提示了。
pages/detail_page.dart
引入html的widget
- import './details_page/details_web.dart';
然后调用
效果展示
我们的详情就已经出来了
最终代码:
details_page/details_web.dart
- import 'package:flutter/material.dart';
- import 'package:provide/provide.dart';
- import '../../provide/details_info.dart';
- import 'package:flutter_screenutil/flutter_screenutil.dart';
- import 'package:flutter_html/flutter_html.dart';
- class DetailsWeb extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- var goodsDetails = Provide.value<DetailsInfoProvide>(context).goodsInfo.data.goodInfo.goodsDetail;
- return Container(
- child: Html(
- data: goodsDetails//注意这里是data,而不是child了!!!!
- ),
- );
- }
- }
pages/details_page.dart
- import 'package:flutter/material.dart';
- import 'package:provide/provide.dart';
- import '../provide/details_info.dart';
- import './details_page/details_top_area.dart';
- import './details_page/details_expain.dart';
- import './details_page/details_tabbar.dart';
- import './details_page/details_web.dart';
- class DetailsPage extends StatelessWidget {
- final String goodsId;
- DetailsPage(this.goodsId);//flutter 1.2的最新的写法 构造函数
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- leading: IconButton(
- icon: Icon(Icons.arrow_back),
- onPressed: (){
- Navigator.pop(context);//返回上一个页面
- },
- ),
- title: Text('商品详细页'),
- ),
- body: FutureBuilder(
- future: _getBackInfo(context),
- builder: (context,snapshot){
- //判断是否有数据
- if(snapshot.hasData){
- //如果有数据返回一个Container
- return Container(
- child: ListView(
- children: <Widget>[
- DetailsTopArea(),
- DetailsExplain(),
- DetailsTabbar(),
- DetailsWeb()
- ],
- ),
- );
- }else{
- return Text('加载中......');//没有数据的情况
- }
- },
- ),
- );
- }
- Future _getBackInfo(BuildContext context) async{
- await Provide.value<DetailsInfoProvide>(context).getGoodsInfo(goodsId);
- //print('加载完成...........');
- return '完成加载';
- }
- }
Flutter实战视频-移动电商-47.详细页_Flutter_html插件的使用的更多相关文章
- Flutter实战视频-移动电商-42.详细页_UI主页面架构搭建
42.详细页_UI主页面架构搭建 详细分成六大部分拆分开 body里面用FutureBuilder异步加载. FutureBuilder里面的furure属性这里用一个方法,必须返回的也是future ...
- Flutter实战视频-移动电商-43.详细页_补充首页跳转到详细页
43.详细页_补充首页跳转到详细页 首页轮播点击到详细页 修改我们轮播这里的代码:SwiperDiy这个类这里的代码 return InkWell( onTap: (){ Application.ro ...
- Flutter实战视频-移动电商-44.详细页_首屏自定义Widget编写
44.详细页_首屏自定义Widget编写 把详细页的图片.标题.编号和价格形成一个单独的widget去引用 详情页的顶部单独封装个插件 在pages下面新建detials_page的文件件并在里面新建 ...
- Flutter实战视频-移动电商-45.详细页_说明区域UI编写
45.详细页_说明区域UI编写 pages/details_page/details_expain.dart 详情页面引用组件 效果展示: 最终代码: import 'package:flutter/ ...
- Flutter实战视频-移动电商-46.详细页_自定义TabBar Widget
46.详细页_自定义TabBar Widget 主要实现详情和评论的tab provide定义变量 自己做一个tab然后用provide去控制 定义两个变量来判断是左侧选中了还是右侧选中了.并定义一个 ...
- Flutter实战视频-移动电商-48.详细页_详情和评论的切换
48.详细页_详情和评论的切换 增加切换的效果,我们主要是修改这个地方 这样我们的评论的内容就显示出来了 最终代码 details_web.dart import 'package:flutter/m ...
- Flutter实战视频-移动电商-49.详细页_Stack制作底部工具栏
49.详细页_Stack制作底部工具栏 一直悬浮在最下面的 Stack层叠组件.里面用Row 可以横向布局 开始 stack如果想定位就要用position去定位. 修改return返回值的这个地方 ...
- Flutter实战视频-移动电商-41.详细页_数据接口的调试
41.详细页_数据接口的调试 建立数据模型层,我们的业务逻辑分开,然后进行后台数据的调试 生成model类 json数据: { ", "message": "s ...
- Flutter实战视频-移动电商-34.列表页_小BUG的修复
34.列表页_小BUG的修复 当高粱酒的子类没有数据返回的时候就会报错. 解决接口空数据报错的问题 没有数据的时候,给用户一个友好的提示, 我们没有数据的时候还要告诉用户,提示一下他没有数据,在我们的 ...
随机推荐
- 搭建mysql主从集群的步骤
前提条件是:须要在linux上安装4个mysql数据库,都须要配置完对应的信息. 须要搭建: mysql 01: 主数据库 master mysql 02 : ...
- 在mac下搭建Apacheserver
Apache作为最流行的Webserver端软件之中的一个.它的长处与地位不言而喻.以下介绍下在mac下搭建Apacheserver的步骤: (1)"前往" –>" ...
- Cena使用
打开cena,在工具-选项中,修改G++和GCC的编译命令.格式:[g++目录]g++.exe %s.cpp -o %s.exe [编译选项]例如以下命令使用刚安装的mingw4.8.1 g++编译, ...
- 九度OJ 1122:吃糖果 (递归)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1522 解决:1200 题目描述: 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力,20 > N ...
- linux 脚本统计代码行数
由于实际需求,需要统计开源产品的代码行数,so,以下命令统计*.c的行数. .h,.java .同理 find . -name *.c|xargs wc -l
- AndroidTest.java
以下代码使用ApiDemos-debug.apk进行测试 package com.saucelabs.appium; import io.appium.java_client.AppiumDriver ...
- NSDate的具体使用(转载)
NSDate的具体使用 时间与日期处理 主要有以下类: NSDate -- 表示一个绝对的时间点 NSTimeZone -- 时区信息 NSLocale -- 本地化信息 NSDateComponen ...
- POJ 2823 Sliding Window (滑动窗口的最值问题 )
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 41264 Accepted: 12229 ...
- LightOJ1220 —— 质因数分解
题目链接:https://vjudge.net/problem/LightOJ-1220 1220 - Mysterious Bacteria PDF (English) Statistics ...
- linux应用之vsftp服务的安装及配置(centos)
1.centos中vsftp服务的安装 方法1:rpm方式 #rpm –ivh vsftpd-2.0.5-10.el5.i386.rpm 安装rpm程序包(网上下载的rpm包) 方法2:yum方式 ...