腾讯 Flutter 跨平台 Web 实践

Flutter:从入门到实践 阅读详情

点击上方“开发者技术前线”,选择“星标”

每天 14.00 在看 | 真爱 


640?wx_fmt=jpeg

  来源:腾讯新闻前端团队   |  作者  SegmentFault


Flutter是一种新型的“客户端”技术。它的最终目标是替代包含几乎所有平台的开发:iOS,Android,Web,桌面;做到了一次编写,多处运行。掌握Flutter web可能是Web前端开发者翻盘的唯一机会。



640?wx_fmt=jpeg


在前些日子举办的Google IO 2019 年度开发者大会上,Flutter web作为一个很亮眼的技术受到了开发者的追捧(重磅! Flutter 热修复,生态、跨端计划公布)。这是继Flutter支持Android、IOS等设备之后,又一个里程碑式的版本,后续还会支持windows、linux、Macos、chroms等其他嵌入式设备。Flutter本身是一个类似于RN、WEEX、hHybrid等多端统一跨平台解决方案,真正做到了一次编写,多处运行,它的发展超出了很多人的想象,值得前端开发者去关注,今天我们来体验一下Flutter Web。


概览


先了解一下Flutter, 它是一个由谷歌开发的开源移动应用软件开发工具包,用于为Android和iOS开发应用,同时也将是Google Fuchsia下开发应用的主要工具。自从FLutter 1.5.4版本之后,支持了Web端的开发。它采用Dart语言来进行开发,与JavaScript相比,Dart在 JIT(即时编译)模式下,速度与 JavaScript基本持平。但是当Dart以 AOT模式运行时,Dart性能要高于JavaScript。


Flutter内置了UI界面,与Hybrid App、React Native这些跨平台技术不同,Flutter既没有使用WebView,也没有使用各个平台的原生控件,而是本身实现一个统一接口的渲染引擎来绘制UI,Dart直接编译成了二进制文件,这样做可以保证不同平台UI的一致性。它也可以复用Java、Kotlin、Swift或OC代码,访问Android和iOS上的原生系统功能,比如蓝牙、相机、WiFi等等。我们公司的Now直播、企鹅辅导等项目、阿里的闲鱼等商业化项目已经大量在使用。


架构


640?wx_fmt=png


Flutter的顶层是用drat编写的框架,包含Material(Android风格UI)和Cupertino(iOS风格)的UI界面,下面是通用的Widgets(组件),之后是一些动画、绘制、渲染、手势库等。
框架下面是引擎,主要用C / C ++编写,引擎包含三个核心库,Skia是Flutter的2D渲染引擎,它是Google的一个2D图形处理函数库,包含字型、坐标转换,以及点阵图,都有高效能且简洁的表现。Skia是跨平台的,并提供了非常友好的API。第二是Dart 运行时环境以及第三文本渲染布局引擎。
最底层的嵌入层,它所关心的是如何将图片组合到屏幕上,渲染变成像素。这一层的功能是用来解决跨平台的。

了解了FLutter 之后,我来说一下今天的重头戏,Flutter for Web。要想知道Flutter为什么能在web上运行,得先来看看它的架构。


640?wx_fmt=png


通过对比,可以发现,web框架层和mobile的几乎一模一样。因此只需要重新实现一下引擎和嵌入层,不用变动Flutter API就可以完全可以将UI代码从Android / IOS Flutter App移植到Web。Dart能够使用Dart2Js编译器把Dart代码编译成Js代码。大多数原生App元素能够通过DOM实现,DOM实现不了的元素可以通过Canvas来实现。


安装


Flutter Web开发环境搭建,以我的windows环境为例进行讲解,其他环境类似,安装环境比较繁琐,需要耐心,有Android开发经验最好。


1、在Windows平台开发的话,官方的环境要求是Windows 7 SP1或更高版本(64位)。


2、Java环境,安装Java 1.8 + 版本之上,并配置环境变量,因为android开发依赖Java环境。


对于Java程序开发而言,主要会使用JDK的两个命令:javac.exe、java.exe。路径:C:Javajdk1.8.0_181bin。但是这些命令由于不属于windows自己的命令,所以要想使用,就需要进行路径配置。单击“计算机-属性-高级系统设置”,单击“环境变量”。在“系统变量”栏下单击“新建”,创建新的系统环境变量(或用户变量,等效)。


