Flutter的自动化测试 python flutter编程

Flutter应用开发入门指南

第一步:创建Flutter应用

创建一个默认的Flutter应用后,将以下代码复制到 lib/main.dart 中:

dart 复制代码
import 'package:flutter/material.dart';

//运行Flutter应用,创建了一个自己实现的Widget对象
void main() => runApp(new MyApp());

//实现的Widget类
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Welcome to Flutter',
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text('Welcome to Flutter'),//AppBar的title
        ),
        body: new Center(
          child: new Text('Hello World'),//屏幕中间的文字
        ),
      ),
    );
  }
}

使用Android Studio的格式化快捷键可以让代码更加整洁。代码被复制进Android Studio之后,会自动添加一些注释,我们可以更清晰地看到其结构。

运行新建的应用后,界面会显示一个简单的"Hello World"文字。

官方给出的代码分析如下:

  1. 本示例创建一个Material APP。Material是一种标准的移动端和web端的视觉设计语言。Flutter提供了一套丰富的Material widgets。
  2. main函数使用了(=>)符号,这是Dart中单行函数或方法的简写。
  3. 该应用程序继承了StatelessWidget,这将会使应用本身也成为一个widget。在Flutter中,大多数东西都是widget,包括对齐(alignment)、填充(padding)和布局(layout)
  4. Scaffold是Material library中提供的一个widget,它提供了默认的导航栏、标题和包含主屏幕widget树的body属性。widget树可以很复杂。
  5. widget的主要工作是提供一个build()方法来描述如何根据其他较低级别的widget来显示自己。
  6. 本示例中的body的widget树中包含了一个Center widget,Center widget又包含一个Text子widget。Center widget可以将其子widget树对其到屏幕中心。

第二步:使用外部包(package)

在这一步中,我们将使用一个名为english_words的开源软件包,其中包含数千个最常用的英文单词以及一些实用功能。

  1. pubspec文件管理Flutter应用程序的assets(资源,如图片、package等)。在pubspec.yaml中,将english_words(3.1.0或更高版本)添加到依赖项列表。
  2. 在Android Studio的编辑器视图中查看pubspec时,单击右上角的Packages get,这会将依赖包安装到您的项目。
  3. 如果遇到"Waiting for another flutter command to release the startup lock..."问题,可以删除flutter/bin/cache/lockfile文件解决。
  4. 在lib/main.dart中,引入english_words:
dart 复制代码
import 'package:flutter/material.dart';
import 'package:english_words/english_words.dart';
  1. 使用English words包生成文本来替换字符串"Hello World"。

Tip: "驼峰命名法"(称为"upper camel case"或"Pascal case"),表示字符串中的每个单词(包括第一个单词)都以大写字母开头。所以,"uppercamelcase"变成"UpperCamelCase"

进行以下更改:

dart 复制代码
import 'package:flutter/material.dart';
import 'package:english_words/english_words.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final wordPair = new WordPair.random();//获取WordPair对象
    return new MaterialApp(
      title: 'Welcome to Flutter',
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text('Welcome to Flutter'),
        ),
        body: new Center(
          child: new Text(wordPair.asPascalCase),//使用WordPair对象生成文本
        ),
      ),
    );
  }
}

如果应用程序正在运行,请使用热重载按钮(lightning bolt icon)更新正在运行的应用程序。每次单击热重载或保存项目时,都会在正在运行的应用程序中随机选择不同的单词对。这是因为单词对是在build方法内部生成的。每次MaterialApp需要渲染时或者在Flutter Inspector中切换平台时build都会运行。

第三步:添加一个有状态的部件(Stateful widget)

Stateless widgets是不可变的,这意味着它们的属性不能改变-所有的值都是最终的。

Stateful widgets持有的状态可能在widget生命周期中发生变化。实现一个stateful widget至少需要两个类:

  1. 一个StatefulWidget类。
  2. 一个State类。StatefulWidget类本身是不变的,但是State类在widget生命周期中始终存在。

在这一步中,您将添加一个有状态的widget-RandomWords,它创建其State类RandomWordsState。State类将最终为widget维护文本的变化。

封装一个Widget,将文本的获取转移到Widget中进行:

dart 复制代码
class RandomWordsWidget extends StatefulWidget {
  @override
  createState() => new RandomWordsStatus();
}

class RandomWordsStatus extends State<RandomWordsWidget> {
  @override
  Widget build(BuildContext context) {
    final wordPair = new WordPair.random();
    return new Text(wordPair.asPascalCase);
  }
}

使用封装好的Widget替换原来用来显示文字的Text:

dart 复制代码
import 'package:english_words/english_words.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Welcome to Flutter',
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text('Welcome to Flutter'),
        ),
        body: new Center(
          child: new RandomWordsWidget(),
        ),
      ),
    );
  }
}

现在每次热加载可以看到随机生成的文字。

应用发布准备

当你的Flutter应用开发完成后,可以使用appuploader工具来简化iOS应用的打包和上传流程。appuploader是一款专业的iOS开发助手,可以帮助开发者快速完成证书管理、描述文件配置和应用上传等工作,特别适合不熟悉Mac环境的开发者使用。

对于Flutter项目,在终端运行flutter build ios命令生成iOS项目后,可以直接使用appuploader来打包和上传应用。相比传统的Xcode打包方式,appuploader提供了更简洁的操作界面和更快的上传速度,大大提高了开发者的工作效率。

相关推荐
10000hours43 分钟前
【SGL】Scatter-Gather List内存传输技术
linux·数据结构·网络协议·list·存储·sgl
测试工程喵1 小时前
Bearer Token的神秘面纱:深入解析HTTP认证头的设计哲学
网络·功能测试·网络协议·http·接口测试·模块测试·登录认证
小白学大数据2 小时前
Python爬虫+代理IP+Header伪装:高效采集亚马逊数据
爬虫·python·tcp/ip·scrapy
JAVA学习通2 小时前
[JAVAEE]HTTP协议(2.0)
网络·网络协议·http
Johny_Zhao3 小时前
堆叠、MLAG、VPC、VSS 技术对比及架构建议
linux·网络·人工智能·python·网络安全·ai·信息安全·云计算·cisco·等保测评·huawei·系统运维
在成都搬砖的鸭鸭3 小时前
【Go底层】http标准库服务端实现原理
开发语言·http·golang
TE-茶叶蛋4 小时前
HTTP请求与缓存、页面渲染全流程
网络协议·http·缓存
多多*4 小时前
分布式ID设计 数据库主键自增
数据库·sql·算法·http·leetcode·oracle
eguid_17 小时前
WebRTC流媒体传输协议RTP点到点传输协议介绍,WebRTC为什么使用RTP协议传输音视频流?
java·网络协议·音视频·webrtc·实时音视频
八荒被注册了7 小时前
Nginx +Nginx-http-flv-module 推流&拉流
运维·nginx·http