美文网首页
Flutter的优、缺点

Flutter的优、缺点

作者: 眼中有码 | 来源:发表于2020-01-21 11:02 被阅读0次

    1、Flutter的优点

    • 性能强大,流畅
      Flutter对比weex和react native相比,性能的强大是有目共睹的。基于dom树渲染原生组件,很难与直接在原生视图上绘图比肩性能,Google作为一个轮子大厂,直接在两个平台上重写了各自的UIKit,对接到平台底层,减少UI层的多层转换,UI性能可以比肩原生,这个优势在滑动和播放动画时尤为明显。

    • 快速的2D渲染引擎
      Flutter不依赖于原生平台,它有自己的Skia渲染引擎,通过这个可移植的 GPU 加速的渲染引擎以及高性能本地 ARM 代码运行时,达到跨设备跨平台的高质量用户体验(高帧率60bps)。

    • 热重载
      Flutter的热重载(hot reload)功能可以帮助您在无需重新启动应用的情况下快速、轻松地进行测试、构建用户界面、添加功能以及修复错误。 通过将更新后的源代码文件注入正在运行的Dart虚拟机(VM)中来实现热重载。在虚拟机使用新的的字段和函数更新类后,Flutter框架会自动重新构建widget树,以便您快速查看更改的效果。

    • 可选静态的语言,语言特性优秀
      Dart是一个静态语言,这也是相对于js的一个优势。Dart可以被编译成js,但是看起来更像java。静态语言可以避免错误,获得更多的编辑器提示词,极大的增加可维护性。很多js库也已经用ts重写了,Vue3.0的底层也将全部使用ts编写,静态语言的优势不言而喻。

    • 路由设计优秀
      Flutter的路由传值非常方便,push一个路由,会返回一个Future对象(也就是Promise对象),使用await或者.then就可以在目标路由pop,回到当前页面时收到返回值。这个反向传值的设计基本是甩了微信小程序一条街了。弹出dialog等一些操作也是使用的路由方法,几乎不用担心出现传值困难。

    • 单例模式
      Flutter支持单例模式,单例模式的实现也非常简单。单例模式很好的解决了一些问题。相比之下,js的单例则并不是一个真正的单例,或者说不是一个简单的单例,这也是受限于js所运行的环境。单例模式并不总是合理的,容易被滥用。但是在App的初期开发中,往往一个容易实现的单例可以帮助我们快速完成一些逻辑的搭建。

    2、Flutter的缺点

    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'AutoDriver',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: Login(),
        );
      }
    }
    
    ...省略....
    
    Widget get _appBar {
        return Column(
          children: <Widget>[
            Container(
              decoration: BoxDecoration(
                  gradient: LinearGradient(
                      colors: [Color(0x66000000), Colors.transparent],
                      begin: Alignment.topCenter,
                      end: Alignment.bottomCenter)),
              child: Container(
                padding: EdgeInsets.fromLTRB(0, 20, 0, 0),
                height: 80.0,
                decoration: BoxDecoration(
                    color:
                        Color.fromARGB((appBarAlpha * 255).toInt(), 255, 255, 255)),
                child: SearchBar(
                  searchBarType: appBarAlpha > 0.2
                      ? SearchBarType.homeLight
                      : SearchBarType.home,
                  inputBoxClick: _jumpToSearch,
                  speakClick: _jumpToSpeak,
                  defaultText: SEARCH_BAR_DEFAULT_TEXT,
                  leftButtonClick: () {},
                ),
              ),
            ),
            Container(
              height: appBarAlpha > 0.2 ? 0.5 : 0,
              decoration: BoxDecoration(
                  boxShadow: [BoxShadow(color: Colors.black12, blurRadius: 0.5)]),
            )
          ],
        );
      }
    

    全是Widget 控件,层层包裹。flutter的学习成本主要在于学习几十种Widget的特性

    相关文章

      网友评论

          本文标题:Flutter的优、缺点

          本文链接:https://www.haomeiwen.com/subject/fjfezctx.html