import 'package:flutter/material.dart';

void main() => runApp(DemoApp());

class DemoApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'SingleChildScrollView Demo',
home: new Scaffold(
appBar: AppBar(
// 去掉导航栏下面的阴影
elevation: 0.0,
title: Text('SingleChildScrollView Demo'),
),
body: SingleChildScrollView(
physics: BouncingScrollPhysics(),
child: Center(
child: Column(
children: <Widget>[
Container(
color: Colors.blue,
child: BigImgs(),
),
Container(
height: 200.0,
child: HomePage(),
),
SizedBox(height: 10), //保留高度间距10,在垂直下Column
Container(
// width: 320.0,
height: 140.0,
// color: Colors.pink,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
BigImgsRadius(),
TextIntroduce(),
SizedBox(width: 10), //保留宽度间距20,在水平下Row
TextIntroduceSpan(),
],
),
),
SizedBox(width: 10),
Container(
width: 320.0,
// height: 200.0,
color: Colors.blue,
child: _buildCard(),
),
SizedBox(height: 10),
Container(
width: 320.0,
height: 110.0,
// color: Colors.yellow,
child: Column(
children: [
_buildStack(),
SizedBox(height: 10),
TextIntroduce(),
],
),
),
Container(
width: 320.0,
height: 200.0,
color: Colors.pink,
child: Horizontal(),
),
Container(
width: 320.0,
height: 200.0,
color: Colors.blue,
),
],
),
),
),
),
);
}
} // StatelessWidget 无状态控件,没有自己的私有数据,纯展示控件
class BigImgs extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
// child: _buildStack(),
// width: 100,
height: 160,
decoration: BoxDecoration(
color: Colors.amberAccent,
// borderRadius: BorderRadius.circular(300),
image: DecorationImage(
image: NetworkImage(
"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201808%2F06%2F20180806140035_nnbed.thumb.700_0.png&refer=http%3A%2F%2Fb-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1616430520&t=b40681968ba087b3533e17b9aa036450"),
fit: BoxFit.cover)),
);
}
} // StatefulWidget 有状态控件,有自己私有数据
class HomePage extends StatefulWidget {
HomePage({Key key}) : super(key: key);
_HomePageState createState() => _HomePageState();
} class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Container(
child: ListView(
children: <Widget>[
ListTile(
leading: Icon(Icons.map),
title: Text('Map'),
// 跳转的路径
onTap: () {
Navigator.push(context,
MaterialPageRoute(builder: (BuildContext context) {
return BigImgs();
}));
},
),
Divider(), //设置分割线
ListTile(
leading: Icon(Icons.photo_album),
title: Text('Album'),
),
Divider(), //设置分割线
ListTile(
leading: Icon(Icons.phone),
title: Text('Phone'),
),
],
),
);
}
} // 文字超出显示...
class TextIntroduce extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
// child: _buildCard(),
child: Text(
"Lorem ipsum",
maxLines: 1, //
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 24,
fontWeight: FontWeight.w900,
fontFamily: "Georgia",
),
),
// child: Text(
// 'Lorem ipsum,hello world!Lorem ipsum,hello world!Lorem ipsum,hello world',
// style: TextStyle(
// color: Color.fromARGB(0xFF, 0x42, 0xA5, 0xF5),
// backgroundColor: Colors.red,
// fontSize: 30.0,
// letterSpacing: 6.0,
// fontStyle: FontStyle.italic,
// wordSpacing: 15.0,
// height: 2.0, //'height: 用在Text控件上的时候,会乘以fontSize做为行高,所以这个值不能设置过大',
// background: Paint()..color = Colors.blue,
// textBaseline: TextBaseline.alphabetic,
// fontFamily: "Georgia",
// shadows: [
// Shadow(color: Colors.black, offset: Offset(5, 6), blurRadius: 3)
// ],
// decoration: TextDecoration
// .underline, //underline:下划线,none:无划线,overline:上划线,lineThrough:中划线,combine:这个就厉害了,可以传入一个List,三线齐划
// // decoration: TextDecoration.combine(
// // [TextDecoration.underline, TextDecoration.overline]),
// decorationColor: Colors.black,
// decorationStyle: TextDecorationStyle.wavy, //默认实线,dashed是虚线
// decorationThickness: 3.0,
// debugLabel: 'text'),
// textAlign: TextAlign.justify,
// textDirection: TextDirection.rtl,
// locale: Locale('fr', 'CH'),
// softWrap: true, //文本超出容器时是否自动换行,默认为true,为false时文本超出容器部分默认被剪切
// maxLines: 2, //文本的最大行数,
// overflow: TextOverflow.visible,
// textScaleFactor: 1.5,
// semanticsLabel:
// 'test', //图像的语义描述,用于向Andoid上的TalkBack和iOS上的VoiceOver提供图像描述
// ),
width: 100,
// color: Colors.grey[300], //backgroundColor
);
}
} // 文字改变颜色
class TextIntroduceSpan extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: Text.rich(TextSpan(children: [
TextSpan(text: 'hello: '),
TextSpan(text: 'world', style: TextStyle(color: Colors.red))
])),
);
}
} class BigImgsRadius extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
// child: _buildStack(),
width: 100,
height: 100,
decoration: BoxDecoration(
color: Colors.amberAccent,
borderRadius: BorderRadius.circular(300),
image: DecorationImage(
image: NetworkImage(
"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201808%2F06%2F20180806140035_nnbed.thumb.700_0.png&refer=http%3A%2F%2Fb-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1616430520&t=b40681968ba087b3533e17b9aa036450"),
fit: BoxFit.cover)),
);
}
} class Horizontal extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: ListView(
// This next line does the trick.
scrollDirection: Axis.horizontal,
children: <Widget>[
Container(
color: Colors.red,
child: BigImgs(),
),
Container(
color: Colors.green,
child: _buildStack(),
),
Container(
color: Colors.yellow,
child: BigImgs(),
),
Container(
color: Colors.orange,
child: _buildStack(),
),
Container(
color: Colors.yellow,
child: BigImgs(),
),
Container(
color: Colors.orange,
child: _buildStack(),
),
],
),
);
}
} // Card卡片
Widget _buildCard() => SizedBox(
height: 210,
child: Card(
child: Column(
children: [
ListTile(
title: Text('1625 Main Street',
style: TextStyle(fontWeight: FontWeight.w500)),
subtitle: Text('My City, CA 99984'),
leading: Icon(
Icons.restaurant_menu,
color: Colors.blue[500],
),
),
Divider(),
ListTile(
title: Text('(408) 555-1212',
style: TextStyle(fontWeight: FontWeight.w500)),
leading: Icon(
Icons.contact_phone,
color: Colors.blue[500],
),
),
ListTile(
title: Text('costa@example.com'),
leading: Icon(
Icons.contact_mail,
color: Colors.blue[500],
),
),
],
),
),
);
//个人图像
Widget _buildStack() => Stack(
alignment: const Alignment(0.6, 0.6),
children: [
// CircleAvatar(
// backgroundImage: AssetImage('https://picsum.photos/250?image=9'),
// radius: 100,
// ),
CircleAvatar(
child: Image.network('https://picsum.photos/250?image=9'),
backgroundColor: Color(0xffff0000),
radius: 32.0,
foregroundColor: Color(0x55000000),
),
Container(
decoration: BoxDecoration(
color: Colors.black45,
),
child: Text(
'Mia B',
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
),
],
);
  

Flutter 登录与list列表demo的更多相关文章

  1. flutter 登录后跳转到根路由

    flutter 登录以后  会有返回箭头显示 因为  路由的切换导致不是路由的第一个页面,解决办法清空路由. Navigator.of(context).pushAndRemoveUntil( new ...

  2. 二维码扫码登录原理及简单demo

    扫码登录原理转载自: https://www.cnblogs.com/liyasong/p/saoma.html 需求介绍 首先,介绍下什么是扫码登录.现在,大部分同学手机上都装有qq和淘宝,天猫等这 ...

  3. Flutter中的可滚动列表组件-PageView

    PageVIew,可滚动的视图列表组件,而且每一个子组件的大小都和视图窗口大小一样. 属性: controller -> PageController 用于控制视图页面滚动到的位置 childr ...

  4. 微信第三方登录(原生)demo

    在一家ecstore二开公司有一段时间了,公司希望往自己研发产品上面走,一直在培养新人.   最近要自己去微信登录,自己就在ectore的框架基础上,写的原生微信第三方登录以此来熟悉微信第三方登录,在 ...

  5. flutter登录页部分内容

    import 'package:flutter/material.dart'; class MyIdPage extends StatelessWidget { @override Widget bu ...

  6. thinkphp写的登录注册的小demo

    和asp.net类似,一个FormAction对应Form文件夹 demo结构: ‘ 对于项目结构有疑问的: http://www.thinkphp.cn/document/60.html login ...

  7. Flutter 流式布局列表实例+上拉加载

    页面变化的几种方式: 一.StatefulWidget的setState形式 先声明两个变量. ; List<Map> list = []; 写了一个方法,获取数据: void _getH ...

  8. last, lastb - 显示最近登录的用户列表

    总览 last [-R] [-num] [ -n num ] [-adiox] [ -f file ] [name...] [tty...] lastb [-R] [-num] [ -n num ] ...

  9. [iOS基础控件 - 6.9.3] QQ好友列表Demo TableView

    A.需求 1.使用plist数据,展示类似QQ好友列表的分组.组内成员显示缩进功能 2.组名使用Header,展示箭头图标.组名.组内人数和上线人数 3.点击组名,伸展.缩回好友组   code so ...

  10. 开源微信Http协议Sdk【实现登录/获取好友列表/修改备注/发送消息】

    基于微信Http协议封装的一个Sdk,目前实现了以下功能:. 1:扫码登录(检测二维码扫描状态) 2:获取最近联系人.群组.所有联系人 3:修改好友备注 4:给好友发送消息 暂且这么多,也没多余的时间 ...

随机推荐

  1. NET-SynchronizationContext

    title: .NET SynchronizationContext date: 2022-12-06 09:38:53 tags: - .NET 前言 最近在看CAP的源码,经常能看到Configu ...

  2. [Leetcode]在排序数组中查找元素的第一个和最后一个位置

    题目 代码 class Solution { public: vector<int> searchRange(vector<int>& nums, int target ...

  3. Docker 基础 - 3

    Web 服务器与应用 Nginx 我的Nginx Docker镜像 ## 设置继承自己创建的 sshd 镜像 FROM caseycui/ubuntu-sshd ## 维护者 LABEL mainta ...

  4. VUE上传表格文件发送后端,后端解析以及上传文件,前端进行解析的实现方法

    首先来说前端上传表格,然后利用纯前端技术进行解析表格的办法 详细步骤----请点击这里 接下来来说上传发送给后端的代码实现 html <input ref="myInput" ...

  5. npm 环境搭建---全局安装angular cli ---升级本地angular版本---搭建ng-alain

    1.环境搭建 node -v # 查看 Node.js 当前版本 npm -v # 查看 Npm 当前版本 2.设定淘宝提供 Npm 源镜像 # 设置淘宝源 npm config set regist ...

  6. vue基础之keep-alvie保持历史页面数据不变,切换页面后数据不变keep-alvie

    1:路由配置文件设置 { path: '/MenuM', component: Layout, redirect: '/MenuM', children: [ { path: 'MenuM', nam ...

  7. CSS文字超出宽度---换行总结

     2021-5-5重新总结---CSS文字超出宽度---附代码 <!DOCTYPE html> <html lang="en"> <head> ...

  8. 部署并运行laravel项目显示:SQLSTATE[HY000] [2002] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

    composer安装完所需依赖之后仍旧打不开页面,排查之后发现是数据库的问题... 也就是说,.env文件的配置写错了,改一下就好啦

  9. 【ccc】为了ds的ccc2

    作业: #include <stdio.h> #include<string.h> int main(){ char s[100]; gets(s); int len; len ...

  10. MySQL中的函数使用

    有三张表,学生表(t_student),班级表(t_class),成绩表(t_grade),三张表的字段设计如下                                        查询大竹 ...