640?wx_fmt=jpeg


(1) 新建->变量名"JAVA_HOME",变量值"C:Javajdk1.8.0_181"(即JDK的安装路径) 
(2) 编辑->变量名"Path",在原变量值的最后面加上“;%JAVA_HOME%bin;%JAVA_HOME%jrebin” 
(3) 新建->变量名“CLASSPATH”,变量值“.;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar”


3、Android Studio编辑器,安装Android Studio, 3.0或更高版本。我们需要用它来导入Android license和管理Android SDK以及Android虚拟机。(默认安装即可)


安装完成之后设置代理,左上角的File-》setting-》搜索proxy,设置公司代理,用来加速下载Android SDK。


640?wx_fmt=jpeg


之后点击右上角方盒按钮(SDK Manager),用来选择安装SDK版本,最好选Android 9版本,API28,会有一个很长时间的下载过程。SDK是开发必须的代码库。默认情况下,Flutter使用的Android SDK版本是基于你的 adb (Android Debug Bridge,管理连接手机,已打包在SDK)工具版本。 如果您想让Flutter使用不同版本的Android SDK,则必须将该 ANDROID_HOME 环境变量设置为SDK安装目录。


640?wx_fmt=jpeg


右上角有个小手机类型的按钮(AVD Manager),用来设置Android模拟器,创建一个虚拟机。如果你有一台安卓手机,也可以连接USB接口,替代虚拟机。这个过程是调试必须的。安装完成之后,在 AVD (Android Virtual Device Manager) 中,点击工具栏的 Run。模拟器启动并显示所选操作系统版本或设备的启动画面。代表了正确安装。


640?wx_fmt=jpeg


4、安装Flutter SDK


下载Flutter SDK有多种方法,看看哪种更适合自己:
Flutter官网下载最新Beta版本的进行安装:
https://flutter.dev/docs/development/tools/sdk/releases
也可Flutter github项目中去下载,地址为:https://github.com/flutter/flutter/releases
版本越新越好,不要低于1.5.4。


将安装包zip解压到你想安装Flutter SDK的路径(如:C:srcflutter;注意,不要将flutter安装到需要一些高权限的路径如C:Program Files)。记住,之后往环境变量的path中添加;C:srcflutterbin,以便于你能在命令行中使用flutter。


使用镜像
由于在国内安装Flutter相关的依赖可能会受到限制,Flutter官方为中国开发者搭建了临时镜像,大家可以将如下环境变量加入到用户环境变量中:

PUB_HOSTED_URL:https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL: https://storage.flutter-io.cn


640?wx_fmt=jpeg


5、安装Dart与Pub。安装webdev、stagehand


Pub是Dart的包管理工具,类似npm,捆绑安装。
Dart安装版地址:
http://www.gekorm.com/dart-windows/
默认安装即可,安装之后记住Dart的路径,并且配置到环境变量path中,以便于可以在命令行中使用dart与pub,默认的路径是:C:Program FilesDartdart-sdkbin
先安装stagehand,stagehand是创建项目必须的工具。查看一下
C:\Users\chunpengliu\AppData\Roaming\Pub\Cache\bin目录下是否包含stagehand和webdev,如果有,添加到环境变量的path里面,如果没有,按下面方法安装:


pub global activate stagehand


webdev是一个类似于Koa的web服务器,执行以下命令安装


pub global activate webdev	
# or	
flutter packages pub global activate webdev



6、配置编辑器安装Flutter和Dart插件


Flutter插件是用来支持Flutter开发工作流 (运行、调试、热重载等)。
Dart插件 提供代码分析 (输入代码时进行验证、代码补全等)。Android Studio的设置在File-》setting-》plugins-》搜索Flutter和Dart,安装之后重启。


640?wx_fmt=jpeg


VS code的设置在extension-》搜索Flutter和Dart,安装之后重启。


640?wx_fmt=jpeg


7、运行 flutter doctor


打开一个新的命令提示符或PowerShell窗口并运行以下命令以查看是否需要安装任何依赖项来完成安装:


