美文网首页
Flutter初探

Flutter初探

作者: Eason_0cce | 来源:发表于2019-12-10 17:55 被阅读0次

作为一名长期web前端开发,这次涉及app开发,我自我感觉确实有点膨胀。本篇我主要是以web开发者在flutter开发摸索中碰到的一些问题,进行记录。

百度“flutter”赫然出现flutter中文,点击去链接也是可以看到快速开始的引导按钮:

image.png
主页向下也是介绍了fluttter的相关内容。大致意思就是flutter是解决UI层面快速开发ios跟android应用的利器。回到主题点击快速开始。出现不同操作平台的安装介绍 image.png
具体配置就不去赘述,配置了两种系统,本人踩坑之处有以下几点:
mac环境下:1.配置path,久久不能找到正确的路径,后来发现,直接解压开flutter目录,然后打开终端编写export PATH=之后拖动文件夹bin到终端窗口运行就ok。
两种环境:1.安卓studio在模拟器调试hello,world程序依赖包装载失败问题(一定记住要“科-学上网”)
其实写到这里,我要吐槽一句,这个地址:https://flutter.cn/docs
很明显写的比中文官网要很多嘛~建议收藏。

作为一个web开发者我主要是从以下几点切入flutter学习的。1.画UI 2.数据请求 3.用户数据存储(既数据持久化)4.页面状态管理。

首先说下UI,flutter推崇思想是万物皆是Widget,很好,这跟我们web当前流行框架设计思想雷同。再来看看其内部组件。

Text(
  "我是文本组件",
  style: TextStyle(fontSize: 30.0),
)

乍一看,有点像JSX语法又有点像ActionScript(这是一个已经没人学的语言)甚至还有点想js的fuction调用。例子中是一个典型的文本组件,其接受了两个参数,第一个参数是文字内容,第二个参数是文本组件的样式。借助安卓studio或者vsCode咱们可以看到各个组件所有的属性。写多了也就习惯了。
在我学习了一周之后我就可以拿平时小程序项目的界面练手了,主要用到的组件有Column,Row,Expanded,listView,Container,Text等等等。至于什么时候可以对绘制界面有信息呢,等你能抛开书本、教程把这个界面画出来就可以了。

image.png
推荐flutter适配方案:https://github.com/OpenFlutter/flutter_screenutil

下面聊一聊数据请求,官方给出的请求组件有几种,我选择了Dio,因为他跟我之前玩的axios很像,有头部定制,有请求拦截器,也支持promise风格的调用。注意版本很关键!!为什么这么说呢,因为flutter当前在快速发展期,和当年的react一样,同样是Dio版本不一样写法也不一样。在摸索中我封装出来了一个自己的Dio请求小库。

import 'dart:io';
import 'package:dio/dio.dart';
import 'dart:convert' as Convert;
import 'package:shared_preferences/shared_preferences.dart';
import '../models/auth.dart';
class Request {
  Request _instance;
  Dio dio = new Dio();
  getInstance(){
    if(null == _instance){
      _instance = new Request();
      initial();
    }
    return _instance;
  }
  initial()async{
    dio.options.baseUrl="你的请求前缀";
    dio.options.connectTimeout=10000;
    dio.options.receiveTimeout=10000;
    dio.options.responseType=ResponseType.JSON;
  }
  postFormData(String url, data) async{
   dio.options.contentType = ContentType.parse("application/x-www-form-urlencoded");
   var response = await post(url,data);
   return response;
  }
  get(String url) async{
    var response = await request('get',url,null);
    return response;
  }
  post(String url, data) async{
    var response = await request('post',url,data);
    return response;
  }
  request(String type,String  url, data) async{
    SharedPreferences prefs = await SharedPreferences.getInstance();
    var authInfo = prefs.getString('authInfo');
    if(authInfo.isNotEmpty){
      print(authInfo);
      Auth auth = Auth.fromJson( Convert.jsonDecode(authInfo) );
      dio.options.headers = {
       //这里看你自己仙姑需要
      };
    }
    Response response;
    try{
      if(type == 'get'){
        response = await dio.get(url);
      }else{
        response = await dio.post(url,data: data??{});
      }
      return response;
    }on DioError catch(error){
      print(error);
    }
  }
}

你以为封装完了请求方法就可以自由使用api数据了?太天真了。在这个问题上我是彻底跪了。跪在两点:1.请求回来的用户数据怎么持久化 2.存下来的用户数据怎么用。
关于持久化,我用了这个辅助工具:shared_preferences,关于数据使用,我使用了https://javiercbk.github.io/json_to_dart/。请求数据拿到是不能直接用的,比如有特殊字符。所以必须要转成dart model类。关于数据转换,推荐使用:

import 'dart:convert' as Convert;

好像一不小心在数据请求方案那里把数据持久化问题带过了。那就不说了。

关于状态管理,强烈推荐Provider,亲儿子,注意是亲儿子。具体参照地址:https://flutter.cn/docs/development/data-and-backend/state-mgmt/intro
搞懂这三项:
ChangeNotifier
ChangeNotifierProvider
Consumer
就完事儿了。

这是我的学习思路,后面还会更新,写出来,怕自己忘记,也希望可以帮到别人。

相关文章

  • Flutter - Key的原理

    前言 上篇文章我们简单探索了Flutter的渲染原理---Flutter初探渲染原理初探[https://www....

  • Flutter优秀文章汇总_闲鱼5连,6连(更新最后一公里)

    转载 Android Flutter内存初探 Flutter是如何使用内存,又会对Native App的内存带来哪...

  • Android Flutter实践内存初探

    摘要:Android Flutter实践内存初探 闲鱼技术-匠修我们想使用Flutter来统一移动App开发并做了...

  • Flutter 初探

    Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台开发高质量原生应用的全新移...

  • Flutter初探

    官网介绍:Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flu...

  • Flutter初探

    简述 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。Flutte...

  • Flutter初探

    作为一名长期web前端开发,这次涉及app开发,我自我感觉确实有点膨胀。本篇我主要是以web开发者在flutter...

  • Flutter初探

    Flutter的热度很高,在项目中即将开始应用它,本篇简单介绍如何在MacOS中安装和配置一个Hello Worl...

  • Flutter初探

    以下内容来自组内分享,如有侵权,请联系作者删除。目录: 什么是Flutter? Flutter环境配置 如何创建一...

  • Flutter 初探

    Flutter是一款移动应用程序SDK,一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序,媲...

网友评论

      本文标题:Flutter初探

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