Flutter 【表单】


在Flutter中通过Navigator组件管理路由导航。
并提供了管理堆栈的方法。如:Navigator.push和Navigator.pop

TextField 文本框组件

属性描述
maxLines设置此参数可以把文本框改为多行文本框
onChanged文本框改变的时候触发的事件
decorationhintText 类似 html 中的 placeholder
border 配置文本框边框 OutlineInputBorder 配合使用
labelText lable 的名称
labelStyle 配置 lable 的样式
obscureText把文本框框改为密码框
controllercontroller 结合 TextEditingController()可以配置表单默认显示的内容
TextField( 
  maxLines: 10, 
  // obscureText: true, 
  decoration: InputDecoration( 
    hintText: "密码框", 
    border: OutlineInputBorder()
  )
)
String _username=TextEditingController(); 
void initState() { 
  // TODO: implement initState
  super.initState();
  _username.text='这是文本框初始值';
}
TextField( 
  controller: _username, 
  onChanged: (value){ 
  // print(value); 
  setState(() { 
    this._username.text=value; 
  });
  },
  decoration: InputDecoration( 
    hintText: "请输入您的内容",
  ), 
)

Checkbox、CheckboxListTile 多选框组件

Checkbox 常见属性:

属性描述
valuetrue 或者 false
onChanged改变的时候触发的事件
activeColor选中的颜色、背景颜色
checkColor选中的颜色、Checkbox 里面对号的颜色

CheckboxListTile 常见属性:

属性描述
valuetrue 或者 false
onChanged改变的时候触发的事件
activeColor选中的颜色、背景颜色
title标题
subtitle二级标题
secondary配置图标或者图片
selected选中的时候文字颜色是否跟着改变
Checkbox( 
 value: _isSelected,
 onChanged: (v) { 
 // print(v);
 setState(() {
   this._isSelected=v
 }); 
 },
 activeColor: Colors.red,
 checkColor:Colors.blue 
)
CheckboxListTile( 
  value: _isSelected, 
  title: Text("111111"), 
  subtitle: Text("222"), 
  onChanged: (v){ 
    setState(() { this._isSelected=v; }); 
  },
  activeColor: Colors.red,
  secondary: Image.network("baidu.com"), 
  selected:_isSelected
)
// 例子
class CheckBoxDemo extends StatefulWidget {
  CheckBoxDemo({Key key}) : super(key: key);

  _CheckBoxDemoState createState() => _CheckBoxDemoState();
}

class _CheckBoxDemoState extends State<CheckBoxDemo> {

  var flag=true;
  
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("checkbox"),
        ),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[

            Row(children: <Widget>[
              Checkbox(
                value: this.flag,
                onChanged: (v){
                  setState(() {
                     this.flag=v;
                  });
                },
                activeColor: Colors.red,
              )
            ]),
            Row(
              children: <Widget>[
                Text(this.flag?"选中":"未选中")
              ],
            ),
            SizedBox(height: 40),

            // CheckboxListTile(
            //    value: this.flag,
            //     onChanged: (v){
            //       setState(() {
            //          this.flag=v;
            //       });
            //     },
            //     title: Text("标题"),
            //     subtitle:Text("这是二级标题") ,
            // ),
            Divider(),
            CheckboxListTile(
               value: this.flag,
                onChanged: (v){
                  setState(() {
                     this.flag=v;
                  });
                },
                title: Text("标题"),
                subtitle:Text("这是二级标题") ,
                secondary:Icon(Icons.help),
                selected: this.flag,
            )

          ],
        ),
      
    );
  }
}

Radio、RadioListTile 单选按钮组件

Radio 常用属性:

属性描述
value单选的值
onChanged改变时触发
activeColor选中的颜色、背景颜色
groupValue选择组的值

RadioListTile 常用属性:

属性描述
valuetrue 或者 false
onChanged改变的时候触发的事件
activeColor选中的颜色、背景颜色
title标题
subtitle二级标题
secondary配置图标或者图片
groupValue选择组的值
class RadioDemo extends StatefulWidget {
 RadioDemo({Key key}) : super(key: key);
 _RadioDemoState createState() => _RadioDemoState();
}

class _RadioDemoState extends State<RadioDemo> {

 int sex=1;

 bool flag=true;
 @override
 Widget build(BuildContext context) {
   return Scaffold(
     appBar: AppBar(
       title: Text("Radio"),
     ),
     body: Padding(
       padding: EdgeInsets.all(20),
       child: Column(
         children: <Widget>[

           // Row(
           //   children: <Widget>[
           //     Text("男:"),
           //     Radio(
           //       value:1,
           //       onChanged: (v){
           //         setState(() {
           //            this.sex=v;
           //         });
           //       },
           //       groupValue:this.sex ,
           //     ),
           //     SizedBox(width: 20),
           //     Text("女:"),
           //     Radio(
           //       value:2,
           //       onChanged: (v){
           //         setState(() {
           //            this.sex=v;
           //         });
           //       },
           //       groupValue:this.sex ,
           //     )
           //   ],
           // ),
           // Row(
           //   children: <Widget>[
           //     Text("${this.sex}"),
           //     Text(this.sex==1?"男":"女")
           //   ],
           // ),
           SizedBox(height: 40),
           RadioListTile(
               value:1,
               onChanged: (v){
                 setState(() {
                     this.sex=v;
                 });
               },
               groupValue:this.sex ,
                title: Text("标题"),
               subtitle:Text("这是二级标题") ,
               secondary:Icon(Icons.help),
               selected: this.sex==1,
           ),
           RadioListTile(
               value:2,
               onChanged: (v){
                 setState(() {
                     this.sex=v;
                 });
               },
               groupValue:this.sex ,
                title: Text("标题"),
               subtitle:Text("这是二级标题") ,
               secondary:Image.network('baidu.com'),
               selected: this.sex==2,
           ),
           SizedBox(height: 40),

           Switch(
             value: this.flag,
             onChanged: (v){
               setState(() {
                 print(v);
                 this.flag=v;
               });
             },
           )
         ],
       ),
     ),
   );
 }
}

开关 Switch

属性描述
value单选的值
onChanged改变时触发
activeColor选中的颜色、背景颜色
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值