flutter doctor


这是一个漫长的过程,flutter会检测你的环境,并安装所有的依赖,直至:No issues found!,如果有缺失,会就会再那一项前面打x。你需要一一解决。


640?wx_fmt=jpeg


一切就绪!



创建应用


1、启动 VS Code

调用 View>Command Palette…(快捷键ctrl+shift+p)
输入 ‘flutter’, 然后选择 ‘Flutter: New web Project’ 


640?wx_fmt=jpeg


输入 Project 名称 (如flutterweb), 然后按回车键
指定放置项目的位置,然后按蓝色的确定按钮
等待项目创建继续,并显示main.dart文件。到此,一个Demo创建完成。


640?wx_fmt=jpeg


我们看到了熟悉的HTML文件以及项目入口文件main.dart。
web目录下的index.html是项目的入口文件。main.dart初始化文件,图片相关资源放在此目录。
lib目录下的main.dart,是主程序代码所在的地方。
每个pub包或者Flutter项目都包含一个pubspec.yaml。它包含与此项目相关的依赖项和元数据。
analysis_options.yaml是配置项目的lint规则。
/dart_tool 是项目打包运行编译生成的文件,页面主程序main.dart.js就在其中。


2、调试Demo,打开命令行,进入到项目根目录,执行:


webdev flutterweb


编译、打包完成之后,自动启动(或者按F5)默认浏览器,看一下转换后的HTML页面结构:


640?wx_fmt=png


lib/main.dart是主程序,源码非常简单,整个页面用widgets堆叠而成,区别于传统的html和css。


import 'package:flutter_web/material.dart';	
	
void main() => runApp(MyApp());	
	
class MyApp extends StatelessWidget {	
  @override	
  Widget build(BuildContext context) {	
    return MaterialApp(	
      title: 'Flutter Demo',	
      theme: ThemeData(	
        primarySwatch: Colors.blue,	
      ),	
      home: MyHomePage(title: 'Flutter Demo Home Page'),	
    );	
  }	
}	
	
class MyHomePage extends StatelessWidget {	
  MyHomePage({Key key, this.title}) : super(key: key);	
	
  final String title;	
	
  @override	
  Widget build(BuildContext context) {	
    return Scaffold(	
      appBar: AppBar(	
        title: Text(title),	
      ),	
      body: Center(	
        child: Column(	
          mainAxisAlignment: MainAxisAlignment.center,	
          children: <Widget>[	
            Text(	
              'Hello, World!',	
            ),	
          ],	
        ),	
      ), 	
    );	
  }	
}



区别与flutter App应用,我们导入的是flutter_web/material.dart库而非flutter/material.dart,这是因为目前App的接口并非和Web的完全通用,不过随着谷歌开发的继续,它们最终会被合并到一块。
打开pubspec.yaml(类似于package.json),可以看到只有两个依赖包flutter_web和flutter_web_ui,这两个都已在github上开源。dev的依赖页非常少,两个编译相关的包,和一个静态文件分析包。


name: flutterweb	
description: An app built using Flutter for web	
environment:	
  # You must be using Flutter >=1.5.0 or Dart >=2.3.0	
  sdk: '>=2.3.0-dev.0.1 <3.0.0'	
dependencies:	
  flutter_web: any	
  flutter_web_ui: any	
dev_dependencies:	
  build_runner: ^1.4.0	
  build_web_compilers: ^2.0.0	
  pedantic: ^1.0.0	
dependency_overrides:	
  flutter_web:	
    git:	
      url: https://github.com/flutter/flutter_web	
      path: packages/flutter_web	
  flutter_web_ui:	
    git:	
      url: https://github.com/flutter/flutter_web	
      path: packages/flutter_web_ui



实战

接下来,我们创建一个具有图文功能的下载,根据实例来学习flutter,我们将实现下图的页面。它是一个上下两栏的布局,下栏又分为左右两栏。


640?wx_fmt=jpeg

第一步:更改主应用内容,打开lib/main.dart文件,替换class MyApp,首先是根组件MyApp,它是一个类组件继承自无状态组件,是项目的主题配置,在home属性中调用了Home组件:



