Flutter常见问题答疑

Flutter是什么?

Flutter是一个移动应用SDK,包含着完整的控件和工具链,能够让开发者非常轻松地同时开发支持Android和iOS两个平台的应用。

Flutter的意义?

对于用户,Flutter能够提供优美的UI和流畅的使用体验。
对于开发者,Flutter降低了开发App的门槛,加速移动应用的开发速度,并且能够降低同时开发Android和iOS应用的成本和复杂度。
对于设计者,Flutter能够轻松做出原型并且能够保持相当高还原度。

使用Flutter需要哪些方面的经验?

Flutter框架对于熟悉面向对象编程和命令编程的开发者门槛是相当低的,并不需要有移动应用的开发经验,我们已经见过编程经验不多的人都能学习并使用Flutter开发应用。

Flutter能够开发哪些类型的App?

Flutter能够开发Android和iOS上2D(不支持3D)界面的移动应用。
你可以使用Flutter开发具有全特性的应用(包含支持照相,定位,网络连接,存储,第三方SDK等等)。

是哪些人开发Flutter?

Flutter是开源项目,由谷歌和社区的小伙伴在支持。

哪些人在使用Flutter?

谷歌在使用Flutter构建一些business-critical(业务相关的)移动应用,例如,谷歌的移动销售工具应用就是使用Flutter开发的,还有Google Shopping Express的Store Manage应用,还有一些应用处于开发中。

Flutter有什么独特之处?

Flutter跟大部分构建移动应用的技术或者框架不同的是,Flutter没有使用WebView或者平台自带的控件,相反Flutter使用自身的高性能渲染引擎绘制自己的控件。
另外,Flutter仅仅只有小部分C++代码,Flutter使用Dart实现了它自身大部分功能(控件,动画,手势,compositing等等)。这样开发者能够容易阅读,修改Flutter的实现,所以这里提供开发者相当大的空间去控制整个框架而且显著降低入门门槛。

可以使用Flutter开发生产环境的应用了吗?

Flutter仍然处于开发当中,而且还没有到1.0版本。
Flutter的API已经开始稳定,并且我们在根据用户的反馈改进Flutter某些模块。
Flutter正在谷歌内部使用,并且这些应用已经交付给用户使用。
所以你自己决定吧,如果你成功使用Flutter开发应用,请务必告诉我们团队,我们也会感到高兴的。

Flutter可以提供什么?

Flutter SDK包含哪些东西尼?

  • 深度优化,移动优先的2D渲染引擎而且对文本支持非常出色

  • react风格的框架

  • 丰富的控件并且同时支持Android和iOS

  • 支持单元和集成测试的API

  • 支持与系统平台和第三方SDK交互的插件API

  • 支持Windows,Mac和Linux的Headless test runner

  • 支持创建,构建,测试和编译应用的命令行工具

有哪些editor或者IDE支持Flutter?

我们提供了IntelliJ IDEA插件,能够完全支持Flutter的应用开发。
或者你可以使用普通的编辑器搭配命令行工具开发。

Flutter有控件支持吗?

Flutter提供了一系列高质量的Android风格和iOS风格控件,布局和主题。当然,这些控件仅仅只是一个开端,Flutter本身就非常容易创建你自己的控件或者修改已存在的控件。

Flutter有测试框架支持吗?

Flutter提供一系列的API帮你编写单元和集成测试,了解更多
我们使用自己测试API去测试SDK,我们每次的代码提交都会生成一份测试覆盖率报告。

Flutter支持依赖注入吗?

我们暂时还不支持这个功能。

技术

Flutter是由哪些技术构建而成的?

Flutter由C, C++,Dart和Skia(2D渲染引擎)构建的,了解更多

在Android上Flutter是怎样运行的?

引擎的C或C++代码是由Android NDK编译的,而框架的主要代码和应用的代码由Dart compiler编译成native code执行的。

在iOS上Flutter是怎样运行的?

引擎的C或C++代码是由LLVM编译的,而所有Dart的代码会被AOT编译成native code,整个APP运行时使用的是机器指令(并不是拦截器)。

Flutter是否使用了平台的控件?

Flutter自身提供了一系列的控件,这都是由Flutter自己创建和绘制的。
如果我们使用平台提供的控件,整个应用的质量和性能就会被这些控件所限制(RN的缺点)。
由于因为是由同一个渲染引擎渲染,这些控件无论在Android或者iOS上都能保持高度一致,无需小心翼翼布局或者分出两个CodeBase。
由于使用的是同一种语言开发,这极大降低开发门槛和成本。

如果我的系统更新或引入新的控件会怎样尼?

Flutter团队会观察Android和iOS平台新控件的需求,并会打算与社区一起构建支持这些新控件;这些工作可能会给框架带来一些新的特性,一些新的控件或者控件新的实现。
Flutter本身自带了许多控件,而且我们鼓励社区去构建自己的控件库。

如果我的系统更新并引入新的功能会怎样尼?

Flutter的插件系统一开始就被设计为支持开发者自己去开发插件使用系统新功能的特性和能力,开发者无需等待Flutter团队去开发插件暴露系统新的功能或特性。

Flutter能在那些操作系统上开发应用?

Flutter支持Windows,Mac和Linux。

Flutter能否运行所有Dart代码

Flutter只能能够运行大部分Dart代码(不能引入dart:mirrors或dart:html库)

Flutter引擎多大?

