V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Constsheng
V2EX  ›  程序员

2024 想速成一下 Flutter,有点 C/C++和前端的基础吧但是不精

  •  
  •   Constsheng · 36 天前 · 2140 次点击
    这是一个创建于 36 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请问有无推荐的项目?

    20 条回复    2024-04-25 17:01:12 +08:00
    zhuxc
        1
    zhuxc  
       36 天前
    速成直接写个项目吧,花了几天写一个基本上就熟悉了,这是我写的,完全 0 基础,用 ai 帮着写,感觉已经入门了,后面打算继续完善一下
    https://github.com/luke358/RandomDiary
    debuggerx
        2
    debuggerx  
       36 天前   ❤️ 5
    建议不要直接写项目,一定先耐着性子把官网文档读完,写一遍官方示例,最好把 dart 语言的最佳实践也通读几遍,否则写出来的代码不够 flutter/dart ,会影响后续的学习和维护的。

    @zhuxc 虽然项目结构还是不错的,但是简单瞅了一下,就发现几个明显的点,比如异步函数的类型没声明对、一些 immutable 的类的构造函数没声明成 const 、一些冗余的操作和写法可以用 dart 里方便的语法大幅度简化、ListView 的子项应该用 map 函数来生成而不是手动循环填充 widgets 数组等等……

    下面这个是我前段时间面试一家公司时做的面试题,前后大概花了两天,可以在线打开玩一玩,不建议学,但是可以看看里面一些写法,自认为还是比较符合 flutter/dart(最新)的语法和习惯的。
    https://github.com/debuggerx01/flutter_ecommerce_demo
    debuggerx
        3
    debuggerx  
       36 天前
    @debuggerx 对了,我写 Flutter 差不多 7 年了,个人和公司的项目都写了很多,也接手维护过几个项目,不同人(尤其是不同出身,比如安卓、ios 、前端、后端)写出的 flutter 项目的味道截然不同,很多原始技术栈的习惯在 flutter 这边很有可能并不适合,这也是我发现有些其他技术栈的老手转过来写的项目有时还没新手写的代码好维护的原因。上面那个 demo 项目是基于最新的 riverpod 写的(对面面试官的评价反馈是我这份代码是他们几个月来面试了几十人,最终交付质量最高的一份),其实并不是很建议新手上来就用这么复杂的东西,还是从基础的无/有状态组件和 setState 写起来。
    vczyh
        4
    vczyh  
       36 天前
    @debuggerx 现在 Flutter 发展的怎么样了,搜了一堆有说在一些设备比较卡的,现在还有吗请问?
    everettstone
        5
    everettstone  
       36 天前
    @debuggerx Flutter 大佬 说下情况目前 10%时间维护 Android 项目 有 Java 和 kotlin 项目 主业主要写 C++ 和 C#,现在对 Flutter 感兴趣 目前有个想法做一个 App 暂时不考虑苹果系统 后面肯定会有 零基础 Flutter 有什么建议
    debuggerx
        6
    debuggerx  
       36 天前   ❤️ 3
    @vczyh 应该说发展的还是挺好的,业内采用率越来越高,不光移动开发,很多桌面项目也开始用,我现在的公司就在用 Flutter 做同时兼容移动端(含平板)和三大桌面端的项目。
    至于网上说卡的,我分几方面说:
    1. 我做了好几个商业 flutter 项目,还没碰到过有什么用户反馈的性能问题最终发现是 flutter 本身的问题,基本都是出了 bug 或者同事的写法用法不好,只要写得没问题,flutter 本身的性能表现不会成为项目的瓶颈
    2. 有些问题其实是通用的技能水平问题,比如图片视频资源压缩、比如数据量大的时候先采样再绘制、比如能复用的数据不复用,每一帧都重新计算,而且还是多层循环嵌套……这些东西其实是开发者水平的问题
    3. 有些 app 我自己觉得流畅性没啥问题,可是别人就说感觉卡,掉帧,我只能说可能确实人与人体质不同,有人就是天生写轮眼吧
    4. 针对上面这种,flutter 现在工作的重点就是把底层渲染引擎换成 Impeller ,ios 已经基本稳定了,预计 24 年内 android 也能差不多: https://juejin.cn/post/7337898389450080306

    所以其实要我说,网上说 flutter 卡的,大多数其实是开发者水平问题,是代码写得不好,让 flutter 背了锅。现在市面上很多 app 都用了 flutter ,普通用户根本用不出来区别。用跨平台方案甚至直接 web 套壳的项目,只要代码写得好,很多也比低水平的原生项目流畅。
    JarvanIV
        7
    JarvanIV  
       36 天前
    @debuggerx 正确的,中肯的
    sniperboy0829
        8
    sniperboy0829  
       36 天前
    @debuggerx 擦,搜了下 Flutter 第一个版本推出时间是 2017 年 5 月,到现在基本算 7 年,看来你是推出的第一天就开始用了啊,我是纯 Native Mobile 开发,当然分别写过一年的 ReactNative 和 Golang ,我感觉 Flutter 需求很少,学 Dart/Flutter 生态 ROI 太低了
    yu180
        9
    yu180  
       36 天前
    还行吧,看了半个月的官方文档,我用 wanAndroid 的开放 api, 空闲时间半个月就差不多写了一个 app.入门挺快,感觉这种编程式 ui 都大同小异。比较麻烦的估计还是跟原生平台的硬件交互方面。
    https://github.com/yudehai0204/wanandroid_flutter
    tyrantZhao
        10
    tyrantZhao  
       36 天前
    感觉全栈会比较厉害,但现在有 gpt ,会好点。
    tyrantZhao
        11
    tyrantZhao  
       36 天前
    话说,现在用 flutter 是不是用的少?
    debuggerx
        12
    debuggerx  
       36 天前
    @everettstone 基本就是我上面说的那些了,然后再来一个建议就是多逛逛 pub.dev ,多尝试别人写好的插件,而不是自己写。我参与了几个商业项目,也包括涉及硬件和原生功能调用的,最终没有自己写一行原生或者 C 代码,全用的插件,完全没问题,反而总想着自己写原生可能最终会造成维护困难的结局。
    debuggerx
        13
    debuggerx  
       36 天前
    @sniperboy0829 我开始玩的时候还是 beta 版本,还没正式发布。“ROI”这个东西对每个人的情况都不同,以我的情况来说,二本非科班出身的安卓开发,也没赶上移动开发最火的那几年,也没大厂经历,要不是当时比较早地选对了 flutter 作为主力方向,根本不会有后来做小 leader 的机会以及现在的薪资水平,所以对我来说“ROI”应该还是挺高的。
    debuggerx
        14
    debuggerx  
       36 天前
    @tyrantZhao 比例来说肯定是越来越高的,只是现在移动开发式微了,总量变少了,没有足够的市场机会给新的超级 APP 登场,所以感觉 flutter 用得没那么多。
    两个冷知识:
    1. 微信现在就在用 flutter ,新的小程序渲染引擎 skyline 也是基于 flutter 搞的
    2. 所谓的鸿蒙原生开发,实际上也和 flutter“关系密切”: https://juejin.cn/post/7280006531922673719
    tyrantZhao
        15
    tyrantZhao  
       35 天前
    @debuggerx 这样啊,我不太懂前端,我还以为 vue 这些可能比较多,那我也学习下 flutter 。
    Rrrrrr
        16
    Rrrrrr  
       35 天前 via iPhone
    你说的基础跟 flutter 没有半毛钱关系
    Rrrrrr
        17
    Rrrrrr  
       35 天前 via iPhone
    很多知识不是马上就能掌握,很多坑踩了才知道
    anotherside
        18
    anotherside  
       10 天前
    @debuggerx flutter_ecommerce_demo 打包了个 release 版 apk 看了下,列表滑动还是卡卡的
    anotherside
        19
    anotherside  
       10 天前
    @anotherside 原来是没开启高刷,加了 flutter_displaymode 这个库好了
    einvcz
        20
    einvcz  
       2 天前
    我自己 java 学的 flutter 。

    官方文档 + ai + 实践

    就这样。

    实践指的是有明确的起点,你要解决什么问题,要做什么事,要做什么产品。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2796 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:06 · PVG 20:06 · LAX 05:06 · JFK 08:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.