class MyApp extends StatelessWidget {	
  // 应用的根组件	
  @override	
  Widget build(BuildContext context) {	
    return MaterialApp(	
      title: '腾讯新闻客户端下载页', //meta 里的titile	
      debugShowCheckedModeBanner: false, // 关闭调试bar	
      theme: ThemeData(	
        primarySwatch: Colors.blue, // 页面主题 Material风格	
      ),	
      home: Home(), // 启动首页	
    );	
  }	
}



第二步,在Home类中,是我们要渲染的页面顶导,运用了AppBar组件,它包括了一个居中的页面标题和居右的搜索按钮。文本可以像css一样设置外观样式。


class MyApp extends StatelessWidget {	
  // 应用的根组件	
  @override	
  Widget build(BuildContext context) {	
    return MaterialApp(	
      title: '腾讯新闻客户端下载页', //meta 里的titile	
      debugShowCheckedModeBanner: false, // 关闭调试bar	
      theme: ThemeData(	
        primarySwatch: Colors.blue, // 页面主题 Material风格	
      ),	
      home: Home(), // 启动首页	
    );	
  }	
}



第三步,创建页面主体内容,一张图加多个文本,使用了文本组件和图片组件,页面结构采用了flex布局,由于两个Expanded的Flex值均为1,因此将在两个组件之间平均分配空间。SizedBox组件相当于一个空盒子,用来设置margin的距离


class Body extends StatelessWidget {	
  const Body({Key key}) : super(key: key);	
	
  @override	
  Widget build(BuildContext context) {	
    return Row(	
      crossAxisAlignment: CrossAxisAlignment.stretch,	
      mainAxisAlignment: MainAxisAlignment.spaceBetween,	
      children: <Widget>[	
        Expanded( // 左侧	
          flex: 1,	
          child: Image.asset(// 图片组件	
            "background-image.jpg", // 这是一张在web/asserts/下的背景图	
            fit: BoxFit.contain,	
          ),	
        ),	
        const SizedBox(width: 90.0),	
        Expanded( // 右侧	
          flex:1,	
          child: Column(	
            mainAxisAlignment: MainAxisAlignment.center,	
            crossAxisAlignment: CrossAxisAlignment.start,	
            children: <Widget>[	
              Text( // 文本组件	
                "腾讯新闻",	
                style: TextStyle(	
                    color: Colors.black, fontWeight: FontWeight.w600, fontSize: 50.0, fontFamily: 'Merriweather'),	
              ),	
              const SizedBox(height: 14.0),// SizedBox用来增加间距	
              Text(	
                "腾讯新闻是腾讯公司为用户打造的一款全天候、全方位、及时报道的新闻产品,为用户提供高效优质的资讯、视频和直播服务。资讯超新超全,内容独家优质,话题评论互动。",	
                style: TextStyle(	
                    color: Colors.black, fontWeight: FontWeight.w400, fontSize: 24.0, fontFamily: "Microsoft Yahei"),	
                textAlign: TextAlign.justify,	
              ),	
              const SizedBox(height: 20.0), 	
              FlatButton(	
                onPressed: () {}, // 下载按钮的响应事件	
                color: Color(0xFFCFE8E4),	
                shape: RoundedRectangleBorder(	
                  borderRadius: BorderRadius.circular(16.0),	
                ),	
                child: Padding(	
                  padding: const EdgeInsets.all(12.0),	
                  child: Text("点击下载", style: TextStyle(fontFamily: "Open Sans")),	
                ),	
              ),	
            ],	
          ),	
        ),	
        const SizedBox(width: 100.0),	
      ],	
    );	
  }	
}


到此,页面创建结束,保存,运行webdev serve,就可以看到效果了。


总结


FLutter web是Flutter 的一个分支,在开发完App之后,UI层面的FLutter代码在不修改的情况下可以直接编译为Web版,基本可以做到代码100%复用,体验还不错。目前Flutter web作为预览版无论从性能上、易用上还是布局上都超出了预期,触摸体验挺好,虽然体验比APP差一些,但是比传统的web要好很多。试想一下 Flutter 开发iOS 和Android的App 还免费赠送一份Web版,并且比传统的web开发出来的体验还好。Write once ,Run anywhere。何乐而不为?


