作家
登录

为安卓开发者介绍的移动开发框架 Flutter

作者: 来源: 2017-10-10 14:40:01 阅读 我要评论

在 Android 开辟中,UI 线程异常重要,完成速度稍慢的工作工作,会显示以下神秘行:


我将跳过所有有关安装和运行 Flutter 应用法度榜样的部分,直接进行操作,如不雅您不肯定 Flutter 是什么,并且有很多问题,请浏览 关于 Flutter 的演进之路 。

Dart

默认为public,经由过程前缀“_” 进行私成仙;

  • 一切都是对象 - 没有“primitives”

  • 定名参数,可选参数,默认值: 点击试用

  • 属性 - 无需在任何处所写“get”办法

  • 级联 - 一切都是构建者

  • 应用 strong mode 类型推导 - 只须要在本地写“var”

  • 集合; 点击试用

  • class HeroScreen extends StatefulWidget {  @override  HeroState createState() => new HeroState();}class HeroState extends State<HeroScreen> with SingleTickerProviderStateMixin {  bool _scaling = false;  @override  Widget build(BuildContext context) {    return new Scaffold(        body: new Scale(      onStart: (details) => setState(() => _scaling = true),      onUpdate: (details) {},      onEnd: (details) => setState(() => _scaling = false),      child: new Container(          color: Colors.black26,          child: new Center(              child: new Row(                  mainAxisAlignment: MainAxisAlignment.center,                  children: <Widget>[                new Text(_scaling ? "Scaling" : "Scale me up"),              ]))),    ));  }}

    Etc

    • 定名构造函数,主动分派到字段; 点击试用

    • 字符串插值,几种类型的字符串; 点击试用

    • dartfmt - 如不雅不想格局化 也可以不消这个对象

    这里有一个 Dart 代码的例子,一个获取 IP 地址的私有办法:

    _getIPAddress() async {    String url = 'https://httpbin.org/ip';    var httpClient = createHttpClient();    var response = await httpClient.read(url);    Map data = http://mobile.51cto.com/JSON.decode(response);    String ip = data['origin'];}

    设计模式

    I/Choreographer(1378): Skipped 55 frames!  The application may be doing too much work on its main thread.

    我很肯定你已将你的 Android 技能大年夜无序代率攀扩大到 MVC、MVP、MVVM,Dagger2、DataBinding 和 Android 架构组件 ,Flutter 根本上就是一个 V(View),响应式视图,它可所以无状况或有状况的 widget,就连 AppCompatActivity 也是一个 widget。

    让我们创建一个异常简单的 Activity,我们须要一个文本视图和一个更新该文本的按钮,下面是 Activity 代码(留意没有 XML):

    public class Click extends Activity {    int count = 0;    protected void onCreate(Bundle bundle) {        super.onCreate(bundle);        setContentView(R.layout.main);        final Button button = (Button) findViewById(R.id.button);        final TextView text = (TextView) findViewById(R.id.counter);        button.setOnClickListener(new View.OnClickListener() {            public void onClick(View v) {                count++;                text.setText("Button clicked " + counter + " times");            }        });    }}

    在 Flutter,你不须要把持视图,就像 setText() 中的代码,你可以应用 state 来替代,并且 Flutter 将会处理好屏幕更新,在 Flutter 中和上述代码等价的是:

    import 'package:flutter/material.dart';class Activity extends StatefulWidget {  @override  ActivityState createState() => new ActivityState();}class ActivityState extends State<Activity> {  int counter = 0;  @override  Widget build(BuildContext context) {    return new Scaffold(      body: new Center(        child: new Column(          mainAxisAlignment: MainAxisAlignment.center,          children: <Widget>[            new Text(              'Button clicked ${counter} times',            ),            new FlatButton(              child: new Text('Increment'),              onPressed: () {                setState(() {                  counter++;                });              },            ),          ],        ),      ),    );  }}

    你也留意到,我们在 setState 中增长了 counter 的值,一旦 onPressed 被触发(之后是 setState),Flutter 将会应用新的 counter 值来从新衬着全部 widget 和 text 对象。

    分别 widget 和 state(对于 Android 开辟人员来说)的最大年夜长处是,如不雅你在 Java 代码中扭转设备或调剂窗口大年夜小(支撑多窗口),则计数器的值将被重置为零,你必须编写大年夜量反复代率攀来治理 Activity 的生命周期。而在 Flutter 中,这是不须要的,现成的功能,无需额外的代码。

    固然 Dart 最终编译为 native 代码,但它不会拜访硬件设备,例如,如不雅你要获取用户地位,你必须应用 平台 通道编写特定平台的代码,与此同时,确切有很多插件来处理这些情况,但你依然欲望登录Android Studio(或 Xcode)在代码之间完成该事项。


      推荐阅读

      通过SSH实现TCP/IP隧道(端口转发):使用OpenSSH可能的8种场景

    interno1 $ vncviewer localhost::7900 externo1 $ ssh -L 0.0.0.0:7900:localhost:5900 user@interno1 对于 Secure Shell (SSH) 如许的收集协定来说,其重要职责就是在终端模式下拜访一个>>>详细阅读


    本文标题:为安卓开发者介绍的移动开发框架 Flutter

    地址:http://www.17bianji.com/lsqh/37758.html

  • 关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)