Flutter质感设计之直接输入

Input控件是质感设计的文本输入控件,它在用户每次输入时都会调用onChanged回调时,都会更新字段值,还可以实时的对用户输入进行响应。

import 'package:flutter/material.dart';

class MyApp extends StatefulWidget {
 @override
 _MyApp createState() => new _MyApp();
}

class _MyApp extends State<MyApp> {

 // InputValue:文本输入字段的配置信息
 InputValue _phoneValue = const InputValue();
 InputValue _passwordValue = const InputValue();

 void _showMessage(String name) {
  showDialog<Null>(
   context: context,
   child: new AlertDialog(
    content: new Text(name),
    actions: <Widget>[
     new FlatButton(
      onPressed: () {
       Navigator.pop(context);
      },
      child: new Text('确定')
     )
    ]
   )
  );
 }

 @override
 Widget build(BuildContext context) {
  return new Scaffold(
   appBar: new AppBar(
    title: new Text('直接输入')
   ),
   body: new Column(
    children: <Widget> [
     new Input(
      // value:文本输入字段的当前状态
      value: _phoneValue,
      // keyboardType:用于编辑文本的键盘类型
      keyboardType: TextInputType.number,
      // icon:在输入字段旁边显示的图标
      icon: new Icon(Icons.account_circle),
      // labelText:显示在输入字段上方的文本
      labelText: '手机',
      // hintText:要在输入字段中内嵌显示的文本
      hintText: '请输入手机号码',
      // onChanged:正在编辑的文本更改时调用
      onChanged: (InputValue value) {
       setState((){
        _phoneValue = value;
       });
      }
     ),
     new Input(
      value: _passwordValue,
      // obscureText:是否隐藏正在编辑的文本
      obscureText: true,
      labelText: '密码',
      onChanged: (InputValue value) {
       setState((){
        _passwordValue = value;
       });
      },
      // onSubmitted:当用户在键盘上点击完成编辑时调用
      onSubmitted: (InputValue value) {
       if(value.text.length<6){
        _showMessage('密码不少于6位');
       }
      }
     ),
     new RaisedButton(
      child: new Text('提交'),
      onPressed: () {
       _showMessage(_phoneValue.text+'/'+_passwordValue.text);
      }
     )
    ]
   )
  );
 }
}

void main() {
 runApp(new MaterialApp(
  title: 'Flutter Demo',
  home: new MyApp()
 ));
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Flutter进阶质感设计之标签栏

    在质感设计的控件中,有一个显示水平的一行选项卡,通常作为AppBar控件的一部分创建,并与TabBarView控件结合使用. import 'package:flutter/material.dart'; /* * 枚举类,标签演示样式 * 图标和文本 * 仅图标 * 仅文本 */ enum TabsDemoStyle { iconsAndText, iconsOnly, textOnly } /* * 页面类 * 图标 * 文本 */ class _Page { _Page({ this.ic

  • Flutter质感设计之列表项

    本文为大家分享了Flutter实现列表项的具体代码,供大家参考,具体内容如下 创建achievement_view_list_item.dart文件,具体的实现每一个列表项. import 'package:flutter/material.dart'; // 创建类,成就目标 class Target { // 常量,构建函数 const Target({ // 自变量,目标名称 this.name, // 自变量,目标奖励 this.reward }); // 最终值,成就目标名称 fina

  • Flutter质感设计之底部导航

    BottomNavigationBar即底部导航栏控件.显示在应用底部的质感设计控件,用于在少量视图中切换.底部导航栏包含多个以标签.图标或两者搭配的形式显示在项目底部的项目,提供了应用程序的顶级视图之间的快速导航.对于较大的屏幕,侧面导航可能更好. 创建navigation_icon_view.dart文件,定义一个NavigationIconView类,用于管理BottomNavigationBarItem(底部导航栏项目)控件的样式.行为与动画. import 'package:flutt

  • Flutter质感设计之持久底部面板

    持久性底部面板可以用于补充应用主要内容的信息,即使用户与应用程序的其他控件进行互动,也仍然可以看到持久的底部面板.可以使用Scaffold.showBottomSheet函数创建和显示持久性底部面板. import 'package:flutter/material.dart'; class MyApp extends StatefulWidget { @override _MyApp createState() => new _MyApp(); } class _MyApp extends S

  • Flutter质感设计之弹出菜单

    PopupMenuButton控件即弹出菜单控件,点击控件会出现菜单. import 'package:flutter/material.dart'; class MenusDemo extends StatefulWidget { @override _MenusDemoState createState() => new _MenusDemoState(); } class _MenusDemoState extends State<MenusDemo> { String _body

  • Flutter质感设计之表单输入

    FormField控件是单一表单字段,这个控件维护表单字段的当前状态,以便更新和验证错误能在UI中可见.TextField控件就是在FormField中包装了一个Input控件(后面的文章讲解),FormField维护输入的当前值,使您不需要自己管理它,更容易一次保存,重置或验证多个字段. import 'package:flutter/material.dart'; class MyApp extends StatefulWidget { @override _MyApp createStat

  • Flutter质感设计之模态底部面板

    模态底部面板是菜单或对话框的替代方案,可防止用户与其他控件进行互动,可以使用showModalBottomSheet函数创建和显示模态底部面板. import 'package:flutter/material.dart'; class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: new

  • Flutter质感设计之进度条

    LinearProgressIndicator控件是质感设计中的线性进度指示器,具体内容如下 import 'package:flutter/material.dart'; class ActionViewEcology extends StatelessWidget { /* * 构建函数,传递参数 * 最大能量值 * 最大饥饿值 * 最大情绪值 * 当前能量值 * 当前饥饿值 * 当前情绪值 */ ActionViewEcology({ this.maximumEmergy, this.ma

  • Flutter质感设计之直接输入

    Input控件是质感设计的文本输入控件,它在用户每次输入时都会调用onChanged回调时,都会更新字段值,还可以实时的对用户输入进行响应. import 'package:flutter/material.dart'; class MyApp extends StatefulWidget { @override _MyApp createState() => new _MyApp(); } class _MyApp extends State<MyApp> { // InputValu

  • Flutter基本组件Basics Widget学习

    目录 1. 概述 2. 常用组件 2.1 Text 2.1.1 TextStyle 2.1.2 TextSpan 2.1.3 DefaultTextStyle 2.1.4 使用字体 2.2 Button 2.2.1 ElevatedButton 2.2.2 TextButton 2.2.3 OutlinedButton 2.2.4 IconButton 2.2.5 带图标的按钮 2.3 图片及Icon 2.3.1 图片 2.3.2 Icon 2.4 单选开关和复选框 2.4.1 属性 2.5 输

随机推荐