我觉得随着谷歌的持续优化,等到正式版发布之后,开发体验越来越好,Flutter开发者会吃掉H5很大一部分份额。Flutter 可能会给目前客户端的开发模式带来一些变革以及分工的变化, Flutter目前的开发体验不是很好, 但是潜力很大,值得前端人员去学习。


但是目前还是有一部分问题,Flutter web是为客户端开发(尤其是安卓)人员开发准备的,对于前端理解来说学习成本有点高。目前FLutter web和 flutter 还是两个项目,编译环境也是分开的,需要在代码里面修改Flutter相关库的引用为Flutter_web,组件还不能达到完全通用,这个谷歌承诺正在解决中,谷歌的最终目标是Web、移动App、桌面端win mac linux、以及嵌入式版的Flutter代码库之间保持100%的代码可移植性。


个人感觉,开发体验还不太好,还有很多坑要去踩,版本变更很快。还有社区资源稀少的问题,需要一定长期的积累。兼容性问题,代码转换后大量使用了web components,除了chrome之外,兼容性还是有些问题。


PS:开发者技术前线届时本号已分别对闲鱼,美团,京东,腾讯,爱奇艺,微店FLutter做了推文,欢迎业内各大公司对大前端技术实践投稿。

END

开发者技术前线 ,汇集技术前线快讯和关注行业趋势,大厂干货,是开发者经历和成长的优秀指南。

历史推荐


美团基于跨平台 Flutter 的动态化平台建设

从简历被刷到拿字节跳动 offer,我花了一年时间

支付宝 App 启动性能优化

640? 640?wx_fmt=gif 640?wx_fmt=png 不错就点个在看吧!


从Flutter开始聊聊跨平台移动开发框架 Flutter 是一款由 Google 开发的开源、跨平台移动端开发框架。Flutter 使用 Dart 作为开发语言,这是一门简洁、强类型的编程语言。它允许使用同一个代码库构建高性能、漂亮的 iOS 和 Android 应用,Flutter还提供了两套视觉库,可以针对不同的平台有不同的展示效果。此外,通过自定义的 Flutter 引擎可以将其嵌入到其他平台。 一直以来,跨平台工具采用以下两种方法之一: 在原生应用程序中嵌入 web view ,像构建网站一样构建应用程序。 封装原生平台里的. 阅读详情

相关推荐

如何用Flutter实现跨平台移动开发

一直以来,跨平台工具采用以下两种方法之一:为了使移动端开发变得更好,Flutter 尝试了一种不同的方法。它提供了开发人员工作的框架应用程序和能够托管应用程序的可移植运行时的引擎。该框架依托 Skia 图形库而构建,提供了实际渲染时用到的 widgets,而不仅仅是原生应用控件的包装器。就像 web 包装器选项提供的那样,该方法可以灵活的以完全自定义的方式构建跨平台应用程序,同时还会提供流畅的性能体验。与此同时,Flutter 自带的丰富的 widget 库以及一些开源的 widgets 使其成为一个功能丰

m0_71729058的博客 1418

Flutter 到底能不能成为跨平台开发终极之选?

跨端技术是Android程序员乃至所有移动开发程序员一直在研究的课题。 3月4日,谷歌正式发布了 Flutter 的 2.0。该版本最大的特性就是可以支持五大主流的操作系统:iOS、Android、Linux、Windows 和 MacOS。官方甚至还说丰田将会把 Flutter 带到汽车中。 也就是说,我们可以用一套 Flutter 代码适配全平台了。 同时间,开发社区讨论炸开了锅:Flutter 到底能不能成为跨平台开发终极之选?Flutter不是正在被放弃吗? 相信很多人心中都有上面这些疑惑,今天我们

初一十五的博客 1773

【Flutter入门】1. 从零开始的flutter跨平台开发之旅(概述、环境搭建、第一个Flutter应用)

