题记
—— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精。


Flutter是谷歌推出的最新的移动开发框架。

【x1】微信公众号的每日提醒 随时随记 每日积累 随心而过

【x2】各种系列的视频教程 免费开源 关注 你不会迷路

【x3】系列文章 百万 Demo 随时 复制粘贴 使用

如下图所示,上部分的轮播图是使用 Flutter Widget 构建的,下面的博客内容是使用 插件加载的 Html 内容。


这种效果的应用场景 如商品详情页面。

1 前言

小编的性格是用不合适,就去造个轮子,在Flutter 中加载 Html 的以有的插件多多少少满足不了小编的需求,所以小编造了个 flutter_fai_webview 插件,用来处理 Flutter 与 Html 的双向交互。

  • pub 仓库 flutter_fai_webview 1.1.4

  • github 源码

  • 基础使用文档

2 Demo 实现

首先是这个Demo的主体是使用Scaffold来构建的,当然也需要注意要导包的,代码如下

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter_fai_webview/flutter_fai_webview.dart';
import 'package:flutter_swiper/flutter_swiper.dart';///   混合页面加载
///   一般用于商品详情页面的添加
///   如这里的上半部分是 Flutter Widget 内容  下半部分是 WebView
class DefaultHexRefreshPage2 extends StatefulWidget {@overrideMaxUrlHexRefreshState createState() => MaxUrlHexRefreshState();
}class MaxUrlHexRefreshState extends State<DefaultHexRefreshPage2> {String htmlUrl = "https://blog.csdn.net/zl18603543572";//原生 发送给 Flutter 的消息String message = "--";@overrideWidget build(BuildContext context) {return Scaffold(///标题appBar: buildAppBar(context),///页面主体body: buildFaiWebViewWidget(),);}... ...
}

标题就是一个 AppBar 然后来实时显示 message 内容 ,代码如下:

///标题部分
AppBar buildAppBar(BuildContext context) {return AppBar(leading: IconButton(onPressed: () {Navigator.pop(context);},icon: Icon(Icons.arrow_back_ios),),title: Container(padding: EdgeInsets.only(left: 10, right: 10),height: 28,alignment: Alignment(0, 0),color: Color.fromARGB(90, 0, 0, 0),child: Text(message,style: TextStyle(color: Colors.white, fontSize: 12),),),);
}

然后页面主体部分就是构建的我们的 FaiWebViewWidget 部分:

 /// WebView 部分Container buildFaiWebViewWidget() {return Container(child: FaiWebViewWidget(///下拉刷新onRefresh: _onRefresh,//头headerWidget: buildHeaderWidget(),//webview 加载网页链接url: htmlUrl,//webview 加载信息回调callback: callBack,//输出日志isLog: false,),);}

_onRefresh 就是配置的下拉刷新的回调,如果不需要下拉刷新功能,不配置即可,是可选参数配置:

 ///如果你需要的话就使用Future<Null> _onRefresh() async {return await Future.delayed(Duration(seconds: 1), () {print('refresh');});}

属性 headerWidget 用来配置 顶部的 Widget 部分,在这里构建了一个轮播图:

 flutter_swiper: ^1.1.6

这里是随机的几个图片

 List<String> imageList = ["https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1603893462481&di=d4c8e6e88762f5a65aec40c02dd8a93b&imgtype=0&src=http%3A%2F%2Fattachments.gfan.com%2Fforum%2Fattachments2%2Fday_110320%2F11032021067b907d3ed754dd93.jpg","https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1603365312,3218205429&fm=26&gp=0.jpg","https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1603893511117&di=661e0441ef2e37676944b61714dc66d5&imgtype=0&src=http%3A%2F%2Ff.hiphotos.baidu.com%2Fzhidao%2Fpic%2Fitem%2Fd1a20cf431adcbefe30c97d9aeaf2edda3cc9f31.jpg"];
///可滑动的 视图///在 WebView 上方Widget buildHeaderWidget() {return  Container(height: 200.0,child: new Swiper(// 横向scrollDirection: Axis.horizontal,// 布局构建itemBuilder: (BuildContext context, int index) {return new Image.network(imageList[index],fit: BoxFit.fill,);},//条目个数itemCount: imageList.length,// 自动翻页autoplay: true,//点击事件onTap: (index) {print(" 点击 " + index.toString());},// 相邻子条目视窗比例viewportFraction: 1,// 布局方式//layout: SwiperLayout.STACK,// 用户进行操作时停止自动翻页autoplayDisableOnInteraction: true,// 无线轮播loop: true,//当前条目的缩放比例scale: 1,),);}

以小编的性格,要实现百万Demo随时复制粘贴肯定是需要源码的

完整源码在这里

