当前位置: 首页 > news >正文

商务网站建设定义赣州百度

商务网站建设定义,赣州百度,东莞常平天气,php网站开发经典教材目录 前言 新建项目 项目入口 Dart的入口#xff08;项目的入口#xff09; 布局 视图组件 Container#xff08;容器#xff09; Text#xff08;文本#xff09; Image#xff08;图片#xff09; Row#xff08;水平布局#xff09;和Column#xff08…目录 前言 新建项目 项目入口 Dart的入口项目的入口 布局 视图组件 Container容器 Text文本 Image图片 Row水平布局和Column垂直布局 ListView列表视图 GridView网格视图 Stack层叠布局 Card卡片 AppBar应用栏 FloatingActionButton浮动操作按钮 TextField文本输入框 Button按钮 Checkbox复选框 Radio单选框 Switch开关 Slider滑块 ProgressIndicator进度指示器 AlertDialog对话框 前言 前面搭建环境创建项目什么的都太过简单 废话不多讲~开整~我们直接上代码~开始学习 新建项目 新建了项目是不是有点蒙不知道在哪里开始写我们的hello world 新建了一个项目android和ios两个包按我个人的理解就是都预制加载了Dart写好的好的界面 一般有特殊需求需要在对应项目里添加需求需要的配置项 这里我们入门学习所以这一块就不多讲了 文档 Dart文档指南Learn to use the Dart language and libraries.https://dart.dev/guides 项目入口 Dart的入口项目的入口 main.dart import package:flutter/material.dart;void main() {runApp(const MyApp()); }class MyApp extends StatelessWidget {const MyApp({super.key});// This widget is the root of your application.overrideWidget build(BuildContext context) {return MaterialApp(title: Flutter Demo,theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),home: const MyHomePage(title: 阿斯顿),);} }class MyHomePage extends StatefulWidget {const MyHomePage({super.key, required this.title});final String title;overrideStateMyHomePage createState() _MyHomePageState(); }class _MyHomePageState extends StateMyHomePage {int _counter 0;void _incrementCounter() {setState(() {_counter;});}overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.inversePrimary,title: Text(widget.title),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: Widget[const Text(You have pushed the button this many times:,),Text($_counter,style: Theme.of(context).textTheme.headlineMedium,),],),),floatingActionButton: FloatingActionButton(onPressed: _incrementCounter,tooltip: Increment,child: const Icon(Icons.add),), // This trailing comma makes auto-formatting nicer for build methods.);} }布局 在这个例子中我们使用了Stack来创建一个层层叠加的布局。在Stack中我们使用了Positioned来实现绝对布局Align来实现相对布局以及Positioned.fill来实现权重布局。 每个Positioned和Align都有top、left、right、bottom等属性用于指定子部件的位置。Positioned.fill会将子部件填充满整个父部件。 通过这种层层叠加的布局方式我们可以实现复杂的界面布局。 void main() {runApp(MyApp()); }class MyApp extends StatelessWidget {overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(body: Stack( // 使用绝对布局children: [Positioned( // 使用相对布局top: 50,left: 50,child: Container(width: 100,height: 100,color: Colors.red,),),Positioned(top: 100,left: 100,child: Container(width: 100,height: 100,color: Colors.blue,),),Align( // 使用相对布局alignment: Alignment.bottomCenter,child: Container(width: 200,height: 200,color: Colors.green,),),Positioned(top: 200,left: 200,child: Container(width: 100,height: 100,color: Colors.yellow,),),Positioned.fill( // 使用权重布局child: Container(color: Colors.orange,child: Center(child: Text(Hello World,style: TextStyle(fontSize: 20,fontWeight: FontWeight.bold,color: Colors.white,),),),),),],),),);} } 视图组件 Container容器 用于创建一个矩形的容器可以设置背景颜色、边框、内边距等属性。 alignment设置Container内部子组件的对齐方式。padding设置Container内部子组件的内边距。color设置Container的背景颜色。width设置Container的宽度。height设置Container的高度。margin设置Container与其父组件之间的外边距。decoration设置Container的装饰可以包括背景图片、边框等。child设置Container的子组件。 以下是一个使用注释说明的例子 Container(// 设置Container的宽度为200width: 200,// 设置Container的高度为100height: 100,// 设置Container的背景颜色为红色color: Colors.red,// 设置Container与其父组件之间的外边距为10margin: EdgeInsets.all(10),// 设置Container内部子组件的对齐方式为居中alignment: Alignment.center,// 设置Container内部子组件的内边距为20padding: EdgeInsets.all(20),// 设置Container的装饰包括背景图片和边框decoration: BoxDecoration(image: DecorationImage(image: AssetImage(assets/images/background.png),fit: BoxFit.cover,),border: Border.all(color: Colors.black,width: 2,),borderRadius: BorderRadius.circular(10),),// 设置Container的子组件为一个文本组件child: Text(Hello World), ) Text文本 用于显示文本内容可以设置字体样式、颜色、对齐方式等属性。 data设置Text显示的文本内容。style设置Text的样式包括字体、大小、颜色等。textAlign设置Text的对齐方式。maxLines设置Text显示的最大行数。overflow设置Text超出最大行数时的处理方式。textDirection设置Text的文本方向。softWrap设置Text是否自动换行。textScaleFactor设置Text的缩放比例 以下是一个使用注释说明的例子 Text(// 设置Text显示的文本内容为Hello Worlddata: Hello World,// 设置Text的样式包括字体、大小、颜色等style: TextStyle(fontSize: 20,fontWeight: FontWeight.bold,color: Colors.blue,),// 设置Text的对齐方式为居中textAlign: TextAlign.center,// 设置Text显示的最大行数为2maxLines: 2,// 设置Text超出最大行数时的处理方式为省略号overflow: TextOverflow.ellipsis,// 设置Text的文本方向为从左到右textDirection: TextDirection.ltr,// 设置Text是否自动换行为truesoftWrap: true,// 设置Text的缩放比例为1.5textScaleFactor: 1.5, ) Image图片 用于显示图片可以从本地或网络加载图片。 image指定要显示的图片可以是本地图片、网络图片或者内存图片。可以使用AssetImage、NetworkImage或者MemoryImage来创建ImageProvider对象。 width指定图片的宽度可以是具体数值或者是一个占位符如double.infinity表示宽度填充父容器。 height指定图片的高度可以是具体数值或者是一个占位符如double.infinity表示高度填充父容器。 fit指定图片的适应方式可以是BoxFit.contain保持图片的宽高比将图片完整地显示在容器内、BoxFit.cover保持图片的宽高比将图片完整地显示在容器内并裁剪超出部分、BoxFit.fill拉伸图片以填充容器、BoxFit.fitWidth保持图片的宽高比将图片宽度填充容器、BoxFit.fitHeight保持图片的宽高比将图片高度填充容器等。 alignment指定图片在容器中的对齐方式可以是Alignment.center居中对齐、Alignment.topLeft左上对齐、Alignment.bottomRight右下对齐等。 repeat指定图片的重复方式可以是ImageRepeat.noRepeat不重复、ImageRepeat.repeat水平和垂直方向都重复、ImageRepeat.repeatX水平方向重复、ImageRepeat.repeatY垂直方向重复等。 下面是一个使用注释说明的例子 Image(image: AssetImage(assets/images/flutter_logo.png), // 指定要显示的本地图片width: 200, // 指定图片的宽度height: 200, // 指定图片的高度fit: BoxFit.cover, // 图片适应方式为完整地显示在容器内并裁剪超出部分alignment: Alignment.center, // 图片居中对齐repeat: ImageRepeat.noRepeat, // 图片不重复 ) Row水平布局和Column垂直布局 用于将子组件按水平或垂直方向排列。 mainAxisAlignment主轴对齐方式用于控制子组件在主轴上的对齐方式。 MainAxisAlignment.start子组件在主轴上靠近起始位置。MainAxisAlignment.end子组件在主轴上靠近结束位置。MainAxisAlignment.center子组件在主轴上居中对齐。MainAxisAlignment.spaceBetween子组件在主轴上均匀分布首尾不留空隙。MainAxisAlignment.spaceAround子组件在主轴上均匀分布首尾留有空隙。MainAxisAlignment.spaceEvenly子组件在主轴上均匀分布包括首尾。 crossAxisAlignment交叉轴对齐方式用于控制子组件在交叉轴上的对齐方式。 CrossAxisAlignment.start子组件在交叉轴上靠近起始位置。CrossAxisAlignment.end子组件在交叉轴上靠近结束位置。CrossAxisAlignment.center子组件在交叉轴上居中对齐。CrossAxisAlignment.stretch子组件在交叉轴上拉伸填充父容器。CrossAxisAlignment.baseline子组件在交叉轴上以基线对齐。 mainAxisSize主轴尺寸用于控制主轴的尺寸。 MainAxisSize.max主轴尽可能地占用父容器的空间。MainAxisSize.min主轴尽可能地缩小到子组件所需的最小空间。 verticalDirection垂直方向用于控制子组件的布局方向。 VerticalDirection.down子组件从上到下排列。VerticalDirection.up子组件从下到上排列。 以下是一个使用注释说明的示例 Row(// 主轴对齐方式居中对齐mainAxisAlignment: MainAxisAlignment.center,// 交叉轴对齐方式居中对齐crossAxisAlignment: CrossAxisAlignment.center,// 主轴尺寸尽可能地占用父容器的空间mainAxisSize: MainAxisSize.max,// 垂直方向从上到下排列verticalDirection: VerticalDirection.down,children: [// 子组件Text(Child 1),Text(Child 2),Text(Child 3),], ); ListView列表视图 用于显示一个可滚动的列表可以是垂直或水平方向。 scrollDirection滚动方向指定列表的滚动方向可以是垂直方向默认值或水平方向。 值Axis.vertical垂直方向默认值、Axis.horizontal水平方向 reverse反向滚动指定列表是否反向滚动。 值true、false默认值 controller滚动控制器指定列表的滚动控制器可以用于控制滚动位置或监听滚动事件。 值ScrollController对象 primary主轴方向上是否填充指定列表的主轴方向上是否填充。 值true、false默认值 physics滚动物理效果指定列表的滚动物理效果。 值ScrollPhysics对象 shrinkWrap是否根据子组件尺寸调整大小指定列表是否根据子组件尺寸调整大小。 值true、false默认值 padding内边距指定列表的内边距。 值EdgeInsets对象 itemExtent子组件固定尺寸指定子组件的固定尺寸用于优化性能。 值double类型 children子组件列表指定列表的子组件列表。 值ListWidget对象 使用注释说明如下 ListView(// 滚动方向为垂直方向scrollDirection: Axis.vertical,// 不反向滚动reverse: false,// 使用自定义的滚动控制器controller: ScrollController(),// 主轴方向上不填充primary: false,// 使用默认的滚动物理效果physics: null,// 根据子组件尺寸调整大小shrinkWrap: true,// 内边距为10.0padding: EdgeInsets.all(10.0),// 子组件固定尺寸为50.0itemExtent: 50.0,// 子组件列表children: [// 子组件1Container(),// 子组件2Container(),// ...], ) 遇到多布局的时候我们使用ListView.builder来创建一个包含10个项的ListView。在itemBuilder中我们根据index的奇偶性来决定使用不同的布局。偶数项使用红色背景的布局奇数项使用蓝色背景的布局。每个布局都包含一个居中的文本显示对应的项号运行一下代码你将看到一个多布局的ListView其中偶数项的背景为红色奇数项的背景为蓝色。 import package:flutter/material.dart;class MultiLayoutListView extends StatelessWidget {overrideWidget build(BuildContext context) {return ListView.builder(itemCount: 10,itemBuilder: (BuildContext context, int index) {if (index % 2 0) {// 偶数项使用红色背景的布局return Container(color: Colors.red,height: 100,child: Center(child: Text(Item $index,style: TextStyle(color: Colors.white,fontSize: 20,),),),);} else {// 奇数项使用蓝色背景的布局return Container(color: Colors.blue,height: 150,child: Center(child: Text(Item $index,style: TextStyle(color: Colors.white,fontSize: 20,),),),);}},);} }void main() {runApp(MaterialApp(home: Scaffold(appBar: AppBar(title: Text(Multi Layout ListView),),body: MultiLayoutListView(),),)); } GridView网格视图 用于显示一个二维网格布局的列表。 scrollDirection设置滚动方向可选值为Axis.vertical垂直方向和Axis.horizontal水平方向。reverse设置是否反向滚动默认为false。controller设置滚动控制器可以用于控制滚动位置和监听滚动事件。primary设置是否使用父级的PrimaryScrollController默认为false。physics设置滚动物理效果例如BouncingScrollPhysics、ClampingScrollPhysics等。shrinkWrap设置是否根据子项的总长度来确定GridView的长度默认为false。padding设置GridView的内边距。crossAxisSpacing设置子项在交叉轴方向的间距。mainAxisSpacing设置子项在主轴方向的间距。childAspectRatio设置子项的宽高比。children设置GridView的子项列表 使用注释说明的示例代码如下 GridView(// 设置滚动方向为垂直方向scrollDirection: Axis.vertical,// 设置是否反向滚动reverse: false,// 设置滚动控制器controller: ScrollController(),// 设置是否使用父级的PrimaryScrollControllerprimary: false,// 设置滚动物理效果physics: BouncingScrollPhysics(),// 设置是否根据子项的总长度来确定GridView的长度shrinkWrap: false,// 设置GridView的内边距padding: EdgeInsets.all(10),// 设置子项在交叉轴方向的间距crossAxisSpacing: 10,// 设置子项在主轴方向的间距mainAxisSpacing: 10,// 设置子项的宽高比childAspectRatio: 1,// 设置GridView的子项列表children: [// 子项1Container(),// 子项2Container(),// 子项3Container(),], ) Stack层叠布局 用于将子组件按照层叠的方式进行布局。 alignment对齐方式指定子组件在Stack中的对齐方式。 Alignment对象默认值为AlignmentDirectional.topStart fit未定位子组件的处理方式指定未定位的子组件在Stack中的处理方式。 StackFit枚举类型默认值为StackFit.looseStackFit.loose未定位的子组件根据自身大小来确定位置StackFit.expand未定位的子组件填充满Stack的大小 overflow溢出处理方式指定子组件超出Stack范围时的处理方式。 Overflow枚举类型默认值为Overflow.clipOverflow.clip超出部分裁剪掉Overflow.visible超出部分仍然可见 使用注释说明如下 Stack(// 对齐方式为居中对齐alignment: Alignment.center,// 未定位的子组件根据自身大小来确定位置fit: StackFit.loose,// 超出部分裁剪掉overflow: Overflow.clip,children: [// 子组件1Positioned(// 子组件1的左上角对齐Stack的左上角top: 0,left: 0,child: Container(),),// 子组件2Positioned(// 子组件2的右下角对齐Stack的右下角bottom: 0,right: 0,child: Container(),),// 子组件3Container(),], ) Card卡片 用于创建一个带有圆角和阴影效果的卡片。 color卡片的背景颜色可以是一个Color对象。 示例color: Colors.blue elevation卡片的高度用于创建阴影效果可以是一个double值。 示例elevation: 4.0 shape卡片的形状可以是一个ShapeBorder对象。 示例shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)) margin卡片的外边距可以是一个EdgeInsets对象。 示例margin: EdgeInsets.all(10.0) child卡片的内容部件可以是任何Widget。 示例child: Text(Hello World) 使用注释说明可以通过在属性前添加注释来提供更多信息例如 Card(// 设置卡片的背景颜色为红色color: Colors.red,// 设置卡片的高度为8.0elevation: 8.0,// 设置卡片的形状为圆角矩形shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)),// 设置卡片的外边距为10.0margin: EdgeInsets.all(10.0),// 设置卡片的内容为一个文本部件child: Text(Hello World), ) AppBar应用栏 用于创建一个顶部导航栏通常包含标题、图标和操作按钮。 leadingWidget类型设置在AppBar左侧的控件通常是一个图标按钮或者返回按钮。titleWidget类型设置AppBar中间的标题控件。actionsListWidget类型设置在AppBar右侧的控件列表。backgroundColorColor类型设置AppBar的背景颜色。elevationdouble类型设置AppBar的阴影高度。brightnessBrightness类型设置AppBar的亮度模式可以是Brightness.light浅色模式或Brightness.dark深色模式。centerTitlebool类型设置标题是否居中显示。automaticallyImplyLeadingbool类型设置是否自动显示leading控件默认为true。flexibleSpaceWidget类型设置AppBar的可伸缩空间通常用于实现一些特殊的效果比如渐变背景。bottomPreferredSizeWidget类型设置AppBar底部的控件通常是一个TabBar或者PreferredSize组件。shapeShapeBorder类型设置AppBar的形状比如RoundedRectangleBorder。toolbarHeightdouble类型设置AppBar的高度。toolbarOpacitydouble类型设置AppBar的透明度。 以下是一个使用注释说明的例子 AppBar(// 设置AppBar左侧的返回按钮leading: IconButton(icon: Icon(Icons.arrow_back),onPressed: () {// 返回上一页的操作},),// 设置AppBar中间的标题title: Text(App Bar),// 设置AppBar右侧的控件列表actions: [IconButton(icon: Icon(Icons.search),onPressed: () {// 执行搜索操作},),IconButton(icon: Icon(Icons.more_vert),onPressed: () {// 执行更多操作},),],// 设置AppBar的背景颜色backgroundColor: Colors.blue,// 设置AppBar的阴影高度elevation: 4.0,// 设置AppBar的亮度模式为浅色模式brightness: Brightness.light,// 设置标题居中显示centerTitle: true,// 设置AppBar的高度toolbarHeight: 56.0, ) FloatingActionButton浮动操作按钮 用于创建一个悬浮在界面上的圆形按钮通常用于执行主要操作。 onPressed点击按钮时触发的回调函数。tooltip当用户长按按钮时显示的文本提示。child按钮的子组件通常是一个图标。backgroundColor按钮的背景颜色。foregroundColor按钮的前景颜色用于图标和文本。elevation按钮的阴影高度。highlightElevation按钮在被按下时的阴影高度。disabledElevation按钮被禁用时的阴影高度。shape按钮的形状可以是圆形、矩形等。heroTag用于在页面切换时指定按钮的唯一标识符。mini是否将按钮设置为小尺寸。isExtended是否将按钮设置为扩展尺寸。clipBehavior按钮的裁剪行为用于处理子组件超出按钮范围的情况。 这些属性可以根据需要进行组合使用例如 FloatingActionButton(onPressed: () {// 点击按钮时触发的回调函数},tooltip: Add,child: Icon(Icons.add),backgroundColor: Colors.blue,foregroundColor: Colors.white,elevation: 4.0,shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0),), ) 在上面的例子中当用户点击按钮时会触发一个回调函数。按钮上显示一个加号图标背景颜色为蓝色前景颜色为白色阴影高度为4.0形状为圆角矩形。 TextField文本输入框 用于接收用户的文本输入。 controllerTextEditingController类型用于控制文本输入框的内容。focusNodeFocusNode类型用于控制文本输入框的焦点。decorationInputDecoration类型用于设置文本输入框的装饰样式比如边框、提示文本等。keyboardTypeTextInputType类型用于设置键盘类型比如数字键盘、邮箱键盘等。textInputActionTextInputAction类型用于设置键盘动作按钮的类型比如完成、下一步等。styleTextStyle类型用于设置文本输入框中文本的样式比如字体、颜色等。onChangedValueChangedString类型当文本输入框的内容发生变化时触发的回调函数。onSubmittedValueChangedString类型当用户提交文本输入时触发的回调函数。maxLengthint类型限制文本输入框的最大字符数。obscureTextbool类型是否将输入内容隐藏为密码形式。autocorrectbool类型是否自动纠正用户输入的文本。autofocusbool类型是否自动获取焦点。enabledbool类型是否启用文本输入框。textAlignTextAlign类型设置文本在文本输入框中的对齐方式。cursorColorColor类型设置光标的颜色。 以下是一个使用注释说明的例子 TextField(// 用于控制文本输入框的内容controller: _textEditingController,// 用于控制文本输入框的焦点focusNode: _focusNode,// 用于设置文本输入框的装饰样式decoration: InputDecoration(labelText: Username,hintText: Enter your username,border: OutlineInputBorder(),),// 用于设置键盘类型keyboardType: TextInputType.text,// 用于设置键盘动作按钮的类型textInputAction: TextInputAction.done,// 用于设置文本输入框中文本的样式style: TextStyle(fontSize: 16.0,color: Colors.black,),// 当文本输入框的内容发生变化时触发的回调函数onChanged: (value) {// 处理文本变化的逻辑},// 当用户提交文本输入时触发的回调函数onSubmitted: (value) {// 处理文本提交的逻辑},// 限制文本输入框的最大字符数maxLength: 20,// 是否将输入内容隐藏为密码形式obscureText: false,// 是否自动纠正用户输入的文本autocorrect: true,// 是否自动获取焦点autofocus: false,// 是否启用文本输入框enabled: true,// 设置文本在文本输入框中的对齐方式textAlign: TextAlign.start,// 设置光标的颜色cursorColor: Colors.blue, ) Button按钮 用于创建一个可点击的按钮可以设置样式和点击事件。 onPressed指定按钮被点击时的回调函数。通常使用匿名函数或方法引用来定义回调函数。例如onPressed: () { /* 点击按钮后执行的代码 */ } child指定按钮上显示的子部件。可以是Text、Icon等。例如child: Text(按钮文本) color指定按钮的背景颜色。可以使用Color对象或者Color值。例如color: Colors.blue textColor指定按钮文本的颜色。可以使用Color对象或者Color值。例如textColor: Colors.white disabledColor指定按钮在禁用状态下的背景颜色。例如disabledColor: Colors.grey disabledTextColor指定按钮在禁用状态下的文本颜色。例如disabledTextColor: Colors.white padding指定按钮的内边距。可以使用EdgeInsets对象来定义上、下、左、右的边距值。例如padding: EdgeInsets.all(10.0) shape指定按钮的形状。可以使用RoundedRectangleBorder、CircleBorder等形状。例如shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)) splashColor指定按钮被按下时的水波纹颜色。例如splashColor: Colors.red elevation指定按钮的阴影高度。例如elevation: 5.0 使用注释说明可以在代码中添加注释来解释每个属性的作用例如 FlatButton(onPressed: () {// 点击按钮后执行的代码},child: Text(按钮文本),color: Colors.blue, // 按钮背景颜色textColor: Colors.white, // 按钮文本颜色disabledColor: Colors.grey, // 禁用状态下的背景颜色disabledTextColor: Colors.white, // 禁用状态下的文本颜色padding: EdgeInsets.all(10.0), // 按钮内边距shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)), // 按钮形状splashColor: Colors.red, // 按钮按下时的水波纹颜色elevation: 5.0, // 按钮阴影高度 ) Checkbox复选框 用于表示一个可选中或取消选中的选项。 valuebool类型表示复选框的选中状态。如果为true则复选框被选中如果为false则复选框未被选中。onChangedValueChangedbool类型表示当复选框的选中状态发生改变时的回调函数。可以在回调函数中更新复选框的选中状态。activeColorColor类型表示复选框选中时的颜色。默认为主题颜色。checkColorColor类型表示复选框内部勾选标记的颜色。默认为白色。tristatebool类型表示复选框是否支持三态选中、未选中、不确定。默认为false即不支持三态。materialTapTargetSizeMaterialTapTargetSize类型表示复选框的点击目标大小。默认为MaterialTapTargetSize.padded。visualDensityVisualDensity类型表示复选框的视觉密度。默认为VisualDensity.comfortable。 使用注释说明可以在代码中添加注释来解释每个属性的作用例如 Checkbox(value: _isChecked, // 当前复选框的选中状态onChanged: (bool newValue) {setState(() {_isChecked newValue; // 更新复选框的选中状态});},activeColor: Colors.blue, // 复选框选中时的颜色checkColor: Colors.white, // 复选框内部勾选标记的颜色tristate: false, // 不支持三态materialTapTargetSize: MaterialTapTargetSize.padded, // 复选框的点击目标大小visualDensity: VisualDensity.comfortable, // 复选框的视觉密度 ) Radio单选框 用于表示一组选项中的单个选项。 valueT类型表示单选框的值。当单选框被选中时它的值将被传递给groupValue。groupValueT类型表示单选框组的值。当单选框的值与groupValue相等时该单选框将被选中。onChangedValueChangedT类型表示当单选框的选中状态发生改变时的回调函数。可以在回调函数中更新groupValue的值。activeColorColor类型表示单选框选中时的颜色。默认为主题颜色。materialTapTargetSizeMaterialTapTargetSize类型表示单选框的点击目标大小。默认为MaterialTapTargetSize.padded。visualDensityVisualDensity类型表示单选框的视觉密度。默认为VisualDensity.comfortable。 使用注释说明可以在代码中添加注释来解释每个属性的作用例如 Radio(value: _selectedValue, // 当前单选框的值groupValue: _groupValue, // 单选框组的值onChanged: (T newValue) {setState(() {_groupValue newValue; // 更新单选框组的值});},activeColor: Colors.blue, // 单选框选中时的颜色materialTapTargetSize: MaterialTapTargetSize.padded, // 单选框的点击目标大小visualDensity: VisualDensity.comfortable, // 单选框的视觉密度 ) Switch开关 用于表示一个开关状态的组件。 valuebool类型表示开关的当前状态true表示开启false表示关闭。 onChangedFunction类型当开关状态发生改变时触发的回调函数。 activeColorColor类型表示开启状态下的颜色。 activeTrackColorColor类型表示开启状态下的轨道颜色。 inactiveThumbColorColor类型表示关闭状态下的滑块颜色。 inactiveTrackColorColor类型表示关闭状态下的轨道颜色。 activeThumbImageImageProvider类型表示开启状态下的滑块图片。 inactiveThumbImageImageProvider类型表示关闭状态下的滑块图片。 dragStartBehaviorDragStartBehavior类型表示滑动开始的行为。 下面是一个例子演示了如何使用Switch组件及其属性 bool switchValue false; // 开关的初始状态为关闭Switch(value: switchValue, // 开关的当前状态onChanged: (bool newValue) {setState(() {switchValue newValue; // 开关状态改变时更新状态值});},activeColor: Colors.blue, // 开启状态下的颜色为蓝色activeTrackColor: Colors.blue[200], // 开启状态下的轨道颜色为浅蓝色inactiveThumbColor: Colors.grey, // 关闭状态下的滑块颜色为灰色inactiveTrackColor: Colors.grey[300], // 关闭状态下的轨道颜色为浅灰色activeThumbImage: AssetImage(assets/images/switch_on.png), // 开启状态下的滑块图片为switch_on.pnginactiveThumbImage: AssetImage(assets/images/switch_off.png), // 关闭状态下的滑块图片为switch_off.pngdragStartBehavior: DragStartBehavior.start, // 滑动开始的行为为从滑块开始 ) 在上述例子中当开关的状态发生改变时会调用onChanged回调函数来更新开关的状态值。开启状态下的颜色为蓝色轨道颜色为浅蓝色滑块颜色为灰色轨道颜色为浅灰色。同时开启状态下的滑块图片为switch_on.png关闭状态下的滑块图片为switch_off.png。滑动开始的行为为从滑块开始。 Slider滑块 用于表示一个可拖动的滑块可以选择一个范围内的值。 valuedouble类型表示滑块的当前值。 onChangedFunction类型当滑块的值发生改变时触发的回调函数。 onChangeStartFunction类型当滑块开始滑动时触发的回调函数。 onChangeEndFunction类型当滑块停止滑动时触发的回调函数。 mindouble类型表示滑块的最小值。 maxdouble类型表示滑块的最大值。 divisionsint类型表示滑块的离散间隔数量。 labelString类型表示滑块当前值的标签。 activeColorColor类型表示滑块的激活颜色。 inactiveColorColor类型表示滑块的非激活颜色。 下面是一个例子演示了如何使用Slider组件及其属性 double sliderValue 0.0; // 滑块的初始值为0Slider(value: sliderValue, // 滑块的当前值onChanged: (double newValue) {setState(() {sliderValue newValue; // 滑块值改变时更新状态值});},onChangeStart: (double startValue) {print(滑块开始滑动当前值为$startValue); // 滑块开始滑动时的回调函数},onChangeEnd: (double endValue) {print(滑块停止滑动当前值为$endValue); // 滑块停止滑动时的回调函数},min: 0.0, // 滑块的最小值为0max: 100.0, // 滑块的最大值为100divisions: 5, // 滑块的离散间隔数量为5label: sliderValue.toString(), // 滑块当前值的标签activeColor: Colors.blue, // 滑块的激活颜色为蓝色inactiveColor: Colors.grey, // 滑块的非激活颜色为灰色 ) 在上述例子中当滑块的值发生改变时会调用onChanged回调函数来更新滑块的状态值。滑块的最小值为0最大值为100离散间隔数量为5。滑块的激活颜色为蓝色非激活颜色为灰色。滑块当前值的标签显示在滑块上方。当滑块开始滑动时会触发onChangeStart回调函数并打印当前值。当滑块停止滑动时会触发onChangeEnd回调函数并打印当前值。 ProgressIndicator进度指示器 用于显示一个进度指示器可以是圆形、线性或自定义样式。 value表示当前进度的值取值范围为0.0到1.0默认为0.0。backgroundColor指示器的背景颜色。valueColor指示器的前景颜色可以是固定颜色或动画颜色。strokeWidth指示器的线条宽度。semanticsLabel用于辅助功能的标签描述进度指示器的含义。 下面是一个示例演示了如何使用CircularProgressIndicator圆形进度指示器并设置其属性 import package:flutter/material.dart;class MyProgressIndicator extends StatelessWidget {overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text(Progress Indicator Example),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: Widget[CircularProgressIndicator( // 使用CircularProgressIndicatorvalue: 0.5, // 设置进度值为0.5backgroundColor: Colors.grey, // 设置背景颜色为灰色valueColor: AlwaysStoppedAnimationColor(Colors.blue), // 设置前景颜色为蓝色strokeWidth: 5.0, // 设置线条宽度为5.0semanticsLabel: Loading, // 设置辅助功能标签),SizedBox(height: 20.0), // 添加间距LinearProgressIndicator( // 使用LinearProgressIndicatorvalue: 0.8, // 设置进度值为0.8backgroundColor: Colors.grey, // 设置背景颜色为灰色valueColor: AlwaysStoppedAnimationColor(Colors.green), // 设置前景颜色为绿色minHeight: 10.0, // 设置最小高度为10.0semanticsLabel: Loading, // 设置辅助功能标签),],),),);} }void main() {runApp(MaterialApp(home: MyProgressIndicator(),)); } 在上面的示例中我们创建了一个包含两个进度指示器的页面。第一个是CircularProgressIndicator它的进度值为0.5背景颜色为灰色前景颜色为蓝色线条宽度为5.0辅助功能标签为Loading。第二个是LinearProgressIndicator它的进度值为0.8背景颜色为灰色前景颜色为绿色最小高度为10.0辅助功能标签为Loading。 AlertDialog对话框 用于显示一个对话框通常用于提示用户或获取用户的确认。 title对话框的标题类型为Widget默认为。content对话框的内容类型为Widget默认为。actions对话框的操作按钮类型为ListWidget默认为。shape对话框的形状类型为ShapeBorder默认为一个圆角矩形。backgroundColor对话框的背景颜色类型为Color默认为白色。elevation对话框的高度类型为double默认为24.0。semanticLabel对话框的语义标签类型为String默认为。 下面是一个例子演示了如何创建一个AlertDialog并设置其属性 import package:flutter/material.dart;void main() {runApp(MyApp()); }class MyApp extends StatelessWidget {overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: Text(AlertDialog Example),),body: Center(child: RaisedButton(child: Text(Show Dialog),onPressed: () {showDialog(context: context,builder: (BuildContext context) {return AlertDialog(title: Text(Confirmation),content: Text(Are you sure you want to delete this item?),actions: [FlatButton(child: Text(Cancel),onPressed: () {Navigator.of(context).pop();},),FlatButton(child: Text(Delete),onPressed: () {// Perform delete operationNavigator.of(context).pop();},),],);},);},),),),);} } 在这个例子中我们创建了一个AlertDialog设置了标题为Confirmation内容为Are you sure you want to delete this item?。对话框有两个操作按钮一个是Cancel点击后关闭对话框另一个是Delete点击后执行删除操作并关闭对话框。
文章转载自:
http://www.morning.lqlhw.cn.gov.cn.lqlhw.cn
http://www.morning.gwxsk.cn.gov.cn.gwxsk.cn
http://www.morning.gsjzs.cn.gov.cn.gsjzs.cn
http://www.morning.lzttq.cn.gov.cn.lzttq.cn
http://www.morning.zdfrg.cn.gov.cn.zdfrg.cn
http://www.morning.pyxwn.cn.gov.cn.pyxwn.cn
http://www.morning.tcsdlbt.cn.gov.cn.tcsdlbt.cn
http://www.morning.tkflb.cn.gov.cn.tkflb.cn
http://www.morning.deupp.com.gov.cn.deupp.com
http://www.morning.ns3nt8.cn.gov.cn.ns3nt8.cn
http://www.morning.gtylt.cn.gov.cn.gtylt.cn
http://www.morning.jmbgl.cn.gov.cn.jmbgl.cn
http://www.morning.elsemon.com.gov.cn.elsemon.com
http://www.morning.jwlmm.cn.gov.cn.jwlmm.cn
http://www.morning.phechi.com.gov.cn.phechi.com
http://www.morning.xldpm.cn.gov.cn.xldpm.cn
http://www.morning.rkrl.cn.gov.cn.rkrl.cn
http://www.morning.jfbpf.cn.gov.cn.jfbpf.cn
http://www.morning.sqgqh.cn.gov.cn.sqgqh.cn
http://www.morning.tscsd.cn.gov.cn.tscsd.cn
http://www.morning.ntwxt.cn.gov.cn.ntwxt.cn
http://www.morning.nylbb.cn.gov.cn.nylbb.cn
http://www.morning.fkmqg.cn.gov.cn.fkmqg.cn
http://www.morning.pzlhq.cn.gov.cn.pzlhq.cn
http://www.morning.dtnzk.cn.gov.cn.dtnzk.cn
http://www.morning.kzdwt.cn.gov.cn.kzdwt.cn
http://www.morning.tcfhs.cn.gov.cn.tcfhs.cn
http://www.morning.gjxr.cn.gov.cn.gjxr.cn
http://www.morning.wcgfy.cn.gov.cn.wcgfy.cn
http://www.morning.pwghp.cn.gov.cn.pwghp.cn
http://www.morning.rqnml.cn.gov.cn.rqnml.cn
http://www.morning.snlxb.cn.gov.cn.snlxb.cn
http://www.morning.pngph.cn.gov.cn.pngph.cn
http://www.morning.nwbnt.cn.gov.cn.nwbnt.cn
http://www.morning.ybmp.cn.gov.cn.ybmp.cn
http://www.morning.wjwfj.cn.gov.cn.wjwfj.cn
http://www.morning.yfrlk.cn.gov.cn.yfrlk.cn
http://www.morning.krgjc.cn.gov.cn.krgjc.cn
http://www.morning.whothehellami.com.gov.cn.whothehellami.com
http://www.morning.ktxd.cn.gov.cn.ktxd.cn
http://www.morning.lrskd.cn.gov.cn.lrskd.cn
http://www.morning.mzhjx.cn.gov.cn.mzhjx.cn
http://www.morning.tymwx.cn.gov.cn.tymwx.cn
http://www.morning.mwns.cn.gov.cn.mwns.cn
http://www.morning.rjrnx.cn.gov.cn.rjrnx.cn
http://www.morning.lnrr.cn.gov.cn.lnrr.cn
http://www.morning.wkhfg.cn.gov.cn.wkhfg.cn
http://www.morning.tdzxy.cn.gov.cn.tdzxy.cn
http://www.morning.wjxyg.cn.gov.cn.wjxyg.cn
http://www.morning.rbsxf.cn.gov.cn.rbsxf.cn
http://www.morning.ydmml.cn.gov.cn.ydmml.cn
http://www.morning.pfbx.cn.gov.cn.pfbx.cn
http://www.morning.kgqpx.cn.gov.cn.kgqpx.cn
http://www.morning.rfbpq.cn.gov.cn.rfbpq.cn
http://www.morning.bpmnz.cn.gov.cn.bpmnz.cn
http://www.morning.sdkaiyu.com.gov.cn.sdkaiyu.com
http://www.morning.rfhmb.cn.gov.cn.rfhmb.cn
http://www.morning.mxptg.cn.gov.cn.mxptg.cn
http://www.morning.jfmyt.cn.gov.cn.jfmyt.cn
http://www.morning.yrjkz.cn.gov.cn.yrjkz.cn
http://www.morning.china-cj.com.gov.cn.china-cj.com
http://www.morning.prgnp.cn.gov.cn.prgnp.cn
http://www.morning.bfbl.cn.gov.cn.bfbl.cn
http://www.morning.dpjtn.cn.gov.cn.dpjtn.cn
http://www.morning.zfhwm.cn.gov.cn.zfhwm.cn
http://www.morning.xhgxd.cn.gov.cn.xhgxd.cn
http://www.morning.yrdn.cn.gov.cn.yrdn.cn
http://www.morning.yhwxn.cn.gov.cn.yhwxn.cn
http://www.morning.qnxzx.cn.gov.cn.qnxzx.cn
http://www.morning.cjsrg.cn.gov.cn.cjsrg.cn
http://www.morning.bmpjp.cn.gov.cn.bmpjp.cn
http://www.morning.rythy.cn.gov.cn.rythy.cn
http://www.morning.nspzy.cn.gov.cn.nspzy.cn
http://www.morning.wnjsp.cn.gov.cn.wnjsp.cn
http://www.morning.dlgjdg.cn.gov.cn.dlgjdg.cn
http://www.morning.rjhts.cn.gov.cn.rjhts.cn
http://www.morning.qmrsf.cn.gov.cn.qmrsf.cn
http://www.morning.tkhyk.cn.gov.cn.tkhyk.cn
http://www.morning.lgqdl.cn.gov.cn.lgqdl.cn
http://www.morning.dxpqd.cn.gov.cn.dxpqd.cn
http://www.tj-hxxt.cn/news/259956.html