随着移动互联网的发展,跨平台开发已经成为一个不可忽视的技术方向。本文将带领读者从零开始学习Flutter,循序渐进地掌握这个强大的跨平台开发框架。截至2024年12月,Flutter已经发展到了3.27版本。在学习和使用的过程中,我发现国内现在网上可以找到的Flutter相关文章教程等并不多,且很多都是比较过时的。因此,我计划从2025年开始,分享自己平时做的笔记以及工作上积累的经验,希望能对正在学习或使用Flutter的同学有所帮助。同时,我也希望通过写作来磨练自己的技术。

2501_91100273的博客 1692

Flutter是跨平台开发终极之选吗?Android开发该如何快速上手Flutter?

跨端技术是Android程序员乃至所有移动开发程序员一直在研究的课题。 3月4日,谷歌正式发布了 Flutter 的 2.0。该版本最大的特性就是可以支持五大主流的操作系统:iOS、Android、Linux、Windows 和 MacOS。官方甚至还说丰田将会把 Flutter 带到汽车中。 也就是说,我们可以用一套 Flutter 代码适配全平台了。 同时间,开发社区讨论炸开了锅:Flutter 到底能不能成为跨平台开发终极之选?Flutter不是正在被放弃吗? 相信很多人心中都有上面这些疑惑,今天我们

datian1234的博客 3645

跨平台UI框架Flutter的入门和使用

前言 文章首发于个人博客HuRuWo的技术小站,如果本文非vip用户无法完全浏览,可前往原文地址查看文章。 原文章地址跨平台UI框架Flutter的入门和使用 Flutter的简介 现如今,跨平台已是大势所趋。层出不穷的跨平台方案也在不停地迭代。下面看一下谷歌发布的跨平台方案UI框架Flutter。 Flutter是Google用以帮助开发者在Ios和Android两个平台快速开发高质量原生应用的...

HURUWO的技术博客 1485

腾讯技术团队整理,年度好文轻松彻底入门 Flutter,秒变大前端

原文作者:腾讯技术 原文链接:https://zhuanlan.zhihu.com/p/90836859 来源:知乎 本文真对 Flutter 的技术特性,做了一些略全面的入门级的介绍,如果你听说过Flutter,想去了解它,但是又不想去翻厚厚的API,那么本文就是为你准备的。 随着纯客户端到Hybrid技术,到RN&Weex,再到如今的Flutter技术,客户端实现技术不断前进。 在...

weixin_43901866的博客 1508

跨平台新潮!打脸,Flutter被放弃了?

最近在有些社区看见了有一些迷惑的说法:Flutter 还有人在用呢? Flutter 不能用了吗?Flutter 是被放弃了吗? 没有。 而且 Flutter 目前基本上跨平台方案的首选,社区活跃度高,官方更新频率快,目标很远大,如今已经很难想到第二个有潜力的方案了。 移动端的跨平台之路 随着移动终端的多样性发展,一套代码适配多个平台已经成为移动开发者的终极梦想,跨平台技术也一直在发展中。 目前为止,我们移动端的跨平台开发技术经历了三个阶段,如下图,这三个阶段的代表框架分别是:Cordova、React

weixin_49559515的博客 1万+

Flutter基础篇(9)-- 手把手教你用Flutter实现Web页面编写

声明:本文是作者AWeiLoveAndroid原创,版权归作者AWeiLoveAndroid所有,侵权必究。如若转发,请注明作者和来源地址!未经授权,严禁私自转载! 前面一篇文章介绍了Flutter for Web,这里就详细的讲解一下如何使用Flutter实现Web页面的编写。让大家10分钟之内快熟上手实践。 如果不想看文章,也可以看我的视频讲解: 手把手教你用Flutter实现Web...

lzw的专栏 3797

从0到1掌握Flutter(一)Flutter与移动端跨平台

本文作为《从0到1掌握Flutter》的第一篇文章,初步介绍了什么是Flutter,以及Flutter的优势与影响力,和移动端跨平台的历史。

qq_40630019的博客 1907

Flutter Web 开发实践与优化

目前,除了可以支持Android、iOS移动跨平台开发之外,Flutter还支持macOS、Windows、Linux和Web等多个跨平台的开发。可以说,作为一款先进的跨平台开发框架,Flutter已经真正意义上实现了“一次编写,处处运行”的美好愿景。众所周知,Dart 语言存在之初就已经支持直接编译成JavaScript,并且针对开发和生产环境的工具链进行了优化。许多重要的应用已经使用 Dart 编译成的 JavaScript 在生产环境上运行,包括 Google Ads 的广告商工具。

xiangzhihong8的专栏 1083

Flutter for Web:为什么 Flutter 最适合 Web 应用开发?

这是 Flutter 开发的 Web 应用程序开发框架,以便企业可以通过与平台无关的解决方案接触更多受众。您可以使用此工具创建 PWA,对您的应用程序进行原型设计并使用单个代码库进行开发。除了 PWA,此工具还支持单页应用程序。Flutter for web的稳定版本是在 Flutter 2.0 版中引入的。但是,Web 应用程序开发框架在 3.0 版本中获得了一些令人兴奋的增强和功能。以下是 Flutter 3.0 发生的一些事情。...

iCloudEnd的博客 1209

为什么 Flutter 是跨平台开发的终极之选

跨平台开发是当下最受欢迎、应用最广泛的框架之一。能实现跨平台开发的框架也五花八门,让人眼花缭乱。最流行的跨平台框架有 Xamarin、PhoneGap、Ionic、Titanium、Monaca、Sencha、jQuery Mobile、React native、Flutter 等等。但这些工具的表现也是高低有别,各有千秋。 在这些流行的框架中,有很多也已经消失在了历史的长河中被人渐渐遗忘了。但 ...

weixin_38168590的博客 417

SAP HR模块配置假期日历和缺勤类型

SAP的HR模块。业务顾问在实施时一般会配置未来10年的假期日历,到期后再进行配置。同时,增加请假类型(缺勤信息类型)。记录这一过程。

福来阁86号技师的妖孽日常 5524

Flutter:跨平台开发的效率革命与实践精髓

Flutter作为Google推出的跨平台开发框架,通过自绘引擎、三层架构和Dart语言的创新组合,实现了开发效率与原生体验的完美平衡。其核心技术包括脱离原生依赖的Skia/Impeller渲染引擎、高效的Widget-Element-RenderObject架构,以及支持热重载的Dart语言。在开发实践中,Flutter提供分级状态管理方案、性能优化技巧和原生交互能力,适用于从简单应用到复杂企业级项目。目前已被Google、阿里等巨头采用,支撑亿级用户应用,形成完善的开发生态。Flutter正持续推动跨平

2501_93575716的博客 1312

【STM32Cube HAL】输入捕获(六)——脉宽测量

1

HAHAHA 4907

告别盲调!用Synopsys VIP搭建PCIe 5.0验证环境,手把手搞定链路训练与均衡调试

本文详细介绍了基于Synopsys VIP搭建PCIe 5.0验证环境的实战指南,重点解析了链路训练(LTSSM)与均衡调试的关键技术。通过配置VIP组件、设计验证平台架构及实战调试技巧,帮助工程师高效解决PCIe 5.0验证中的常见问题,提升芯片验证效率与可靠性。

weixin_28700411的博客 458

跨平台开发框架全景分析:Flutter、RN、KMM 与腾讯 Kuikly 谁更值得选择?

性能与体验优先推荐Kuikly:接近原生,覆盖面大,适合腾讯生态Flutter:生态成熟,跨端一致性最优原生团队为主推荐KMM,逻辑共享,UI 原生前端团队主导推荐,JS 门槛低,迭代快小程序为核心推荐,国内生态完善📌最后的话跨平台框架没有“一统天下”的方案,只有最合适的场景。如果你关注性能与多端覆盖,值得特别留意腾讯开源的Kuikly;如果你希望生态和社区支持强大,Flutter 和 React Native 依然是更稳妥的选择。

wayne214的博客 1557

LC滤波器设计实战:从理论计算到PCB布局的完整指南

滤波器是信号处理与电路设计中的基础组件,用于从复杂信号中提取特定频率分量或抑制干扰噪声。其核心原理基于电感(L)和电容(C)等无源元件的频率选择特性,通过特定的网络拓扑实现幅频与相频特性的塑造。在工程实践中,LC滤波器因其结构简单、可靠性高、成本可控,成为射频、模拟及电源电路中的关键技术手段。其设计价值在于将理论网络综合转化为可量产、高性能的硬件解决方案,广泛应用于通信系统、音频处理、电源净化和传感器信号调理等场景。本文聚焦于LC滤波器的工程设计全流程,深入剖析了巴特沃斯、切比雪夫等经典类型的选型权衡,并重

