Flutter的基础知识之Dart语法
Flutter的基础知识之Dart语法
- 关于TextStyle的设置
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget{@overrideWidget build(BuildContext context) {// TODO: implement buildreturn MaterialApp(title: 'Welcome to Flutter',home: Scaffold(appBar: AppBar(title: Text('FlutterNB!!!'),),body: Center(child: Text('Hello World wsj is a handsome man he has a wonderful eyes, he can do every things, he can do best in every ',textAlign: TextAlign.left,//设置文字对齐方式maxLines: 1,//设置屏幕中最多显示的文字行数overflow: TextOverflow.ellipsis,//字符超出一行后用省略号代替style:TextStyle(fontSize: 25,//设置字体的大小color: Color.fromARGB(255, 255, 123, 124),//设置字体的颜色decoration:TextDecoration.underline,//添加底部下划线decorationStyle: TextDecorationStyle.dotted,//添加底部下划线的样式),),),),);}
}
- 关于Container的设置
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget{@overrideWidget build(BuildContext context) {return MaterialApp(title: 'Text widget',home: Scaffold(body:Center (child: Container(//相当于前端中的div,是一个容器child: new Text('Hello WSJ', style: TextStyle(fontSize: 40.0, color: Color.fromARGB(200, 212, 25, 20)),),alignment: Alignment.topLeft,//对齐方式width: 500.0,height: 400.0,//color: Colors.lightBlueAccent,//设置容器背景颜色//padding: const EdgeInsets.all(10.0),//设置内边距上下左右都设置padding: const EdgeInsets.fromLTRB(10.0, 30.0, 0, 0),//可以根据需要设置上下左右的内边距margin: const EdgeInsets.all(10),//设置外边距,就是容器相较于外边框的距离decoration: new BoxDecoration(gradient: const LinearGradient(//设置线性渐变colors: [Colors.lightBlueAccent, Colors.lightGreenAccent, Colors.purple]//设置线性渐变的颜色),border: Border.all(width: 5, color: Colors.red),//设置边框),),),),);}
}
- 关于Image组件的使用
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget{//继承于静态的组件@overrideWidget build(BuildContext context) {return MaterialApp(title: 'Text Image',home: Scaffold(//脚手架结构appBar: new AppBar(title: new Text('Image'),),body: Center(//基本页面结构child: Container(//容器child: new Image.network(//'https://img00.zhaopin.cn/img_button/202010/09/58_195948343594.jpg','https://blogimages.jspang.com/blogtouxiang1.jpg',//fit: BoxFit.contain,//图片不做任何处理,按原图显示fit: BoxFit.fill,//按容器填满//fit: BoxFit.fitWidth,//横向填满图片,纵向有可能被裁切//fit: BoxFit.cover,//图片会充满整个容器,有可能被,拉伸也有可能被裁切//fit:BoxFit.scaleDown,//不会改变原图片大小color: Colors.lightGreenAccent,colorBlendMode: BlendMode.lighten,//将颜色与图片混合进行叠加repeat: ImageRepeat.repeat,//对图片进行重复),width: 400, height: 300,color: Colors.lightBlueAccent,),),),);}
}
- ListView的使用ListTile
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget{//静态组件@overrideWidget build(BuildContext context) {return MaterialApp(title: 'ListView',home: Scaffold(//脚手架appBar: new AppBar(title: new Text('Hello ListView')),body: new ListView(children: <Widget>[new ListTile(//ListTile 通常用于在 Flutter 中填充 ListView// leading: new Icon(Icons.account_balance),//添加小图标leading: CircleAvatar(//将图像或图表添加到列表的开头backgroundImage: NetworkImage('https://img95.699pic.com/photo/50137/3505.jpg_wh300.jpg'),),title: new Text('account_balance'),),new ListTile(//ListTile 通常用于在 Flutter 中填充 ListViewleading: new Icon(Icons.account_balance_wallet_rounded),//添加小图标title: new Text('account_balance_wallet_rounded'),),new ListTile(//ListTile 通常用于在 Flutter 中填充 ListViewleading: new Icon(Icons.add_a_photo_outlined),//添加小图标title: new Text('add_a_photo_outlined'),),],),),);}
}
- ListView横向列表的使用
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget{//静态小组件@overrideWidget build(BuildContext context) {// TODO: implement buildreturn MaterialApp(title: 'ListView',home: Scaffold(appBar: new AppBar(title: new Text('Hello ListView')),body: Center(child: Container(height: 200,child: MyList(),),),),);}
}
class MyList extends StatelessWidget{@overrideWidget build(BuildContext context) {// TODO: implement buildreturn ListView(scrollDirection: Axis.horizontal,//横向列表children: <Widget>[new Container(width: 180,color: Colors.lightBlue,),new Container(width: 180,color: Colors.yellow,),new Container(width: 180,color: Colors.deepOrange,),new Container(width: 180,color: Colors.purple,),],);}
}
- ListView动态列表的使用
import 'package:flutter/material.dart';
void main() => runApp(MyApp(item:new List<String>.generate(1000, (i) => 'Item $i'),//i相当于数组下标,$i说明i是传递过去的
));
class MyApp extends StatelessWidget {final List<String> item;//接收参数MyApp({Key key, @required this.item}):super(key:key);//接收参数@overrideWidget build(BuildContext context) {// TODO: implement buildreturn MaterialApp(//title: '动态列表',home: Scaffold(appBar: new AppBar(title: new Text('动态列表'),),body: new ListView.builder(itemCount: item.length,//得到传递过来的数组长度itemBuilder: (context, index){return new ListTile(title: new Text('${item[index]}'),);},),),);}
}
- 网格列表
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget{@overrideWidget build(BuildContext context) {// TODO: implement buildreturn MaterialApp(title: '网格列表',home: Scaffold(appBar: new AppBar(title: new Text('网格列表'),),// body: GridView.count(// padding: const EdgeInsets.all(20),// crossAxisSpacing: 10,//网格之间的边距// crossAxisCount: 3,//每行显示的列数// children: <Widget>[// const Text('I am wsj'),// const Text('I am zll'),// const Text('I am book'),// const Text('I am writting'),// const Text('I am cccc'),// const Text('I am zzzz'),// ],// ),body: GridView(gridDelegate:SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3,mainAxisSpacing: 2,//行间距crossAxisSpacing: 2,//列间距childAspectRatio: 0.7//横宽比),children: [new Image.network('http://img5.mtime.cn/mg/2021/01/15/093740.12876174.jpg', fit: BoxFit.cover),new Image.network('http://img5.mtime.cn/mt/2020/11/20/143205.34931246_1280X720X2.jpg', fit: BoxFit.cover),new Image.network('http://img5.mtime.cn/mt/2020/08/25/091724.62083337_1280X720X2.jpg', fit: BoxFit.cover),new Image.network('http://img5.mtime.cn/mt/2020/10/22/100702.49207766_1280X720X2.jpg', fit: BoxFit.cover),new Image.network('http://img5.mtime.cn/mt/2021/01/12/180520.10988653_1280X720X2.jpg', fit: BoxFit.cover),new Image.network('http://img5.mtime.cn/mt/2020/12/08/165505.14870477_1280X720X2.jpg', fit: BoxFit.cover),],),),);}
}
- RowWidget布局详解之水平布局
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget{@overrideWidget build(BuildContext context) {// TODO: implement buildreturn MaterialApp(title: 'RowWidget布局详解',home: Scaffold(appBar: new AppBar(title: new Text('水平布局'),),body: new Row(children: [new RaisedButton(//不灵活的点击事件,根据子元素的大小来分配空间onPressed: (){},//点击事件color: Colors.red,child: new Text('红色按钮'),),new RaisedButton(onPressed: (){},//点击事件color: Colors.orange,child: new Text('橙色按钮'),),Expanded(child:new RaisedButton(//灵活的水平布局,会平均分配空间onPressed: (){},//点击事件color: Colors.blue,child: new Text('蓝色按钮'),)),new RaisedButton(onPressed: (){},//点击事件color: Colors.green,child: new Text('绿色按钮'),),new RaisedButton(//灵活的水平布局onPressed: (){},//点击事件color: Colors.purple,child: new Text('紫色按钮'),)],),),);}
}
- RowWidget布局之垂直布局
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {// TODO: implement buildreturn MaterialApp(title: 'RowWidget布局之垂直布局',home: Scaffold(appBar: new AppBar(title: Text('RowWidget布局之垂直布局')),body: Center(child:Column(crossAxisAlignment: CrossAxisAlignment.center,//副轴对其方式,因为布局方式是垂直布局,所以副轴就是水平的mainAxisAlignment: MainAxisAlignment.center,//主轴对齐方式children: [Text('I am wsj'),Expanded(child: Text('I am a handsome boy in the world')),Text('I love coding'),],),),),);}
}
- 层叠布局
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget{@overrideWidget build(BuildContext context) {// TODO: implement buildvar stack = new Stack(alignment: const FractionalOffset(0.5, 0.9),children: [new CircleAvatar(backgroundImage: new NetworkImage('https://profile.csdnimg.cn/3/D/5/0_weixin_44290628'),radius: 100,),new Positioned(//相当于绝对布局top: 10,left: 40,child: new Text('wsj is handsome'),),new Positioned(child: Text('羽化登仙'),top: 150,left: 68,),// new Container(// decoration: BoxDecoration(// color: Colors.white70,// borderRadius: BorderRadius.circular(10),// ),// padding: EdgeInsets.all(10),// child: Text('羽化登仙'),// ),],);return MaterialApp(title: '层叠布局',home: Scaffold(appBar: AppBar(title: Text('层叠布局')),body: Center(child: stack,),),);}
}
11.导航的的参数传递和接收01
import 'package:flutter/material.dart';
void main(){runApp(MaterialApp(title: '导航栏演示01',home: new FirstScreen(),));
}
class FirstScreen extends StatelessWidget
{@overrideWidget build(BuildContext context) {// TODO: implement buildreturn Scaffold(appBar: AppBar(title: Text('导航页面')),body: Center(child: RaisedButton(//凸起按钮child: Text('查看商品详情页'),onPressed: (){//按钮按下时会产生什么样的操作,也就是按下动作的响应事件Navigator.push(context, MaterialPageRoute(//相当于页面的跳转builder: (context) => new SecondScreen()));},),),);}
}
class SecondScreen extends StatelessWidget
{@overrideWidget build(BuildContext context) {// TODO: implement buildreturn Scaffold(appBar: AppBar(title: Text('wsj最帅!!!')),body: Center(child: RaisedButton(child: Text('返回'),onPressed: (){Navigator.pop(context);},),),);}
}
- 导航的参数传递和接受02
import 'package:flutter/material.dart';
class Product{final String title;//商品标题final String decription;//商品描述Product(this.title, this.decription);
}
void main(){runApp(MaterialApp(title: '导航的数据和接收',home: ProductList(products:List.generate(20, (index) => Product('王少杰的商品 $index', '这是一个商品详情,编号为 $index'))),));
}
class ProductList extends StatelessWidget {final List<Product> products;ProductList({Key key, @required this.products}):super(key: key);//构造函数@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('商品列表')),body: ListView.builder(itemCount: products.length,itemBuilder: (context, index){return ListTile(title: Text(products[index].title),onTap: (){//点击之后会有一个响应事件Navigator.push(context, MaterialPageRoute(builder: (context) => ProductDetail(product:products[index]),));},);},),);}
}
class ProductDetail extends StatelessWidget {final Product product;ProductDetail({Key key, @required this.product}):super(key: key);@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('${product.title}')),body: Center(child: Text('${product.decription}'),),);}
}
- 页面跳转并返回数据
import 'package:flutter/material.dart';
void main(){runApp(MaterialApp(title: '页面跳转返回数据',home: FirstPage(),));
}
class FirstPage extends StatelessWidget{@overrideWidget build(BuildContext context) {// TODO: implement buildreturn Scaffold(appBar: AppBar(title: Text('要电话')),body: Center(child: RouteButton(),),);}
}
class RouteButton extends StatelessWidget {@overrideWidget build(BuildContext context) {return RaisedButton(onPressed: (){_navigatetophone(context);},child: Text('去要电话'),);}_navigatetophone(BuildContext context) async{//异步方法final result = await Navigator.push(context,MaterialPageRoute(builder: (context)=>Phone()));Scaffold.of(context).showSnackBar(SnackBar(content: Text('$result')));}
}
class Phone extends StatelessWidget {@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('我是电话')),body: Center(child: Column(children: [RaisedButton(child: Text('长途电话'),onPressed: (){Navigator.pop(context, '长途电话:17666378389');}),RaisedButton(child: Text('国内电话'),onPressed: (){Navigator.pop(context, '国内电话:186555378389');}),],),),);}
}
Flutter的基础知识之Dart语法相关推荐
- python语法基础知识总结-python语法基础知识
一.数字类型及操作 1.整数类型 可正可负,无取值范围限制pow(x,y):计算x^y 2.浮点数类型 存在不确定尾数round(x,d):对x四舍五入,d为小数截取位数e/E:a*10^b 3.复数 ...
- python语法基础知识案例_Python 语法速览与实战清单
本文是对于 现代 Python 开发:语法基础与工程实践的总结,更多 Python 相关资料参考 Python 学习与实践资料索引:本文参考了 Python Crash Course - Cheat ...
- 【前端基础】12.CSS 基础知识学习——基本语法结构
视频 目录 一,css基本规则规范 1.快捷方式 2.css注释 3.css命名规范 4.css书写规范 (1)空格规范 (2)选择器规范 (3)属性规范 5.css样式规则 二,字体样式 1.fon ...
- html5基础知识第一章语法
语法知识内容:html简介,html文档结构说明,<!doctype>标签,开发工具介绍及下载 html简介 Html(Hyper text Markup Language):超文本标记语 ...
- javascript基础知识(3) 基本语法
1.语法 JavaScript的语法和Java语言类似,每个语句以;结束,语句块用{...}.但是,JavaScript并不强制要求在每个语句的结尾加;,浏览器中负责执行JavaScript代码的引擎 ...
- java中两个doub组成一个数组_Java基础知识2-Java基本语法
数据类型 1.Java程序的基本组成 关键字:被Java语言赋予特定含义的单词,不能作标识符,如private. 标识符:由数字.字母.$和_组成的字符串,用于引用变量.且首字母不能是数字. 变量:程 ...
- Flutter基础篇(2)-- 老司机用一篇博客带你快速熟悉Dart语法
版权声明:本文为博主原创文章,未经博主允许不得转载.https://www.jianshu.com/p/3d927a7bf020 转载请标明出处: https://www.jianshu.com/p/ ...
- JQuery 基础知识学习(详尽版)
JQuery 详尽的基础知识学习 jQuery 语法 jQuery 选择器 jQuery 选择器(大全) jQuery 事件 ready() holdReady() on() off() one() ...
- Flutter 开发中最实用的 Dart 语法知识
零.前言 都说 Flutter 是谷歌的新宠,这段时间有空,就学习了一下 Dart 语法.本篇文章将会详细全面的介绍 Dart 常用语法. 一.变量和常量 在 Drat 语言中,一切皆对象,对象的默认 ...
最新文章
- 《 嵌入式系统设计与实践》一一3.6 测试硬件(和软件)
- CentOS7_装机软件推荐
- 凡客诚品成都研发中心招聘.net开发经理
- CH Round #30 摆花[矩阵乘法]
- 分享15款为开发人员准备的开发移动应用程序必备的新资源和工具
- 「递归」第6集 | 是鹅厂技术青年的模样
- [蓝桥杯2015决赛]分机号-枚举(水题)
- python读取日期_从文件中读取日期和数据(Python)
- c 内存加载易语言dll,[求助]MemoryLoadLibrary 加载MFC 易语言 DLL 失败
- 【Elasticsearch】es 重启 已经 重启会导致什么问题
- 带线程池的socket客户端与服务端
- vba中split用法
- intel无线网卡的型号和驱动一览
- postgresql -- 绑定变量窥视规则
- Android 获取横竖屏状态
- Unity VR切换场景闪退
- 红外成像单筒望远镜TFN TD7产品 型号评测
- 前后端不分离到分离演变,优势,前后端接口联调,排错
- Go语言爱好者周刊:第 14 期
- 未命名文章图灵奖Yann LeCun团队提出Masked Siamese ConvNets,让Mask策略也能应用于基于ViT的孪生网络,进行自监督学习!
热门文章
- Java高级:新特性:lambda 函数式接口 方法引用 StreamAPI Optional类
- E01 -- CSS样式中 报错 { expectedcss(css-lcurlyexpected)
- CSS实现内容强制不换行、自动换行、强制换行
- 人大金仓数据库的用户与角色
- 数据库(事务的四大特性)
- Windows XP 系统自带扑克牌资源动态链接库cards.dll逆向分析笔记
- CentOS 7 的安装步骤
- 苹果手机软件升级密码_苹果app应用制作多少钱_广腾(深圳)互联网科技有限公司...
- lol进入服务器后显示3秒白屏,LOL英雄联盟游戏大厅出现白屏的完美解决方法
- java语言开发手机游戏_手机上的JAVA游戏和JAVA软件,是电脑上的JAVA语言编写的吗?他们之间有什么联系...