当然以小编的性格,肯定是要有视频录制的,目前正在录制中,你可以关注一下 西瓜视频 — 早起的年轻人 随后会上传

Flutter与JS的双向调用、Flutter中Widget与Html混合加载相关推荐

  1. Flutter加载Html并实现与JS 的双向调用

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 [x2]各种系列的视频教程 ...

  2. flutter嵌入HTML5页面,Flutter加载Html并实现与JS 的双向调用

    2019-07-20 16:01:01 早起的年轻人 阅读数 2025 收藏更多 可以用来加载 Html 页面,以实现 Android 中 WebView 或者 是 iOS 中的 UIWebView ...

  3. c2010页面闪现_Vue.js中 v-if 和v-else-if页面加载出现闪现的问题及解决方法

    Vue.js中 v-if 和v-else-if页面加载出现闪现的问题及解决方法 发布于 2020-2-22| 复制链接 vue中v-if 和v-else-if在页面加载的时候,不满足条件的标签会加载然 ...

  4. 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 3

    备注: 因为文章太长,所以将它分为三部分,本文是第三部分. 第一部分:深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1 第二部分:深入浅出经典面试题:从浏览器中输入URL ...

  5. java懒加载注解_在springboot中实现个别bean懒加载的操作

    懒加载---就是我们在spring容器启动的是先不把所有的bean都加载到spring的容器中去,而是在当需要用的时候,才把这个对象实例化到容器中. @Lazy 在需要懒加载的bean上加上@Lazy ...

  6. html下拉加载原理,GitHub - gavinjzx/wxPull: 原生JS实现微信公众号或网页使用下拉加载和上拉刷新...

    原生JS实现微信公众号或网页使用下拉加载和上拉刷新 微信浏览器打开网页显示网址安全信息解决办法,网上很多办法,也找了很久,但是最新的很多用不了. 先看看效果,是不是亲想要的,可以跳过,以免浪费宝贵时间 ...

  7. html下拉加载实现原理,GitHub - sybiele/wxPull: 原生JS实现微信公众号或网页使用下拉加载和上拉刷新...

    原生JS实现微信公众号或网页使用下拉加载和上拉刷新 微信浏览器打开网页显示网址安全信息解决办法,网上很多办法,也找了很久,但是最新的很多用不了. 先看看效果,是不是亲想要的,可以跳过,以免浪费宝贵时间 ...

  8. 在 Swift 中使用闭包实现懒加载

    本文讲的是在 Swift 中使用闭包实现懒加载, 原文地址:Swift Lazy Initialization with Closures 原文作者:Bob Lee 译文出自:掘金翻译计划 译者:ls ...

  9. Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue

    Vue 单文件组件 传统组件的问题和解决方案 1. 问题 1. 全局定义的组件必须保证组件的名称不重复 2. 字符串模板缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 3. 不支持 CS ...

最新文章

  1. 三数之和(三数不重复)
  2. java防止表单二次提交_防止表单重复提交
  3. Python十大常用文件操作
  4. Lib详解--如何判断lib文件是静态库还是导入库
  5. 前端整合图片上传组件
  6. 1060. 爱丁顿数(25)
  7. 如何使用Action.Invoke()触发一个Storyboard
  8. 【Elasticsearch】使用索引生命周期管理实现热温冷架构
  9. 力扣——315. 计算右侧小于当前元素的个数
  10. 判断一个字符串是否在一个数组中
  11. bat文件打开一闪就没了_批量提取文件名
  12. 新手学易语言的请看这里!!
  13. java实现Tomasulo算法_并行计算机组成与设计pdf
  14. 在Ubuntu 18.04中安装ROS操作系统
  15. 农行笔试题之多少年后两国人均GDP相等
  16. 1秒等于1000毫秒, 1毫秒等于1000微秒,1微秒等于1000纳秒
  17. 余世维有效沟通全文字!
  18. 指数族分布(2)——对数配分函数和MLE与充分统计量
  19. CSS3配合JavaScript图片爆炸效果
  20. leetcode 1313. Decompress Run-Length Encoded List(python)

热门文章

  1. 实例分割的进阶三级跳:从 Mask R-CNN 到 Hybrid Task Cascade
  2. 百度刷新世界级权威DeepFake防伪数据集榜单记录,成绩超越SOTA
  3. 推荐!小议如何跳出魔改网络结构的火坑(完整版)
  4. php写语音朗读,详解在网页上通过JS实现文本的语音朗读
  5. 卧槽!AI 太火爆了!!!
  6. arXiv与文献调研神器Connected Papers强强联合
  7. 收藏 | 使用 Mask-RCNN 在实例分割应用中克服过拟合
  8. TensorFlow零基础入门指南——计算模型、数据模型、运行模型!
  9. Python 圈精选文章
  10. 在TensorFlow中使用pipeline加载数据