在AndroidStudio中对Flutter的认识


前言

​在Android Studio的学习中,我认识到不同ios、android和PC端之间存在不同。苹果在2008年发布iOS,Google 在2009年发布Android,它们的SDK使用的是不同的编程语言,Objective-C,Swift和Java,Kotlin。开发人员在直接调用平台SDK进行UI开发时,由于语言以及SDK的不同,所以开发人员必须为两个平台分别开发App。那么开发人员的工作量将会大大提升,所以由逐渐推出了很多跨平台的开发。Flutter就是其中的一种。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Flutter是什么?

Flutter is Google’s UI toolkit for building beautiful,natively compiled applicatioins for mobile,web,and desktop from a single condebase.(引用自官网)
由上面的介绍可以知道Flutter是Google一个新的用于构建跨平台的手机App的SDK。即写一份代码,在Android 和iOS平台上都可以运行。

二、为什么选择Flutter

越来越多的App包含Flutter,如QQ,QQ邮箱,Soul等的制作中都含有Flutter。这也可以体现出Flutter的实用性。但为什么会选择Flutter呢?

1.使用Dart语言

根据大神介绍,Dart语言是构建客户端应用程序的绝佳工具,而且针对UI开发工作做了调整和优化。它与其他语言(C#,Java)相似,所以大部分开发人员可以快速上手并使用它。
代码如下(部分):

class MyApp extends StatelessWidget {
   
  const MyApp({
   Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
   
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or simply save your changes to "hot reload" in a Flutter IDE).
        // Notice that the counter didn't reset back to zero; the application
        // is not restarted.
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

2.快速开发

使用过Android Studio的朋友都应该被它的速度折服过,而且,虽然Android Studio的xml文件具有布局预览功能,但在自定义View的时候不是每次都像所预期的运行。
但Flutter有“热重载”功能,可以实时看到应用的变化,且不会丢失当前应用程序的状态。“热重载”的实现与Dart语言有关。Dart语言支持JIT(Just In Time)。即能够即时编译或运行时编译。这样就可以实时看到应用的变化了。


## 3.良好的交互体验 用户体验的关键时App的性能,而Flutter不依赖任何中间代码做映射,直接调用底层代码,极大的提高了性能。 而对于开发人员,Flutter可以随时修改屏幕上的任何空间,可以直接使用原生控件来做UI动画,在使用Flutter生成动画的时候,不仅更加灵活和通用,而且不会额外增加工作量。

三、Key的介绍

Flutter积攒了纪念的Widget,像是专门为我们准备的礼物
在介绍Key之前,我们要理解它是谁的参数。
–>Widget
我们要理解Widget到底是什么。
Widget是Flutter应用程序用户界面的基本构建块。
每个Widget都是用户界面一部分的不可变声明。 与其他将视图、控制器、布局和其他属性分离的框架不同,Flutter具有一致的统一对象模型:widget。可以理解为Widget是描述UI元素Element的配置数据。一个Widget可以对应多个Element,即:同一份配置,可生成多个Element;每个Element都会对应一个Widget。

abstract class Widget extends DiagnosticableTree {
   

  const Widget({
    this.key });

  final Key key;

  @protected
  Element createElement();

  ...
  

  static bool canUpdate(Widget oldWidget, Widget newWidget) {
   
    return oldWidget.runtimeType == newWidget.runtimeType
        && oldWidget.key == newWidget.key;
  }
}

在这里插入图片描述而如何灵活的运用Widget,Key很重要。


Key

此处将Key设置为一级标题,只是为了强调Key,并非格式错误
Widget的构造方法中有一个可选参数Key

abstract class Widget extends DiagnosticableTree {
   
  const Widget({
    this.key });

首先我们可以想想:
如果没有Key会发生什么
如果StatelessWidget没有Key不会出现问题,
但StatefulWidget如果没有Key就会导致无法进行添加删除等操作。因为代码无法判断相同的三个代码,就像你无法判断三个长相一直的三胞胎。

        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Box(Colors.blue),
            Box(Colors.blue),
            Bo
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值