06 猜数字界面交互与需求分析

1. 界面交互介绍

猜数字是本教程的第一个案例,功能比较简单,非常适合新手朋友入门学习。下面是两个最基础的交互:

点击生成随机数 可输入文字
img 126.gif

如下所示,点击右上角的运行按钮,可以比较输入猜测值和生成值的大小,并在界面上通过两个色块进行提示。每次比较时,提示面板中的文字会有动画的变化,给出交互示意。

比较结果:小了 比较结果:大了
128.gif 129.gif

这三个交互就是本案例的所有功能需求。你可以找几个朋友一起玩这个猜数字的小游戏,比如随机生成一个数后,每人输入一个数,最后猜中的人获取胜利。其中控制猜测的范围,使其更利于自己猜出结果,也是一点斗智斗勇。


2. 猜数字需求分析

现在从数据和界面的角度,来分析一下猜数字中的需求:

随机数生成的需求中,有两个需要变化的数据,其一是待猜测的数字 _value 的赋值;其二是游戏的状态 _guessing 置为 true。

int _value = 0;
bool _guessing = false;

对于界面来说,当生成随机数后,要禁用按钮。也就是说按钮的表现形式,会受到 _guessing 数据的限制。

image.png

同样,中间数字的显示也会受到 _guessing 的影响,猜测过程中为密文;猜对之后游戏结束,展示明文数字。

游戏进行中 游戏结束
image.png image.png

输入框输入需求中,需要一个数据来记录输入的内容。一般使用 TextEditingController 类型的数据和输入框进行双向绑定:也就是说用户的输入会导致控制器数值的变化,控制器数值的修改也会导致输入框内容的变化。

TextEditingController _guessCtrl = TextEditingController();

image.png

猜测需求中,需要一个数据表示猜测结果;猜测结果有三种:大了、小了和相等,这里使用一个可空的 bool 类型对象 _isBig 表示三种状态:

bool? _isBig;

null: 相等
true: 大了
false: 小了

对于界面来说,需要根据 _isBig 的值,给出提示信息。其中 大了和小了的展示面板叠放在主题界面之上,占据一般的高度空间:

大了 小了 相等
1f08991dd5e4cefaffb40fa592d61f8.jpg 98a508b2b600181362cecaad6a5befd.jpg 1ae205f866d8a0f9560613ec736f936.jpg

需求中的功能和数据这里简单地分析了一下,最后来说一下本案例中蕴含的知识点。


3. 猜数字中的知识点

首先,猜数字项目会接触到如下的常用组件,大家再完成猜数字项目的同时,也会了解这些组件的使用方式。

image.png


另外,会对 Flutter 中的界面相关的知识有初步的认知:


最后,在逻辑处理的过程中,是对 Dart 语法使用练习的好机会,在完成需求的过程中,会收获一些技能点。

界面交互和需求分析就到这里,下面一起开始第一个小项目的学习吧!