flutter组件库日历,flutter 列表组件

Flutter | 自定义日历

从0到1,不借助任何三方,纯手写自定义日历:

成都创新互联是一家专注于成都网站设计、成都做网站和眉山服务器托管的网络公司,有着丰富的建站经验和案例。

自定义日历,听起很复杂,其实就几个关键点,理清思路就可以轻松拿捏。

Flutter自制插件之r_calendar日历插件

????????Flutter日历插件,支持自定义日历,月视图/周视图切换、点击拦截、单选(切换月自动选)、多选(散选/聚选)

.----------------------------------------------

| github地址:

|

| pub地址:

|

| apk体验:

|

`----------------------------------------------

Flutter初探--常用依赖包

国外地址:

国内镜像:

以 flutter_screenutil 为例

路由框架 annotation_route

状态管理 provider

UI适配 flutter_screenutil

刷新控件 flutter_easyrefresh

网络请求 dio

toast控件 fluttertoast

图表库 charts_flutter

网络监听 connectivity

事件总线 event_bus

日历组件 table_calendar

官方webview webview_flutter

第三方webview flutter_webview_plugin

该篇文章为常用依赖包总结,用来记录所需要的常用依赖包,后续会不断扩充内容~

flutter如何自定义一个controller

最近在写一个flutter-ui库,类似于antd一样的ui库,google了很久,都没有发现一个类似antd这种国人喜欢用的ui库,大部分都是国外的那种material ui,因为公司多个flutter项目都需要用,每次都是写好几遍,而且还很难维护所以才有了这个打算,第一个要写的ui组件就是日历组件,日历的ui以及数据,都已经写完了,目前正好需要给日历写控制器,所以才有了这篇文章

在无状态组件当中,组件的ui由传入它的参数决定的,组件本身的不需要管理状态。而有状态组件会有多种状态,而它的状态是可以通过外部控制器来控制的。比如TextField,创建一个controller可以给TextField赋值初始值,也可以通过controller来获取到变化之后的value值,而这个控制器就是controller。可以用来控制一个有状态组件的行为以及状态的一个类

为什么要用controller呢,起初我也没想明白为什么要用,因为传参数也可以解决类似的问题啊,就拿TextField来说,

但后来我发现,很多组件内部的行为是没办法通过传参数来控制的,尤其是在特殊的组件生命周期中,没办法实现,而通过controller,可以很好的解决这个问题,我自己感觉,controller的用处就是提供给外部操作当前组件的能力,包括组件的各种状态,以及组件的各种行为,这里举个栗子????

综上,个人理解controller的作用就是暴露组件内部的行为,属性给父元素,使父元素可以很方便使用子元素提供的参数,而不需要去实现监听事件来获取

回到正题,那么如何实现一个自己的controller呢,对我而言,不会就抄,抄谁的呢,当然是超官方的!读官方的源码,看它如何实现,然后我们加以模仿,不就是自己的了。窃书不能算偷……窃书!……读书人的事,能算偷么?

这里借鉴了ScrollController的源码,首先分析下源码,以下是ScrollerController的源码,我把看不懂的英文注释删掉了...本菜????看不懂就删

看了看好像也没多少东西,注意当前类的定义

是继承了ChangeNotifier类,看着这个类顿时觉得好眼熟有没有,对了,不就是我们平时写provider用的那个东东嘛,查阅了官方文档,具体是这么解释的

用我这渣渣英语翻译大概的意思就是,一个类,它可以被继承,它可以被混合并且它提供了使用VoidCallback进行通知的 notification Api

盲猜和provider用法差不多,都是观察者模式模式,父组件可以订阅该controller的更改,当该controller通知其他监听器的时候,监听器的回调函数将被执行,上面ScrollController中的attach中正好也使用了notification方法来通知监听者,具体滚动执行的过程没有看到,但是大致了解了controller的工作原理

好了,知道原理了,开搞

首先得思考,这个controller会提供什么,按照我当前给日历组件的设计,目前会给外部提供当前日历所有的行为事件以及最终的值

目前我写的controller很简单,只需要给外部父容器提供上一个月,下一个月的方法可以使用就可以,所以我的控制器很简单,只有两个方法,并且方法执行完成之后进行消息通知,通知到各个订阅者,也就是这里的日期组件 在日期组件的 initState方法中,对controller进行监听,从而改变ui

最外层父容器是这样的,当前demo用setState临时刷新ui

看起来还不错,还有一些ui上的交互需要后续去调整

未完待续...

最近入了flutter的坑,就想着做一行爱一行,也不能把自己的头衔写死了就只做前端,只写页面。flutter写起来也蛮舒服的,加油,打工人!

Flutter组件TextFormField详解

TextFormField继承自FormField,是flutter表单提交相关组件,类似于html中的 input type="text" / ,是个文本输入框。需要在 Form 组件内部使用,否则无法正确提交数据。

未完待续

开源精粹(二)!22个实用、有趣的开源项目

作为一名开源爱好者,发掘优秀的开源项目是一件非常有趣的事情。在第一期中,我分享了单页个人网站模板、组装式 Flutter 应用框架、PHP 客户端库、Java 诊断工具等一些实用的库和工具。本期依旧会为大家分享一些前端、后端、移动开发的相关工具,希望你能“淘”到适合自己的工具。

1.Vue-EasyTable

Vue-EasyTable 是一款基于 Vue2.x 的 table 组件,具备自适应、表头与列固定、自定义单元格样式、自定义 Loading 等功能。

2.React-Calendar

这是一款具备原生日期格式的日历组件。它不依赖 Moment.js,支持日期选择范围,涵盖了各国语言,开箱即用。

3.Matter

CSS 实现的 Material 组件合集项目,作者已将部分作品开源,效果可以在 CodePen 上查看。

4.Revery

Revery 是一款用于构建高性能、跨平台桌面应用的框架。它类似于加速版的原生 Electron,除了拥有类似 React / Redux 的库,还具备 GPU 加速渲染功能,其内置的编译器速度也相当快。

5.Web Accessibility Guide

这是一个精选了 Web 可访问性贴士、技巧和最佳实践的开源项目,你将会学习到一些改善 Web 可访问性的实用做法。

1.SOFAJRaft

SOFAJRaft 是蚂蚁金服开源的生产级 Java Raft 算法库,它基于 Raft 一致性算法的生产级高性能 Java 实现,支持 MULTI-RAFT-GROUP,适用于高负载低延迟的场景,易于使用。

2. Dragonwell

阿里开源了 OpenJDK 发行版 Dragonwell,它提供长期支持,包括性能增强和安全修复。在数据中心大规模 Java 应用部署情况下,可以大幅度提高稳定性、效率以及性能。

3.Lawoole

Lawoole 是一款基于 Laravel 和 Swoole 的高性能 PHP 框架。它兼具了 Laravel 的特点,还解决了其功能背后的性能问题。同时,你还能感受到与 Laravel 一样的编码体验。

4.AntNest

AntNest 是一个简洁、快速的异步爬虫框架。它仅有 600 行代码,基于 Python 3.6+.

5.PHP-Awesome

这个仓库汇集了 PHP 优秀的资源,供你查询和参考。

1.FlutterBoost

FlutterBoost 是闲鱼开源的新一代 Flutter-Native 混合解决方案。它能够帮你处理页面的映射和跳转,你只需要关心页面的名字和参数即可。

2.MyLayout

MyLayout 是一套 iOS 界面视图布局框架,可谓 iOS 下的界面布局利器。它集成了 iOS Autolayout、Size Classes、Android 的 5 大布局体系、HTML/CSS 的浮动定位技术以及 Flex-Box 和 Bootstrap 框架等主流的平台的界面布局功能,并提供了一套简单、完备的多屏幕尺寸适配的解决方案。

3.SegementSlide

SegementSlide 是一个 iOS UI 库,它具备完整的滑滚及切换组件,旨在解决多层 UIScrollView 嵌套滚动的问题。

1.DevHub

DevHub 是一款跨平台的 GitHub 通知管理客户端,支持 Android、 iOS、网页和桌面上使用,帮助你便捷的接收 GitHub 各类通知。

2.Reqman

Reqman 是一个帮助后端工程师进行 API 测试的工具,同时也是一个基于 Node.js 的爬虫工具。

3.FreeCodeCamp

说到 FreeCodeCamp,或许大家不会陌生,而这个项目就是他们建立的开源课程和相应的代码库。网站提供了 6 大认证课程,也涉及了全栈开发认证。如果你感兴趣,不妨了解下。

4.Gitter

Gitter 是 GitHub 小程序客户端,作者采用 Taro 框架 + Taro UI 进行开发,而小程序内数据则来自 GitHub Api V3.

5.Awesome Podcasts

这个项目收集了各类实用的播客,涵盖了主流的编程语言,希望对你提升技术水平有所帮助。

6.编程图书大全

书籍不光能在你迷茫的时候,给予你答案,还能在你提升技能的时候,给予你帮助。这个仓库收集了众多编程图书,涉及主流编程语言、人工智能、算法、Linux、大数据等。看看,有木有你需要的。

7.VS Code Netease Music

很多开发者喜欢边写代码,边听音乐,VS Code Netease Music 这个插件就能满足你在 VS Code 上听歌的愿望。它使用 Webview 实现,不依赖命令行播放器。

Star-Battle

Star-Battle 是一款使用 JavaScript ES6、Canvas 开发的飞船射击类 游戏 。来 Enjoy 吧。

注:

如需转载,烦请按下方注明出处信息,谢谢!


文章标题:flutter组件库日历,flutter 列表组件
链接URL:http://scyanting.com/article/dsspsso.html