1,flutter的安装和创建

这个可以去掘金专栏或flutter中文网 这里不再赘述,附网址:掘金:https://juejin.im/post/5b631d326fb9a04fce524db2#heading-1,flutter中文网:https://flutterchina.club/

2,关于开发语言,Dart语言还是挺好学的,光看文档的语法大概也能知道怎么用 如能抽出时间去学Dart进度更快。

3,最常见的Widget  类似于Viewcontroller和NSObject和UIView的结合体,它包含了已经做好的视图样式,包括带导航栏的控制器Scaffold,带tabbar的控制器Tabbar等。还有显示文本的控件叫Text 显示图片的Image等等,它又包含了动画绘制,手势交互,滚动的listView,事件的处理等框架的集成,可以说涵盖了OC里的Foundation很多功能和UIKit的很多功能,所以说它是上述3个的结合体,凡创建视图产生交互等等的处理的类都属于Widget,

4,创建类的时候分状态可变和不可变类型,通常用简写即可创建,创建statefulClass的时候直接敲stf 创建stateless的时候直接敲stl回车即可,之后补写类名

5,main.dart文件是程序入口,相当于main.m,进入根视图方法如下:

void main() => runApp(MyApp()); 

MyApp就是一个控制器的类名,这句话让APP启动之后进入MyApp的视图里。

6,进入主页,我这里让MyApp值当成一个中转站,目的是进入HomePageViewController,这里叫做homePage,homepage里加载一个列表,就是tableview,里面有很多个cell cell上下一段文字,加载一张网络图片,就这么一个需求:

import 'package:flutter/material.dart';
import 'package:testdemo/homepage.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget {// This widget is the root of your application.@overrideWidget build(BuildContext context) {return new MaterialApp(home: HomePage(),);}
}

当然之前已经创建好了homepage.dart文件,是空的,下面来写这个类

7,进入homepage,敲stf创建一个class 名为HomePage:

class HomePage extends StatefulWidget {@override_HomePageState createState() => _HomePageState();
}class _HomePageState extends State<HomePage> {@overrideWidget build(BuildContext context) {return ;}
}

创建好之后return后面需要你返回一个组件,给这个页面使用更新state,因为我们需要一个导航栏,一个view,所以我使用了scaffold和一个listView

class HomePage extends StatefulWidget {@override_HomePageState createState() => _HomePageState();
}class _HomePageState extends State<HomePage> {@overrideWidget build(BuildContext context) {return new Scaffold(backgroundColor: Colors.blue,appBar: AppBar(title: Text("98765"),),body: new ListView.builder(itemBuilder: (context,index){return new PageItem();},itemCount: 20,),);}
}

scaffold在new之后的()里是赋值它的各个属性,具体有什么属性需要Ctrl+左键点进去看,一个视图正常当然有背景色,宽高,间距等等这些属性,作为已经封装完成给我们直接用的scaffold更多了几个导航的属性,可以看到叫做appbar的就是了。body就是这个视图的显示部分,我们初始化一个listview放进来,调用两个属性itemBuilder和itemCount,熟悉tableview的同学都知道,这就是tableviewdelegate的两个方法,cellforrow和numberofcell,是不,而itembuiler里面返回的pageItem就是每一个自定义的cell了

8,具体的pageItem:

class PageItem extends StatefulWidget {@override_PageItemState createState() => _PageItemState();
}class _PageItemState extends State<PageItem> {@overrideWidget build(BuildContext context) {return Container(///卡片包装child: new Card(///增加点击效果child: new FlatButton(onPressed: (){print("点击了哦");},child: new Padding(padding: new EdgeInsets.only(left: 0.0, top: 10.0, right: 10.0, bottom: 10.0),child: new Column(mainAxisSize: MainAxisSize.min,children: <Widget>[///文本描述new Container(child: new Text("这是一点描述",style: TextStyle(color: Colors.blue,fontSize: 14.0,),///最长三行,超过 ... 显示maxLines: 3,overflow: TextOverflow.ellipsis,), margin: new EdgeInsets.only(top: 6.0, bottom: 2.0),alignment: Alignment.topLeft),new Padding(padding: EdgeInsets.all(10.0)),///三个平均分配的横向图标文字new Row(children: <Widget>[new Icon(Icons.star,size: 16,color: Colors.grey,),new Image(image: NetworkImage("https://yiqi-shenyang-test.oss-cn-beijing.aliyuncs.com/uploads/images/20191014/a6ead9d011a87ec96f32ad152173ebcf.jpg"),height: 70,fit: BoxFit.fitWidth,filterQuality: FilterQuality.high,alignment: Alignment.center,),],),],),))),);}
}

上面的代码就是向item内填充各个视图的代码,视图就是一个一个的图层堆上去的,这种的代码虽然量大但是比较容易理解。

这样你可以直接点IDE的⚡️图标直接运行了,效果如图:

话说使用flutter最方便的就是省了重新编译运行的时间,不用重新跑一遍代码。对于iOS来说省了十几秒,对于安卓来说可是飞起来了。

9:各控件的初始化,方法很多,属性也不尽一致,只是自己写例子时候一一用到并且为了加深印象而写的,方法记录如下(发现新的更方便的随时更改):https://blog.csdn.net/qq_27633421/article/details/103295385

10.余下的还有很多很多,刚刚入门flutter,网络请求,异步处理,模型转json,动画,音视频,像iOS原生的推送,地图,还有iOS上用的很习惯的布局masonry和rac啦等等,都要慢慢的发现并尝试移植到flutter中去。

...未完待续

其他文章请查看个人博客:http://zhangqq166.cn/

iOS转向Flutter学习日记相关推荐

  1. Flutter学习日记之底部导航栏BottomNavigationBar组件的使用

    本文地址:https://blog.csdn.net/qq_40785165/article/details/116953235,转载需附上此地址 大家好,我是小黑,一个还没秃头的程序员~~~ 空袋子 ...

  2. Flutter学习日记之使用路由进行页面切换

    本文地址:https://blog.csdn.net/qq_40785165/article/details/116900126,转载需附上此地址 大家好,我是小黑,一个还没秃头的程序员~~~ 你多学 ...

  3. Flutter学习日记之Slidable实现侧滑菜单

    本文地址:https://blog.csdn.net/qq_40785165/article/details/120298992,转载需附上此链接 敏而好学,不耻下问. 大家好,我是小黑,一个还没秃头 ...

  4. iOS程序猿的flutter学习之路

    日常学习Flutter开发的积累 推荐一些平时自己学习Flutter开发当中接触到的优秀文章 -------------------------基础知识 ----------------------- ...

  5. Flutter 3 发布了(文末推荐一个免费的在线Flutter学习教程)

    翻译自 Tim Sneath[1] 2022年5月12日的文章 <Introducing Flutter 3>[2] 作者 :Tim Sneath 翻译 :沙漠尽头的狼(谷歌翻译加持) 链 ...

  6. Flutter学习之Dart语法特性

    一.前言 第一天把Flutter环境搭建了,并简单实现第运行第一个Flutter项目,感觉很不错,一些基本操作和原生体验差不多.用Flutter框架写过App项目的开发者都知道,Flutter是一个使 ...

  7. flutter scrollview_简单易上手的Flutter学习指南App,2020一起来玩转Flutter吧~

    Flutter是谷歌的移动UI框架,可以快速在iOS.Android.Web和PC上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的开发者和 ...

  8. Flutter 学习

    Flutter 学习 参照:https://book.flutterchina.club/ 参照:https://flutter.cn/docs/development/platform-integr ...

  9. Flutter学习-多子布局Widget

    Flutter学习-多子布局Widget 1. Flex 2. Row组件 2.1 Row组件介绍 2.2 属性解析 2.2.1 mainAxisSize 2.2.2 mainAxisAlignmen ...

  10. Flutter学习(一)

    目录 Flutter学习(一) Flutter学习(二)-FlutterGo学习 概念 参考:Flutter 开发文档 在 Flutter 中,几乎所有都是 widget,包括对齐 (alignmen ...

最新文章

  1. macos下使用aria2_用Aria2代替Firefox内置的下载器
  2. NOIP 2016 迟来的满贯
  3. 985高校校长:未来5年教职工要压缩千人,淘汰20-30%
  4. mysql qps 索引查询_【MySQL】MySQL配置调优之 QPS/TPS/索引缓存命中率、innoDB索引缓存命中率、查询缓存命中率查看...
  5. Android 系统(228)---NITZ网络自动对时功能不起作用
  6. BZOJ1026[SCOI2009]windy数
  7. 如何修改html中字号大小,css怎么设置字体大小?
  8. [转载] python的__del__()方法
  9. Python 集合 day3
  10. python下载百度文库文档_Python百度文库爬虫之txt文件
  11. 运维安全·Web组件安全·Nginx
  12. 修改登录密码html代码,html登录界面设置账号密码
  13. 什么是 SQL 注入速查表
  14. DRAM基本单元最为通俗易懂的图文解说
  15. Gartner 发布 2022 年人工智能技术成熟度曲线:复合 AI、决策智能快速发展,因果 AI 是热点
  16. 《匆匆那年》的你,还记得吗?数学中的那些有(hui)趣(se)的定理(14)——毛球定理(Hairy ball theorem)
  17. FFplay文档解读-49-多媒体过滤器三
  18. 了解Nape 2d物理引擎 第一天
  19. vue时间天气插件_vue创建天气webapp
  20. Hive 编号函数

热门文章

  1. HDOJ 6045-Is Derek lying?
  2. 超级账本 —— 面向企业的分布式账本
  3. 笔记本计算机无法启动怎么解决,笔记本开机进不了系统,教您笔记本开机无法进入系统怎么办...
  4. 厚积薄发-Aspects
  5. lone warrior
  6. java中config是什么意思_在计算机的命令中Config是什么意思啊?
  7. win10子系统基本备份
  8. 信用卡一样大小的(小型电脑):树莓派
  9. 【30-60s计数器电路设计】数电课设
  10. 计算机如何理解图像?