📜  Flutter – 复选框小部件

📅  最后修改于: 2021-09-02 05:51:45             🧑  作者: Mango

复选框在flutter是材料的设计部件。它始终用于有状态小部件,因为它不维护自己的状态。我们可以使用它的onChanged属性来交互或修改flutter应用程序中的其他小部件。与大多数其他flutter小部件一样,它还带有许多属性,如activeColorcheckColormouseCursor等,让开发人员可以完全控制小部件的外观和感觉。

复选框小部件的构造函数:

const Checkbox(
{Key key,
@required bool value,
bool tristate: false,
@required ValueChanged onChanged,
MouseCursor mouseCursor,
Color activeColor,
Color checkColor,
Color focusColor,
Color hoverColor,
MaterialTapTargetSize materialTapTargetSize,
VisualDensity visualDensity,
FocusNode focusNode,
bool autofocus: false}
)

复选框小部件的属性:

  • activeColor:该属性以Color类为对象,在选中时填充ChechBox
  • autofocus:这个属性接受一个布尔值作为对象。如果设置为 true,则CheckBox在初始焦点处被选中。
  • checkColor:此属性也将 Color 类作为对象。它为复选图标分配颜色。
  • focusColor:此属性还接受 Color 类作为对象,以便在复选框处于焦点时为其赋予颜色。
  • focusNode:它设置一个额外的焦点节点来获取光标的焦点。它以FocusNode作为对象。
  • hoverColor: hoverColor属性将 Color 类作为对象。它控制悬停时复选框的颜色。
  • materialTapTargetSize:控制点击区域的大小。它以MaterialTapTargetSize枚举作为对象。
  • mouseCursor:这决定了指针事件发生时的光标类型。它将MouseCursor类作为对象。
  • onChanged: ValueChanged typedef 是赋予此属性的对象。当CheckBox小部件中的值应更改时调用。
  • 三态:通常复选框被选中或不选中。如果将布尔值作为对象的此属性设置为 true,则它也可以设置为 null。
  • value:这个属性接受一个布尔值作为对象来判断CheckBox是否被选中。
  • visualDensity:它通过将VisualDensity类作为对象来控制 CheckBox 小部件的紧凑性。

例子:

Dart
import 'package:flutter/material.dart';
  
//importing material desin liverary
void main() {
  runApp(MaterialApp(
    //runApp method
    home: HomePage(),
  ));//MaterialApp
}
  
class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}
  
class _HomePageState extends State {
  bool value = false;
  
  @override
  //App widget tree
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('GeeksforGeeks'),
          backgroundColor: Colors.greenAccent[400],
          leading: IconButton(
            icon: Icon(Icons.menu),
            tooltip: 'Menu',
            onPressed: () {},
          ), //IcoButton
        ), //AppBar
        body: Center(
          /** Card Widget **/
          child: Card(
            child: Padding(
              padding: const EdgeInsets.all(15.0),
              child: SizedBox(
                width: 430,
                height: 700,
                child: Column(
                  children: [
                    Text(
                      'Algorithms',
                      style: TextStyle(
                          color: Colors.greenAccent[400],
                          fontSize: 30), //TextStyle
                    ), //Text
                    SizedBox(height: 10),
                    Row(
                      children: [
                        SizedBox(
                          width: 10,
                        ), //SizedBox
                        Text(
                          'Liberary Implementation Of Searching Algorithm: ',
                          style: TextStyle(fontSize: 17.0),
                        ), //Text
                        SizedBox(width: 10), //SizedBox
                        /** Checkbox Widget **/
                        Checkbox(
                          value: this.value,
                          onChanged: (bool value) {
                            setState(() {
                              this.value = value;
                            });
                          },
                        ), //Checkbox
                      ], //[]
                    ), //Row
                  ],
                ), //Column
              ), //SizedBox
            ), //Padding
          ), //Card
        ), //Center//Center
      ), //Scaffold
    ); //MaterialApp
  }
}


输出:

说明: CheckBoxvalue属性在_HomePageState类开始时设置为 false。 CheckBox小部件位于Text小部件的前面,由Row内的SizedBox分隔。 CheckBox 小部件中的第一件事是调用value属性。然后我们有onChanged属性,它持有一个函数来改变 CheckBox 的状态,这使得 CheckBox 在点击时被选中。完成所有这些,我们得到了一个可以检查的任务。