Flutter进阶—质感设计之直接输入

119 篇文章 9 订阅
82 篇文章 1416 订阅

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()
  ));
}

这里写图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何小有

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值