• Flutter 基础组件:单选框和复选框


    前言

    Material组件库中提供了Material风格的单选开关Switch和复选框Checkbox,虽然它们都是继承自StatefulWidget,但它们本身不会保存当前选中状态,选中状态都是由父组件来管理的。当Switch或Checkbox被点击时,会触发它们的onChanged回调,可以在此回调中处理选中状态改变逻辑。

    实例

    // 单选框和复选框
    
    import 'package:flutter/material.dart';
    
    
    class SwitchCheckboxRoute extends StatefulWidget {
      @override
      _SwitchCheckboxRouteState createState() => _SwitchCheckboxRouteState();
    }
    
    class _SwitchCheckboxRouteState extends State<SwitchCheckboxRoute> {
      // 维护单选状态
      bool _switchSelected = true;
      // 维护复选状态
      bool _checkboxSelected = true;
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('单选框 复选框'),
          ),
          body: Container(
            child: Column(
              children: <Widget>[
                
                // 单选框
                Switch(
                  // 当前状态
                  value: _switchSelected,
                  onChanged: (value){
                    // 重新构建页面
                    setState(() {
                      _switchSelected = value;
                    });
                  },
                ),
    
                // 复选框
                Checkbox(
                  value: _checkboxSelected,
                  onChanged: (value) {
                    setState(() {
                      _checkboxSelected = value;
                    });
                  },
                ),
              ],
            ),
          ),
        );
      }
    
    }
    
    

    总结

    Switch和Checkbox属性比较简单,它们都有一个activeColor属性,用于设置激活态的颜色。至于大小,到目前为止,Checkbox的大小是固定的,无法自定义,而Switch只能定义宽度,高度也是固定的。值得一提的是Checkbox有一个属性tristate ,表示是否为三态,其默认值为false ,这时Checkbox有两种状态即“选中”和“不选中”,对应的value值为true和false 。如果tristate值为true时,value的值会增加一个状态null。
    通过Switch和Checkbox我们可以看到,虽然它们本身是与状态(是否选中)关联的,但它们却不是自己来维护状态,而是需要父组件来管理状态,然后当用户点击时,再通过事件通知给父组件,这样是合理的,因为Switch和Checkbox是否选中本就和用户数据关联,而这些用户数据也不可能是它们的私有状态。

  • 相关阅读:
    redis 安装和运行
    Django:django-debug-toolbar模块
    Django 的 logging日志文件配置
    Github之利用SSH完成Git与GitHu 的绑定
    4.输出1-100内的所有偶数
    3.输出1-100内的所有奇数
    2.求1-100的所有整数的和
    1.使用while循环输出1.2.3.4.5.6.....8.9.10
    将前台JS数组序列化后提交,后台反序列化对象
    div模拟下拉框
  • 原文地址:https://www.cnblogs.com/parzulpan/p/12061525.html
Copyright © 2020-2023  润新知