截止2017年6月,我们测试Android平台最小的Flutter应用(仅仅只有一个Center控件)大约为6.7MB。
核心引擎 3.3MB
框架+应用代码 1.26MB
LICENSE 55KB
java代码(classes.dex) 40KB
ICU data 2.1MB

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要讲解了“FlutterComponent动画的显和隐怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究...
这篇文章主要讲解了“flutter微信聊天输入框功能如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“f...
本篇内容介绍了“Flutter之Navigator的高级用法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处...
这篇文章主要介绍“Flutter怎么使用Android原生播放器”,在日常操作中,相信很多人在Flutter怎么使用Android原生播放器问题上存在疑惑,小编查阅了各式资料,整...
Flutter开发的android端如何修改APP名称,logo,版本号,具体的操作步骤:修改APP名称找到文件:android\\app\\src\\main\\AndroidManifest.xml
Flutter路由管理初识路由概念一.路由管理1.1.Route1.2.MaterialPageRoute1.3.Navigator1.4.路由传值1.5 命名路由1.6.命名路由参数传递1.7.适配二、路由钩子三、onUnknownRoute四、结尾初识路由概念路由的概念由来已久,包括网络路由、后端路由,到现在广为流行的前端路由。无论路由的概念如何应用,它的核心是一个路由映射表。比如:名字 detail 映射到 DetailPage 页面等。有了这个映射表之后,我们就可以方便的根据名字来完成路由的转发
前提:针对Android开发者(windows系统下),已安装Git,AndroidStudio(建议4.0+版本)一.下载Flutter SDK地址:https://flutter.dev/docs/development/tools/sdk/releases,在 Stable channel (Windows)里面下最新版本即可。Flutter的渠道版本会不停变动,请以Flutter官网为准。在中国,要想正常获取安装包列表或下载安装包,可能需要翻墙,也可以去Flutter github项目下去下载安
一、变量变量是一个引用,根据Dart中“万物皆对象”原则,即变量存储的都是对象的引用,或者说它们都是指向对象。1.1.声明变量://1.不指定类型var name = 'aaa';//2.明确指定类型String name = 'aaa';因为有类型推导,所以两种实现效果一样,官方推荐在函数内的本地变量尽量使用var声明。在变量类型并不明确的情况下,可以使用dynamic关键字//3.使用dynamic关键字dynamic name = 'aaa';1.2.默认值未初始化的变量
前言Flutter2.0发布不久,对web的支持刚刚进入stable阶段。初学几天,构建web应用时候碰到一些问题,比如中文显示成乱码,然后加载图片出现图片跨域问题:Failed to load network image...Trying to load an image from another domain?1.开启web端构建:使用下面这个命令才可以开启Web端构建的支持flutter config --enable-web提示我们:重新启动编辑器,以便它们读取新设置。2.重
一.Flutter打Android release包的步骤:1.为项目创建一个.jks签名文件(很简单,跳过)2.创建一个文件key.properties,直接复制下面key.properties位置如图:在里面输入一下内容:storePassword=iflytekkeyPassword=iflytekkeyAlias=teachingmachinestoreFile=E:/teacher/app/keys/TeachingMachine.jks输入你自己的passwork以及
1 问题Android原生向js发消息,并且可以携带数据2 实现原理Android原生可以使用RCTEventEmitter来注册事件,然后这里需要指定事件的名字,然后在js那端进行监听同样事件的名字监听,就可以收到消息得到数据Android注册关键代码reactContext.getJSModule(DeviceEventManagerModule.RCT...
1 Flexbox布局1) flexDirection 可以决定布局的主轴,子元素是应该沿着水平轴(row)方向排列,还是沿着竖直轴(column)方向排列2) justifyContent 决定其子元素沿着次轴(与主轴垂直的轴,比如若主轴方向为row,则次轴方向为column)的排列方式 有flex-start、center、flex-end、space-around...
1 实现的功能在网上看React Native文档,我特码就想实现一个页面到另外一个页面的跳转,然后另外一个页面怎么获取参数,特么没找到一个说清楚的,要么太复杂,要么说了不理解,下面是我自己写的一个App.js文件,实现一个Home页面跳到另外Details页面,并且携带了参数怎么在Details页面获取,就是这么简单粗暴.2 测试DemoApp.js文件如下...
1 问题在一个文件构建一个对象,然后在另外一个文件里面new这个对象,通过构造方法传递参数,然后再获取这个参数2 测试代码Student.js文件如下'use strict';import React from 'react'import {NativeModules, NativeEventEmitter, DeviceEventEmitter,Ale...
1 简单部分代码export default class App extends Component<Props> { render() { return ( <View {styles.container}> <View {styles.welcome}> &l...
1 怎么实现发送和接收事件理论上封装了Android原生广播的代码,需要注册和反注册,这里用DeviceEventEmitter实现//增加监听DeviceEventEmitter.addListener//取消监听//this.emitter.remove();这里可也可以通过安卓原生向页面js发送消息,可以参考我的这篇博客React Native之Android原生通过Dev...
1、Component介绍一般Component需要被其它类进行继承,Component和Android一样,也有生命周期英文图片如下2 具体说明1)、挂载阶段constructor()//构造函数,声明之前先调用super(props)componentWillMount()//因为它发生在render()方法前,因此在该方法内同步设置状态...
1 触摸事件普通点击我们可以使用onPress方法,我们可以使用Touchable 系列控件设计我们的按钮TouchableHighlight 背景会在用户手指按下时变暗TouchableNativeFeedback用户手指按下时形成类似墨水涟漪的视觉效果TouchableOpacity指按下时降低按钮的透明度,而不会改变背景的颜色TouchableWithoutFeedbac...
1 问题部分代码如下class HomeScreen extends React.Component { render() { return ( <View {{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> <Text>Home Scre...
1 Props(属性)和State(状态)和简单样式简单使用App.js代码如下/** * Sample React Native App * https://github.com/facebook/react-native * * @format * @flow */import React, {Component} from 'react';import {Pla...