首页 > 其他分享 >flutter开发体验

flutter开发体验

时间:2023-11-03 10:36:17浏览次数:33  
标签:框架 title React 开发 build 体验 flutter Native

flutter 介绍

flutter 是一种跨平台UI开发框架。这方面类似框架有:

weex: Weex是一个可以使用现代化的 Web 技术开发高性能原生应用的框架。

React Native: React Native将React的声明性UI框架引入iOS和Android。

flutter与 WeeX 和 React Native又有很大不同。WeeX 和 React Native是基于JavaScript语言开发,相对来说学习成本更低。但JavaScript在移动端的性能表现比较一般,flutter采用Dart语言,有接近原生(Native)的性能表现。

背景

公司今年移动端大方在向flutter技术转型,不少业务采用flutter实现,或采用flutter重构。那么测试也要跟上做一些测试相关技术的预研。

知己知彼,当然要上手撸点Flutter代码,以我熟悉Android Studio安装,认识Android 四大组件的水平并不算太难。

开发环境

flutter 环境配置:
https://flutter.cn/docs/get-started/install

  • windows/macOS
  • flutter SDK
  • android studio (安装dart和flutter插件)

第一个flutter应用

《flutter实战》
https://book.flutterchina.club/chapter2/first_flutter_app.html

贴一下Flutter的第一例子,main.dart文件:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

// StatelessWidget 无状态的组件
class MyApp extends StatelessWidget {
  // 这个组件是你应用的根

  // build()方法来描述如何构建UI界面
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      // 应用的名称
      title: 'Flutter Demo',
      theme: ThemeData(
        // 修改主题的颜色
        primarySwatch: Colors.orange,

        // 设置视觉密度:适应平台密度
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

// StatefulWidget 有状态的组件
class MyHomePage extends StatefulWidget {
  //构造方法
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    // setState 通知flutter框架,有状态变化,flutter框架收到通知后,执行 build 重新构建界面。
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    // 每次调用setState时都会重新运行该方法,例如上面的_incrementCounter方法所做的操作。

    return Scaffold(
      // 渲染头部
      appBar: AppBar(
        title: Text(widget.title),
      ),
      // 渲染主题
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      // 渲染底部按钮
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

代码中我加了很多注释,可以看做是我学习flutter框架的笔记。

flutter开发体验_flutter

开发体验

  • dart语言比Java简单,Dart语言一出生对标的就是JavaScript,然后,一直无人问津,借着flutter的东风,起死回生。对于有经验的开发,编程语言的语法一般够不成多少障碍,难点在体会语言的设计思想。
  • flutter 已经有很多成熟的功能和库,比如调用接口使用dio库,选照片插件用image_picker等,基本上就是拿来就用,需要太多学习成本。
  • flutter 布局很恶心,就是绘制UI界面的方式,描述一个元素的宽高,颜色,位置等。感受一下下面的图形化布局,非图形化下面的布局要要写很深的代码。

flutter开发体验_flutter_02

测试相关

  • flutter 提供的测试库,支持不同层面的测试。

https://flutterchina.club/testing/

  • appium扩展插件:appium-flutter-driver

https://github.com/truongsinh/appium-flutter-driver

标签:框架,title,React,开发,build,体验,flutter,Native
From: https://blog.51cto.com/fnngj/8162036

相关文章

  • flutter driver 集成测试
    最近一直断断续续的学习flutter,今天跟大家介绍一下flutterdriver测试。flutter测试基础Flutter的测试遵循Android的测试规范进行了分层。单元测试:测试单一功能、方法或类。例如,被测单元的外部依赖性通常被模拟出来,如package:mockito。widget测试:(在其它UI框架称为组件测试)测试......
  • 探索游戏开发的乐趣与挑战
    在数字时代,电子游戏已经成为了人们生活中不可或缺的一部分。而幕后默默努力的游戏开发者们,为我们带来了种类繁多、玩法创新的游戏作品。本文将介绍游戏开发的乐趣和挑战,并探讨一些开发者在追求游戏完美的过程中所面临的问题。游戏开发的第一步是构思一个概念。一个充满创意的游戏概......
  • 2023云栖大会:属于开发者的狂欢
    就在10月31日这天,杭州云栖小镇热闹非凡,第八届云栖大会在杭州云栖小镇盛大举行。这次大会以“聚焦大模型与生成式AI”为主题,开发者们齐聚一堂,共同探讨前沿技术趋势,以及如何将这些技术应用到实际业务场景中。当然,卢松松也有幸参与其中,和全球八万多开发者们见证了通义大模型和生成式AI......
  • Jim Kalbach:3 个关键点与 4 个绘制步骤,直击客户体验可视化
    “你必须从客户体验出发,技术为之服务,而非相反。”在神策2023数据驱动大会现场,JimKalbach引用了SteveJobs的观点,并就客户体验对企业的价值做了深入分享。本文根据JimKalbach的完整分享整理。一、理解“体验”的3个关键点JimKalbach表示,在我们试图理解“体验”时,要明确......
  • 壁纸头像表情包插画流量主小程序开源版开发
    壁纸头像表情包插画流量主小程序开源版开发以下是壁纸头像表情包插画流量主小程序的功能列表:用户注册和登录:用户可以注册和登录自己的账号,可以使用账号保存自己的喜爱的壁纸、头像、表情包、插画等内容。壁纸浏览和下载:用户可以浏览并下载各种不同类型的壁纸,包括风景、动物、人物......
  • 大学生创新训练项目开发日志 (10-26 ~ 11-2)
    进展资源钩取我们通过如下方法对资源钩取模块进行了改进:对getDrawable()返回的Drawable实例进行了进一步处理,降低被丢弃的资源的比率。通过LayoutInflater.inflate()返回的ImageView实例的getDrawable()方法获取该实例内含的Drawable资源。进行了如下改进后,对......
  • java开发环境
    java开发环境编译运行过程(1)编译期将.java源文件交给编译器编译成.class字节码文件的过程(2)运行期把编译后的.class字节码文件经过JVM加载并运行.class字节码文件配置环境变量windows10系统下配置JDK环境变量:(1).安装JDK,安装过程中可以自定义安装目录等信息(2)安装完成后,右击......
  • 软件项目开发全套文档下载
    一、前言:软件开发常见文档有哪些?需求分析说明书:这是描述软件功能需求的文档,包括产品概述、主要概念、操作流程、功能列表和解说、注意事项、系统环境等内容。它是由项目经理对客户相关部门进行业务调研后编写,并作为后续软件开发和测试的依据。数据库设计说明书:根据《需求分析......
  • 即构音视频 Express Flutter SDK 全面支持空安全
    Flutter是一套移动UI框架,可以快速在iOS、Android上构建高质量的原生用户界面。作为其官方语言Dart是类型安全的,当开发者获取变量的时候,编译器可以保证变量的类型,但类型安全并不保证获取的变量不是null。在GitHub上有非常多因为null导致Dart代码出现异常的issue,为了从......
  • 海康ISUP协议二次开发
    一。功能支持:1.设备注册。支持接入秘钥2.实时预览。支持H264/H265视频,不支持音频。3.录像回放。支持H264/H265视频,不支持音频。同一个通道只支持一路回放。4.云台控制。5.在线状态查询。二。技术架构: 三。关键代码: 四。项目地址: ......