flutter入门与实战教程( 五 )


下面介绍一下flutter中的一些常见操作 。
页面跳转
在flutter中,使用导航器来管理页面跳转 。比如跳转到一个newpage,可以这样写:
(上下文)的导航器 。push(materialpageroute(builder:(context){
returnnewpage;
}));
复制代码
推是用来堆的,pop是用来堆的 。
使用materialpageroute会模拟android上跳转页面的截止效果 。
本地图片
让我们看看如何显示本地图片 。
首先,在根目录中创建一个新的文件夹来存储图片,例如图像,并将图片picture.png放入其中 。
在根目录下找到pubspec.yaml文件,这是flutter依赖配置文件,我们需要在这里配置刚才的图片:
assets:
- images/picture.png
复制代码
这样,我们可以使用图像控件来显示此图片:
image. asset(" images/picture. png")
复制代码
引入第三方库
像node的npm和android的jcenter一样,flutter也拥有一个公共仓库pub.devpub.dev是google的dart仓库,在这里可以找到我们需要的包和插件 。
旋舞本身没有吐司,所以让我们访问一个 。在pub.dev上搜索后,我决定使用fluttertoast:
根据说明,在pubspec.yaml文件中的“依赖项”下进行配置:
^3.1.0长笛独奏:
复制代码
androidstudio右上角的包获取同步,您可以使用它:
fluttertoast. showtoast(msg: " 666666 ");
复制代码
ios样式
上面使用的所有控件都是材料设计,它们都在颤振/材料镖包中 。要使用ios风格的控件,请使用flutter/cupertino.dart包:
导入“package: flutter/cupertino. dart”;
复制代码
ios风格的控件基本都是从cupertino开始的 。让我们替换计时器页面中的控件:
导入“package: flutter/cupertino. dart”;
voidmain=runapp(myapp);
类myapp扩展了statelesswidget{
@覆盖
小部件构建(buildcontext上下文){
返回cupertinopp(home: mypage);
}
}
类mypage扩展了statefulwidget{
@覆盖
stateflewidgetcreatestate{
返回mypagestate;
}
}
类mypagestate扩展了statemypage{
intnum=0;
@覆盖
小部件构建(buildcontext上下文){
返回cupertinopagescaffold脚手架(
导航栏cupertinonavigationbar(
middle:文本("计数器"),
),
child:容器(
宽度:双 。无限,
child:列(
主轴定位:主轴定位中心,
十字轴定位:十字轴定位中心,
children: widget[
text(num.tostring,style: textstyle(fontsize: 36)),
cupertinobutton(
color: cupertinocolors. activeblue,
child: icon(cupertinionicons. add),
onpressed:{
setstate( {
num
});
})
],
)));
}
}
效果如下:
编译方式
代码到此结束 。先说编译方法 。编程语言有两种编译方法 。
准时制——运行时编译
aot(提前)运行前编译
这要看他们是从哪个角度比较的 。jit,它的一个主要特点就是支持动态代码发布,也就是支持热更新 。不过从性能上来说,aot会更好,因为运行时不需要编译,运行效率会更高 。
回到我们一开始留下的问题,为什么其他跨平台解决方案都用javascript,而flutter用dart开发?javascript是用jit编译的,不支持aot 。而飞镖同时支持jit和aot 。
flutter在开发阶段使用jit,让我们使用热过载,增加了开发效率 。aot被用于包装,以确保该应用程序的版本的性能 。
热更新?
比较后说一个大家都关心的事 。flutter支持热更新吗?前面说过,dart支持jit,所以技术上支持 。但是目前不支持 。在计划文档中,您可以看到: