十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本来想要做个这样的,
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、网站制作、东山网络推广、小程序制作、东山网络营销、东山企业策划、东山品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供东山建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
结果处理PageView的时候就如上图了,以前用Swift开发这样的Page控件的时候用的UIScrollView,有滚动宽度或者高度的设置,所以看到width的时候我是比较兴奋地去查找相关的width属性,当然结果就是没有,单独把PageView部件抽出是没有问题的,但是会是最大高度,好了,问题找到了,高度没有限制好导致PageView无法限制自身的高度,我是在SafeArea中添加的列部件,列中添加行部件,原来是PageView作为列部件的children之一,现在要限制列部件除上面的两行外设置PageView高度最大化,我把PageView放在Expanded中,Expanded作为列部件的children之一,好了问题解决了
Column(
children:[
Widget1,
Widget2,
AspectRatio(aspectRatio: ../..,child:PageView(....))
])
如整个场景全部是分页,则去除Column,改为PageView(),全部重新构建场景,Expanded需要在确定的部件需要足够多的高度或者宽度时使用,
泰戈尔飞鸟集精选(英文版) txt全集小说附件已上传到百度网盘,点击免费下载:
内容预览:
泰戈尔飞鸟集精选(英文版)
1
Stray birds of summer come to my window to sing and fly away.
And yellow leaves of autumn, which have no songs, flutter and fall there with a sign.
2
O Troupe of little vagrants of the world, leave your footprints in my words.
3
The world puts off its mask of vastness to its lover.
It becomes small as one song, as one kiss of the eternal.
4
It is the tears of the earth that keep here smiles in bloom.
5
The mighty desert is burning for the love of a bladeof grass who shakes her head and laughs and flies away.
6
If you shed tears when you miss the sun, you also miss the stars.
7
The sands in your way beg for your song and your movement, dancing water. Will you carry the burden of their lameness?
8
Her wishful face haunts my dreams like the rain at night.
9
Once we dreamt that we were strangers.
We wake up to find that we were dear to each other.
10
Sorrow is hushed into peace in my heart like the evening among the silent trees.
11
Some unseen fingers, like an idle breeze, are playing upon my heart the music of the ripples.
12
What language is thine, O sea?
The language of eternal question.……
有问题再找我
在上一篇文章中我们了解到Stream及响应式编程的相关概念,本文着重介绍在引入 RxDart 三方库后,不同Subject在实际开发中的应用场景。
先附上演示项目代码: flutter_movie
RxDart 是基于 ReactiveX 标准API的Dart版本实现,由Dart标准库中Stream扩展而成。因此,RxDart与Dart的相关术语稍有区别:
Observable 等同于 Stream , Subject 等同于 StreamController ,前者均由后者继承而来。
不同于Dart,RxDart提供了三种StreamController的变体来应用到不同的场景:
PublishSubject是最普通的广播StreamController,和StreamController唯一的区别是它返回对象是Observable,而StreamController返回的是Stream。
PublishSubject PublishSubject
从图中可以了解到,listener只能监听到订阅之后的事件。
示例代码:
BehaviorSubject也是广播StreamController,和PublishSubject的区别是它会额外返回订阅前的最后一次事件。
BehaviorSubject BehaviorSubject
示例代码:
ReplaySubject也是广播StreamController,从字面上可以了解到它可以回放已经消失的事件。
ReplaySubject ReplaySubject
示例代码:
上文提到 StreamBuilder 作为Flutter中根据Stream生成Widget的便利工具,这里结合Subject来一起使用。
tab_bar.dart - 01 tab_bar.dart - 01 tab_bar.dart - 02 tab_bar.dart - 02
以上代码实现了一个简单的TabBar(或Segment),该Widget被定义成为一个StatefulWidget(因为它在点击交互后有更新高亮索引的需求)。
在 build 函数内部我们就使用了StreamBuilder来构建UI,它监听的数据源为BLoc的 tabList ,在builder闭包内部才是实际的UI构建代码。
tab_bloc.dart tab_bloc.dart
至于 tab_bloc.dart 则更加简单,他从构造函数接收一个字符串类型的List,然后使用ReplaySubject包装数据,
同时暴露出stream类型的对象 tabList 供外部订阅(即 tab_bar.dart 中第44行代码中的stream)。
最后,我们来看看完整的调用流程。
main.dart main.dart
在 main.dart 第30~50行代码中,我们使用了 BlocProvider 来管理bloc(对于BlocProvider深入了解可以参考上一篇文章的相关部分),
provider包裹的是整个 HomePage 这使得在page内部任何地方访问到bloc成为可能。
home.dart home.dart
在 home.dart 第38,39行代码中,我们使用provider获取bloc,并完成对TabBar的初始化。
更进一步,上篇文章提到的StreamTransformer可以对Stream进行相应的处理,同样的,RxDart中也支持类似的操作,它们被称为 操作符 。
search_list_bloc.dart search_list_bloc.dart
在上述稍显复杂的示例中,实现了基本的分页搜索功能。其中13~17行代码完成搜索索引位置监听前的处理,包括 采样 (按时间采样的缓存操作)、过滤、去重操作。
换句话说,在最终监听到start之前,我们都可以对Observable对象进行一系列地处理以达到数据使用方的需求。
相信很多人对于Flutter系列的开篇以响应式编程为主题表示有点异议,但谷歌官方推行这一架构必然有其合理性,无论是状态管理上还是Dart的原生支持上而言。
在学习新技术时不仅要学习语言的语法,更要理解其架构思想(新瓶装旧酒,Flutter和Dart是新瓶,响应式编程的思想是旧酒),将思维转变过来才能更加快速地获得新技术为我们带来的便利性。
后续的文章将围绕文章开头的demo项目进行展开,尽请期待~
1、Stray birds of summer come to my window to sing and fly away. And yellow leaves of autumn, which have no songs, flutter and fall
there with a sigh.
夏天的飞鸟,飞到我窗前唱歌,又飞去了。
秋天的黄叶,他们没有什麼可唱的,只是叹息一声,飞落在那里。
2、It is the tears of the earth that keep her smiles in bloom.
使大地保持著青春不谢的,是大地的热泪。
3、The mighty desert is burning for the love of a blade of grass
who shakes her head and laughs and flies away.
伟大的沙漠为了绿叶的爱而燃烧,而她摇摇头、笑著、飞走了。
4、If you shed tears when you miss the sun, you also miss the stars.
如果你因错过太阳而流泪,那麼你也将错过群星。
5、The sands in you way beg for your song and your movement,dancing water.Will you carry the burden of their lameness?
跳著舞的流水啊!当你途中的泥沙为你的歌声和流动哀求时,
你可愿意担起他们跛足的重担?
6、Sorrow is hushed into peace in my heart like the evening among the silent trees.
忧愁在我心中沈寂平静,正如黄昏在寂静的林中。
7、I cannot choose the best. The best chooses me.
我不能选择那最好的,是那最好的选择了我。
8、They throw their shadows before them who carry their lantern on their back.
把灯笼背在背上的人,有黑影遮住前路。
9、Rest belongs to the work as the eyelids to the eyes.
休息隶属於工作,正如眼睑隶属於眼睛。
10、The waterfall sings, '' I find my song, when I find my freedom.''
瀑布歌道:「当我得到自由时,便有了歌声。」
11、the stars are not afraid to appear like fireflies.
群星不会因为像萤火虫而怯於出现。
12、We come nearest to the great when we are great in humility.
当我们极谦卑时,则几近於伟大。
13、The sparrow is sorry for the peacock at the burden of its tail.
麻雀因孔雀驮著翎尾而替它担忧。
14、The Perfect decks itself in beauty for the love of the Imperfect.
「完全」为了爱「不完全」,把自己装饰得更美。
15、'' I give my whole water in joy,'' sings the waterfall,
'' though little of it is enough for the thirsty.''
瀑布歌唱著:「虽然渴者只需少许水便足够,我却乐意给与我的全部」
16、The woodcutter's axe begged for its handle from tree, the tree gave it.
樵夫的斧头向树要柄,树便给了它。
17、We read the world wrong and say that it deceives us.
我们看错了世界,却说世界欺骗了我们。
18、Let life be beautiful like summer flowers and death like autumn leaves.
使生如夏日花朵之绚烂、死如秋天树叶之静美。
19、He who wants to do good knocks at the gate; he who loves finds the gate open.
想要行善的人在门外敲著门;爱人的,看见门是敞开的。
20、The scabbard is content to be dull when it protects the keenness of the word.
剑鞘保护剑的锋利,自己却满足於它自己的迟钝。
21、The cloud stood humbly in a corner of the sky, The morning crowned it
with splendour.
白云谦卑地站在天边,晨光给它披上壮丽的光彩。
22、The dust receives insult and in return offers her flowers.
尘土承受屈辱,却以鲜花来回报。
23、God is ashamed when the prosperous boasts of his special favour.
当富贵利达的人夸说他得到上帝的恩惠时,上帝却羞了。
24、Not hammer-strokes, but dance of the water sings the pebbles into perfection.
不是鎚的敲打,乃是水的载歌载舞,使鹅卵石臻於完美。
25、God's great power is in the gentle breeze, not in the storm.
上帝的大能在柔和的微风中,不在狂风暴雨中。
26、By plucking her petals you do not gather the beauty of the flower.
采撷花瓣得不著花的美丽。
27、The great walks with the small without fear. The middling keeps aloof.
大的不怕与小的同游,居中的却远避之。
28、'' The learned say that your lights will one day be no more.'' said
the firefly to the stars.The stars made no answer.
萤火虫对群星说:「学者说你的光有一天会熄灭。」群星不回答它。
29、The pet dog suspects the universe for scheming to take its place.
小狗怀疑大宇宙阴谋篡夺它的位置。
30、God loves man's lamp-lights better than his own great stars.
上帝喜爱人间的灯光甚於他自己的大星。
31、Praise shames me, for I secretly beg for it.
荣誉羞著我,因为我暗地里追求著它。
32、Life has become richer by the love that has been lost.
生命因为失去爱情而更丰盛。
33、Dark clouds becomes heaven's flowers when kissed by light.
黑云受到光的接吻时,就变成了天上的花朵。
34、The little flower lies in the dust. It sought the path of the butterfly.
小花睡在尘土里,它寻求蝴蝶走的路。
35、Let this be my last word, that I trust in thy love.
我相信你的爱」让这句话作为我最后的话。