Flutter的基础知识之Dart语法

  1. 关于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,//添加底部下划线的样式),),),),);}
}
  1. 关于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),//设置边框),),),),);}
}
  1. 关于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,),),),);}
}
  1. 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'),),],),),);}
}
  1. 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,),],);}
}
  1. 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]}'),);},),),);}
}
  1. 网格列表
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),],),),);}
}
  1. 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('紫色按钮'),)],),),);}
}
  1. 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'),],),),),);}
}
  1. 层叠布局
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);},),),);}
}
  1. 导航的参数传递和接受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}'),),);}
}
  1. 页面跳转并返回数据
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语法相关推荐

  1. python语法基础知识总结-python语法基础知识

    一.数字类型及操作 1.整数类型 可正可负,无取值范围限制pow(x,y):计算x^y 2.浮点数类型 存在不确定尾数round(x,d):对x四舍五入,d为小数截取位数e/E:a*10^b 3.复数 ...

  2. python语法基础知识案例_Python 语法速览与实战清单

    本文是对于 现代 Python 开发:语法基础与工程实践的总结,更多 Python 相关资料参考 Python 学习与实践资料索引:本文参考了 Python Crash Course - Cheat ...

  3. 【前端基础】12.CSS 基础知识学习——基本语法结构

    视频 目录 一,css基本规则规范 1.快捷方式 2.css注释 3.css命名规范 4.css书写规范 (1)空格规范 (2)选择器规范 (3)属性规范 5.css样式规则 二,字体样式 1.fon ...

  4. html5基础知识第一章语法

    语法知识内容:html简介,html文档结构说明,<!doctype>标签,开发工具介绍及下载 html简介 Html(Hyper text Markup Language):超文本标记语 ...

  5. javascript基础知识(3) 基本语法

    1.语法 JavaScript的语法和Java语言类似,每个语句以;结束,语句块用{...}.但是,JavaScript并不强制要求在每个语句的结尾加;,浏览器中负责执行JavaScript代码的引擎 ...

  6. java中两个doub组成一个数组_Java基础知识2-Java基本语法

    数据类型 1.Java程序的基本组成 关键字:被Java语言赋予特定含义的单词,不能作标识符,如private. 标识符:由数字.字母.$和_组成的字符串,用于引用变量.且首字母不能是数字. 变量:程 ...

  7. Flutter基础篇(2)-- 老司机用一篇博客带你快速熟悉Dart语法

    版权声明:本文为博主原创文章,未经博主允许不得转载.https://www.jianshu.com/p/3d927a7bf020 转载请标明出处: https://www.jianshu.com/p/ ...

  8. JQuery 基础知识学习(详尽版)

    JQuery 详尽的基础知识学习 jQuery 语法 jQuery 选择器 jQuery 选择器(大全) jQuery 事件 ready() holdReady() on() off() one() ...

  9. Flutter 开发中最实用的 Dart 语法知识

    零.前言 都说 Flutter 是谷歌的新宠,这段时间有空,就学习了一下 Dart 语法.本篇文章将会详细全面的介绍 Dart 常用语法. 一.变量和常量 在 Drat 语言中,一切皆对象,对象的默认 ...

最新文章

  1. 《 嵌入式系统设计与实践》一一3.6 测试硬件(和软件)
  2. CentOS7_装机软件推荐
  3. 凡客诚品成都研发中心招聘.net开发经理
  4. CH Round #30 摆花[矩阵乘法]
  5. 分享15款为开发人员准备的开发移动应用程序必备的新资源和工具
  6. 「递归」第6集 | 是鹅厂技术青年的模样
  7. [蓝桥杯2015决赛]分机号-枚举(水题)
  8. python读取日期_从文件中读取日期和数据(Python)
  9. c 内存加载易语言dll,[求助]MemoryLoadLibrary 加载MFC 易语言 DLL 失败
  10. 【Elasticsearch】es 重启 已经 重启会导致什么问题
  11. 带线程池的socket客户端与服务端
  12. vba中split用法
  13. intel无线网卡的型号和驱动一览
  14. postgresql -- 绑定变量窥视规则
  15. Android 获取横竖屏状态
  16. Unity VR切换场景闪退
  17. 红外成像单筒望远镜TFN TD7产品 型号评测
  18. 前后端不分离到分离演变,优势,前后端接口联调,排错
  19. Go语言爱好者周刊:第 14 期
  20. 未命名文章图灵奖Yann LeCun团队提出Masked Siamese ConvNets,让Mask策略也能应用于基于ViT的孪生网络,进行自监督学习!

热门文章

  1. Java高级:新特性:lambda 函数式接口 方法引用 StreamAPI Optional类
  2. E01 -- CSS样式中 报错 { expectedcss(css-lcurlyexpected)
  3. CSS实现内容强制不换行、自动换行、强制换行
  4. 人大金仓数据库的用户与角色
  5. 数据库(事务的四大特性)
  6. Windows XP 系统自带扑克牌资源动态链接库cards.dll逆向分析笔记
  7. CentOS 7 的安装步骤
  8. 苹果手机软件升级密码_苹果app应用制作多少钱_广腾(深圳)互联网科技有限公司...
  9. lol进入服务器后显示3秒白屏,LOL英雄联盟游戏大厅出现白屏的完美解决方法
  10. java语言开发手机游戏_手机上的JAVA游戏和JAVA软件,是电脑上的JAVA语言编写的吗?他们之间有什么联系...