weixin_34194829的博客 273

Flutter:重塑跨平台开发的技术标杆与实践指南

Flutter作为新一代跨平台开发框架,通过自绘渲染引擎、响应式Widget架构和Dart语言三大核心技术革新,实现了原生级性能与开发效率的统一。其核心优势包括:100%跨平台UI一致性、120fps流畅动画性能、热重载快速开发体验。在实战中,开发者需掌握状态管理(如Provider/Bloc)、原生交互(Platform Channel)和性能优化等关键技能。Flutter已成为全球超500万开发者的首选工具,为移动应用开发带来全新范式。

2501_93575716的博客 1046

ONFI5.0命令字实战指南:从基础操作到高级应用

本文深入解析ONFI5.0协议的核心——命令字,提供从基础操作到高级应用的实战指南。详细拆解了NAND闪存的复位、读状态、数据读取(00-30)、页编程(80-10)和块擦除(60-D0)等关键命令周期,并探讨了多平面操作与缓存操作等高级性能优化技巧,帮助开发者高效、稳定地与NAND芯片进行底层交互。

vscode5coder的博客 463

生物分子仿真软件:AMBER_(17).AMBER在核酸研究中的应用

在使用AMBER进行核酸分子动力学模拟之前,需要对核酸系统进行详细的准备。这包括构建初始结构、添加溶剂分子、中和电荷等步骤。以下将详细介绍这些步骤。

kkchenjj的博客 505

深圳站 Meetup 预告 | Flutter 的移动端跨平台实践

5 月 25 日(周六),在 RTC 开发者社区成员@Panda 的帮助下。RTC Dev Meetup 将落地深圳。这次,顺丰科技全栈工程师、Github GSY 系列...

声网的博客 242

【电源专题】案例:对比不同电池在不同电流下的电池放电曲线

无

一点硬件 2840

为什么Flutter是跨平台开发的终极之选

跨平台开发是当下最受欢迎、应用最广泛的框架之一。能实现跨平台开发的框架也五花八门,让人眼花缭乱。 最流行的跨平台框架有 Xamarin、PhoneGap、Ionic、Titanium、Monaca、Sencha、jQuery Mobile、React native、Flutter 等等。但这些工具的表现也是高低有别,各有千秋。 在这些流行的框架中,有很多也已经消失在了历史的长河中被...

AndroidAlvin的博客 335

网工运维掌握OpenClaw这7大必备技能,自动化运维效率直接起飞

OpenClaw的核心就是它的技能系统。通过官方技能市场(clawhub.ai),你只需一条命令就能安装扩展,让AI代理变成你的“运维副手”。今天我就结合网工运维的真实痛点,精选7项最热门、最实用的OpenClaw技能(基于ClawHub下载量和实际测试),手把手教你安装、使用和进阶玩法。这些技能不是玩具,而是能直接提升运维效率10倍以上的生产力工具!安装后,你的OpenClaw代理就能自动处理Zabbix告警、总结syslog日志、更新Obsidian网络拓扑笔记、甚至通过n8n触发自动修复脚本。

网络技术联盟站 574

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【粉丝福利社】Flutter小白开发——跨平台客户端应用开发学习路线(文末送书-完结)

Flutter 初是由Google 公司发起的开源项目,现如今已广泛用于各行各业的应用开发中。不仅Google 内部会使用它构建应用,国内几乎所有大公司也都在使用Flutter,如阿里的闲鱼App,就是一个非常成功的应用案例。基于Flutter 框架,你可以用同样的方法为不同的平台开发应用,即你可以使用同一种方法构建跨iOS、安卓、Web、macOS、Windows、Linux 等平台的应用。使用Flutter 内建的界面组件(小部件),可以快速做出应用界面,从而大大提高开发效率。

愚公智库 9万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 字节跳动喜欢招怎样的技术人?
下一篇: 很多程序员编码时都戴耳机?他们在听什么
DevolperFront
博客等级 码龄8年 465粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值