美文网首页
Learn Flutter Based on Android

Learn Flutter Based on Android

作者: 奋飞的蜗牛ing | 来源:发表于2018-11-28 11:39 被阅读10次
    • 在Android中,addChild和removeChild动态添加或删除View。 在Flutter中,因为widget是不可变的,所以没有addChild。可以传入一个函数,该函数返回一个widget给父项,并通过布尔值控制该widget的创建。【转变开发思维】

    • 在Android中,通常在继承View的基础上去自定义View。在Flutter中,一个自定义widget通常是通过组合其它widget来实现的,而不是继承。

    • 在Android中,Intent。在Flutter中,Router 和 Navigator。

     Navigator.of(context).pushNamed('/b'); 
    
    • 在Android中,在AndroidManifest.xml中声明Activities,在Flutter中,将具有指定Route的Map传递到顶层MaterialApp实例。

    • startActivityForResult,在Flutter中通过等待push返回的Future来完成。

    // 等待上一个页面返回数据
    Map coordinates = await Navigator.of(context).pushNamed('/location');
    
    // 回到上一级页面,并携带数据
    Navigator.of(context).pop({"lat":43.821757,"long":-79.226392});
    

    Dart是单线程执行模型,支持Isolates(在另一个线程上运行Dart代码的方式)、事件循环和异步编程。 除非您启动一个Isolate,否则您的Dart代码将在主UI线程中运行,并由事件循环驱动(和JavaScript一样)

    • Flutter中的异步:使用async + await,使用setState更新UI,这会触发build方法再次运行并更新数据。【flutter中异步是针对一个函数而言】

    • Isolates ???

    • 网络请求

    // 再调用数据bean封装
    loadData() async {
        String dataURL = "https://jsonplaceholder.typicode.com/posts";
        http.Response response = await http.get(dataURL);
        setState(() {
          widgets = JSON.decode(response.body);
        });
      }
    
    • 分辨率icon的处理
      Flutter遵循像iOS这样简单的3种分辨率格式: 1x, 2x, and 3x。创建一个名为images的文件夹,并为每个图像文件生成一个@2x和@3x文件,如下:
      …/my_icon.png
      …/2.0x/my_icon.png
      …/3.0x/my_icon.png
      需要在asset中声明:
    assets:
     - images/a_dot_burr.jpeg
     - images/a_dot_ham.jpeg
    

    使用图片:return new AssetImage("images/a_dot_burr.jpeg");

    • 生命周期 WidgetsBindingObserver

    • LinearLayout 等价于 Row 和 Co​​lumn

    • RelativeLayout 可以使用 Column、Row和Stack组合实现

    -Flutter中滑动控件全部使用ListView

    • Flutter点击事件:两种方法
      1、Widget支持事件监听,直接设置onPressed: () { }
      2、Widget不支持事件监听,包装到GestureDetector中,再设置onTap: () { }
      GestureDetector还可以设置onTapUp、onTapDown、双击、长按、水平|垂直拖拽

    • Android中的Adapter,Flutter中只需要简单的构件List<Widget>,传给ListView: children即可,Flutter将负责确保它们快速平滑地滚动。Flutter如何给每个item添加点击事件呢?就是给每个item添加GestureDetector监听。Adapter类似于itemBuilder

    相关文章

      网友评论

          本文标题:Learn Flutter Based on Android

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