相关文章:

  • 网页设计项目报告总结整站优化全网营销
  • 国家森林公园网站建设做的比较好的网站推荐
  • 做俄语网站龙华网站建设yihekj
  • 怎么建设信息网站网站制作易捷网络
  • 厦门网站制作软件建设公司网站的请示
  • 北京微网站建设公司推荐国外网站设计
  • 网站开发招标技术要求如何微信支付购物网站
  • 个人网站的重要性青岛网站排名多少钱
  • 门户网站和部门网站的区别建设部网站四库一平台
  • 峰峰专业做网站wordpress搭建系统
  • 网站建设策划结构免费开源分类信息系统
  • 企业网站html源码千图网素材下载网站
  • 如何保护自己的网站中山 网站设计
  • 黄冈网站推广优化找哪家休闲会所网站建设
  • 网站建设实战视频教程做现货黄金网站
  • 城乡建设网站证件查询系统苏州软件公司排行榜
  • 佛山h5网站公司网站制作论文答辩
  • 个人免费开店的网站手机写文章用wordpress
  • 免费行情软件app网站不下载四川省城乡与建设厅网站
  • 音乐网站设计规划书wordpress链接的index.php
  • 小说网页网站建设网站备案注销申请表
  • 学做网站设计校园门户网站设计论文
  • 价钱网站建设科技作品
  • 网站建设项目评审意见民族团结 网站建设
  • 网站建设及优化重要性怎么自己做淘宝客网站
  • 五金制品东莞网站建设伍佰亿书画网网站
  • 河南郑州新闻重庆官网seo分析
  • 建站程序大全网页制作的公司收费
  • 采购网站官网如何提升网站知名度
  • 知名的集团门户网站建设费用网奇e游通旅游网站