用 Flutter 写了个 V2EX 的小 demo, Flutter 真的很优秀。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wyndamlion
V2EX    问与答

用 Flutter 写了个 V2EX 的小 demo, Flutter 真的很优秀。

  •  
  •   wyndamlion 2018-07-26 17:58:31 +08:00 14084 次点击
    这是一个创建于 2638 天前的主题,其中的信息可能已经有所发展或是发生改变。

    V2EX Flutter Demo

    项目地址: https://github.com/onlynight/v2ex_flutter_demo

    关于 Demo

    该 Demo 旨在学习 flutter,以及研究 flutter 的实用性。

    从学习 flutter 到编写完该 demo 总计耗时 3 天,易上手。

    设计理念优秀,UI 组建全部以 widget 形式呈现,非 UI 组建也可以是 widget,API 设计规范统一,优秀。

    app 预览

    home

    topic

    app 下载

    下载最新的 release https://github.com/onlynight/v2ex_flutter_demo/releases

    相关项目

    使用 V2EX 接口项目地址: https://github.com/djyde/V2EX-API

    之前写的一个 MVVM 模式的 V2EX android demo 项目地址: https://github.com/onlynight/V2EX

    Flutter

    这是一个用 flutter 写的 V2EX 客户端 app。旨在学习 flutter,以及研究 flutter 的实用性。对比了 React Native,Weex 和 Flutter,Flutter 优势很明显,具体有以下几点:

    1. 性能表现优异(目前只测试 android 端,ios 暂时没有测试,估计性能会比 android 更优秀)
    2. 教程文档全中文
    3. 社区友好,文档齐全
    4. 大厂 google 负责开发维护
    5. 高校 UI 编写(虽然没有从开发框架层面做 MVC,直接使用代码编写界面,但是设计理念优秀,特别适合 app 开发人员学习,深入)
    6. 综上,非常优秀的大前端框架,优秀。
    第 1 条附言    2018-07-26 20:54:04 +08:00

    很多小伙伴说图没了,之前用的csdn的图,现在换成github的希望能好点。

    home

    topic

    第 2 条附言    2018-07-27 09:12:44 +08:00

    再更新一次,有很多小伙伴想要中文文档,这里贴出来。

    中文官网,https://flutterchina.club/

    官网,https://flutter.io/

    68 条回复    2023-05-22 19:53:45 +08:00
    chenjian026
        1
    chenjian026  
       2018-07-26 18:03:36 +08:00
    图好像挂了
    wyndamlion
        2
    wyndamlion  
    OP
       2018-07-26 18:05:43 +08:00
    @chenjian026 github 嘛,还是这个帖子?
    ss098
        3
    ss098  
       2018-07-26 18:05:47 +08:00   2
    厉害,Flutter 确实非常值得学习。

    “组件”,“高效”错别字。
    wyndamlion
        4
    wyndamlion  
    OP
       2018-07-26 18:08:03 +08:00
    @ss098 哈哈,看的很仔细,优秀。
    CloudnuY
        5
    CloudnuY  
       2018-07-26 18:10:45 +08:00
    贴内图挂了,换个图床试试

    fish267
        7
    fish267  
       2018-07-26 18:18:30 +08:00 via Android
    这错别字简直了!
    jiangnanyanyu
        8
    jiangnanyanyu  
       2018-07-26 18:37:27 +08:00 via Android   1
    我觉得嵌套一点都不优雅
    wyndamlion
        9
    wyndamlion  
    OP
       2018-07-26 20:50:11 +08:00
    @kera0a 写起来真的很爽,我刚开始看的时候也很头疼,写起来真的开心。
    my101du
        10
    my101du  
       2018-07-26 21:38:45 +08:00
    操作流畅得飞起!
    比之前用过的 Ionic 什么的完全不是一个感觉。
    甚至有切换 tab 的触摸动画还没结束,数据就已经加载完毕并且转场进入了下一个界面的错觉。
    wyndamlion
        11
    wyndamlion  
    OP
       2018-07-26 22:15:59 +08:00   1
    @my101du 是的,我也觉得性能很优秀,同样是虚拟机,dart 的比 js 的性能要好不少。
    jerrry
        12
    jerrry  
       2018-07-26 23:02:26 +08:00 via Android
    教程文全中文?我看的是假的文
    dummyuser
        13
    dummyuser  
       2018-07-26 23:28:07 +08:00 via Android
    @jerrry 官方文档有中文翻译的
    Natumsol
        14
    Natumsol  
       2018-07-26 23:32:50 +08:00 via Android
    楼主错别字好多。。
    chenglu
        15
    chenglu  
       2018-07-26 23:45:48 +08:00 via Android
    赞!
    azhangbing
        16
    azhangbing  
       2018-07-27 00:36:20 +08:00 via iPhone
    可以 最近也在学 flutter
    chmlai
        17
    chmlai  
       2018-07-27 01:48:48 +08:00
    这种级别的 demo 怎么看能看出优不优秀
    kingcos
        18
    kingcos  
       2018-07-27 01:54:37 +08:00 via iPhone
    Mark 一下,准备看看
    swkl86
        19
    swkl86  
       2018-07-27 03:21:47 +08:00 via Android
    求中文文档链接
    chengluyu
        20
    chengluyu  
       2018-07-27 05:25:51 +08:00
    楼主的 GitHub 头像怎么看着那么眼熟呢……我总觉得在其它的论坛上见过。
    GG668v26Fd55CP5W
        21
    GG668v26Fd55CP5W  
       2018-07-27 08:10:30 +08:00 via iPhone
    楼主用 Android studio 还是 vscode?
    chenglu
        22
    chenglu  
       2018-07-27 08:22:54 +08:00 via Android
    @swkl86 可以看一下这里 https://flutter-io.cn/
    learnshare
        23
    learnshare  
       2018-07-27 08:54:32 +08:00
    就是写起 UI 比较麻烦
    wyndamlion
        24
    wyndamlion  
    OP
       2018-07-27 09:09:17 +08:00
    @chengluyu 偷的别人的头像哇,哈哈哈哈哈
    wyndamlion
        25
    wyndamlion  
    OP
       2018-07-27 09:10:22 +08:00
    @jerrry 有官方中文文档啦,还专门针对国内有专有的包管理服务器 https://flutterchina.club/
    PopeyeLau
        26
    PopeyeLau  
       2018-07-27 09:12:59 +08:00 via iPhone
    最近也在学。「 Hot reload 」太爽了。
    chinagxwei
        27
    chinagxwei  
       2018-07-27 09:15:47 +08:00
    有不少可以优化提高可读性的地方
    wyndamlion
        28
    wyndamlion  
    OP
       2018-07-27 09:18:17 +08:00
    @falcon05 AS 和 VSCode 我都用了下,VScode 的 hot reload 感觉老是出问题,其他都差不多,最后换 AS 了。
    wyndamlion
        29
    wyndamlion  
    OP
       2018-07-27 09:19:13 +08:00
    @chinagxwei 初学,也是看了别人写的 demo,稍微优化了下,写得不好,献丑了。
    lmw2616
        30
    lmw2616  
       2018-07-27 09:32:05 +08:00
    @chmlai 闲鱼里面部分使用 flutter 开发, 盲测一下看看能分辨出哪些页面是 flutter 开发的,
    nicevar
        31
    nicevar  
       2018-07-27 09:35:29 +08:00
    写了个 helloworld,哇 RN 真的很优秀,我们采用 RN 开发吧!
    过了段时间,哎呀,怎么这么多坑啊!
    不行,这个问题解决不了,要等官方修复!
    来不及了,还是用原生开发吧。。。
    wyndamlion
        32
    wyndamlion  
    OP
       2018-07-27 09:38:45 +08:00
    @nicevar 坑肯定是有的,就我写这个简单的 demo 都遇到不少坑,但是不影响它优秀的设计,和优秀的体验。api 设计的拓展性都比较好,遇到坑可以曲线救国。
    lizhenda
        33
    lizhenda  
       2018-07-27 09:42:30 +08:00
    其它都蛮好,但是目前还未找到直接封装原生组件结合开发的途径,这样直接断送了比如接入视频播放、地图等其它第三方组件的路。这一点是比不上 RN 的
    erDaren
        34
    erDaren  
       2018-07-27 09:42:54 +08:00
    赞!

    不过错别字多的有点不能忍了
    artandlol
        35
    artandlol  
       2018-07-27 09:48:24 +08:00
    前段时间就看到咸鱼的 leader 在掘金分享这框架
    rocbomb
        36
    rocbomb  
       2018-07-27 09:57:40 +08:00
    高校 UI 编写

    哈哈哈,学院派 UI 编写
    chinagxwei
        37
    chinagxwei  
       2018-07-27 10:01:38 +08:00
    @wyndamlion 没有没有我也在学习当中,加油
    JRay
        38
    JRay  
       2018-07-27 10:38:03 +08:00
    感觉 UI 那块看得头大
    misaka20
        39
    misaka20  
       2018-07-27 10:39:49 +08:00
    最起码 2 年之内,没有学习的必要。
    CommandZi
        40
    CommandZi  
       2018-07-27 14:25:17 +08:00
    虽然我还没了解过,但从闲鱼 iOS 的那个详情页来看,滑动的细节跟原生的不太一样,有点不爽
    lynan
        41
    lynan  
       2018-07-27 14:47:10 +08:00
    前端狗,这两天才了解到 flutter,跟着教程敲完 demo,嵌套真的晕了。
    wyndamlion
        42
    wyndamlion  
    OP
       2018-07-27 14:52:23 +08:00
    @lynan 嵌套粒度稍微拆分一下,按照模块分,然后独立一个 widget 这样看着会好很多。
    Totato5749
        43
    Totato5749  
       2018-07-27 16:30:49 +08:00
    我觉得 po 吹的过头了。。。。。
    cc128
        44
    cc128  
       2018-07-27 20:21:36 +08:00 via Android
    最近也在学习。flutter 是直接使用 skia 渲染。所以性能上相当 rn 还要好一些。不过确实不管是 rn 还是 flutter。这种响应式编程还是看着不舒服。

    目前也是刚开始看,还不太清楚到底有多少坑。不过看有朋友说 2 年内没必要学,这个不能赞同。国内一些互联网公司已经开始小范围学习和实验了。

    而去是 google 搞了个新的系统 fuchsia,并且 android art 虚拟机里已经增加了对他的支持。所以后续 2 各系统定位怎么样先不管。先了解学习下 dart 和 flutter 应该是很好的时机。
    WildCat
        45
    WildCat  
       2018-07-27 20:23:04 +08:00 via iPhone
    生态有点差,轮子是不少了,就是功能都太简陋。

    react native 还有个巨大的好处就是可以热更新。
    xiuscong
        46
    xiuscong  
       2018-07-27 20:35:24 +08:00 via Android
    性能一点都不优异。列表滑动掉帧卡顿,之前 flutter 官方的 demo 也是各种掉帧
    hyyou2010
        47
    hyyou2010  
       2018-07-27 20:40:10 +08:00
    https://github.com/flutter/flutter/issues/14330

    我估计 flutter 后续会增加热更新功能,这的确是个吸引人的能力
    lneoi
        48
    lneoi  
       2018-07-27 21:33:40 +08:00
    三天时间,楼主之前是做什么的?也是 app 开发吗
    luvxy
        49
    luvxy  
       2018-07-28 16:19:06 +08:00 via iPhone
    这个是什么能解释下吗,我第一次听说以为是原生的写安卓的东西,现在看你说好像安卓 ios 都能?
    wyndamlion
        50
    wyndamlion  
    OP
       2018-07-28 22:37:17 +08:00
    @cc128 赞同
    wyndamlion
        51
    wyndamlion  
    OP
       2018-07-28 22:39:39 +08:00
    @lneoi 厚着脸皮,四年 Android 开发
    wyndamlion
        52
    wyndamlion  
    OP
       2018-07-28 22:43:05 +08:00
    @luvxy 你懂 React Native 嘛,还有 Weex,这两个都是通过写 Javascript 然后通过虚拟机解释脚本调用原生( android/ios/web )的大前端框架。Flutter 的不同就是它不是使用 Javascript 而是使用 google 自己的 dart 语言,可以实现一套代码三端复用,就是说可以开发 android、ios 和 h5。
    wyndamlion
        53
    wyndamlion  
    OP
       2018-07-28 22:46:19 +08:00
    @xiuscong debug 的版本性能确实差,有很多 debug 的库没有移除,还有就是我猜 debug 时代码没有优化,release 后性能提升很多,和原生差不远了。有些地方需要优化一下,比如我写的 demo 中 tab 切换就要优化,不然每次切换页面都会卡顿,优化过后和原生体验差不太多。大前端时代要来了,我以前也很抵触这些东西,flutter 改变了我的想法,该学了兄弟。
    deathscythe
        54
    deathscythe  
       2018-08-01 17:40:34 +08:00
    跑了一个简单的列表 20 条数据,好卡,滑动一点都不顺畅
    tongyang
        55
    tongyang  
       2018-08-08 14:24:11 +08:00
    你有米有遇到过 new text 出来的字体是红色的还有两条黄线?。。
    39499740
        56
    39499740  
       2018-08-13 12:30:32 +08:00
    @tongyang
    我猜
    你用的是 CupertinoPageScaffold
    Text 默认就是带红色字体带两个黄线,你必须自己改
    比如 style: TextStyle(
    color: Color(0xff333333),
    fontSize: 15.0,
    decoration: TextDecoration.none,
    fontWeight: FontWeight.normal)

    另外,如果你使用的是 MD,就不会出这个问题,因为 MD 默认有字体的 style,覆盖了原来的默认 style
    39499740
        57
    39499740  
       2018-08-13 12:33:25 +08:00
    @wyndamlion 不是 debug 没优化的问题,主要是为了 JIT 模式,所以 DEBUG 会卡,release 只有 AOT 模式了,删除了 JIT 模式,效率就上去了
    tongyang
        58
    tongyang  
       2018-08-13 12:53:27 +08:00
    @39499740 谢谢啦,弄明白了。。就是这个问题。。好坑啊。。
    tongyang
        59
    tongyang  
       2018-08-13 13:13:46 +08:00
    @39499740 你知道 flutter 对于富文本该用什么控件么?
    39499740
        60
    39499740  
       2018-08-13 14:08:18 +08:00
    @tongyang Text 支持富文本,只不过用起来貌似麻烦点,你可以看看这个 https://www.aliyun.com/jiaocheng/20152.html?spm=5176.100033.2.11.hWOSsB
    tongyang
        61
    tongyang  
       2018-08-13 14:19:08 +08:00
    @39499740 ==我的意思是类似那种像 Android 的 textview 可以直接解析 HTML 或者 markdown 网页的控件。。这种的即使显示了对内部的链接之类的也无法控制。。
    39499740
        62
    39499740  
       2018-08-13 14:23:23 +08:00
    @tongyang 因为现在没有相关方面的需求,所以没去了解。
    你可以去 https://github.com/memspace/zefyr 了解一下。这是个富文本编辑器,但是编辑器里面好像有个页面是展示的,你可以翻翻 demo
    tongyang
        63
    tongyang  
       2018-08-13 14:35:17 +08:00
    @39499740 谢谢啦
    pythonee
        64
    pythonee  
       2018-09-10 10:33:34 +08:00
    不错,准备开始学习
    bbinchina
        65
    bbinchina  
       2019-10-23 23:02:22 +08:00 via Android
    楼主对 flutter 的工作感兴趣吗?我司正在招人,地点成都上海可选()
    jemygraw
        66
    jemygraw  
       2020-01-03 14:06:09 +08:00
    不错,不错,稍微修修就能跑。
    cooaer
        67
    cooaer  
       2023-05-22 19:49:52 +08:00 via Android
    @hyyou2010 #47 官方明确说了,不会有热更新功能,理由是苹果应用商店不允许二进制代码更新!
    cooaer
        68
    cooaer  
       2023-05-22 19:53:45 +08:00 via Android
    @deathscythe #54 你试试 release 模式! debug 和 release 包的代码运行模式不一样,debug 用的是 jit 模式,release 是 aot ,性能有很大提升!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5498 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 01:24 PVG 09:24 LAX 18:24 JFK 21:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86