We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
上一章节中,我们完成了沸点页面部分UI的编写,这一章节,我们将完成沸点页面剩余页面的代码编写
通过拿到的cell数据去判断为哪一类cell
widget.pinsCell.url == '' ? PinsCellPic( pics: widget.pinsCell.pictures, ) : PinsCellUrl( url: widget.pinsCell.url, urlPic: widget.pinsCell.urlPic, urlTitle: widget.pinsCell.urlTitle, ),
cell类型的UI编写比较简单,我们将完成如下的UI编写
@override Widget build(BuildContext context) { return InkWell( onTap: (){ Application.router.navigateTo(context,"/web?url=${Uri.encodeComponent(url)}&title=${Uri.encodeComponent(urlTitle)}"); }, child: Container( padding: const EdgeInsets.all(10.0), margin: const EdgeInsets.symmetric(horizontal: 14.0,vertical: 10.0), height: 100, decoration: BoxDecoration( border: Border.all(color: Theme.of(context).accentColor, width: 1.0), borderRadius: BorderRadius.all(Radius.circular(4.0))), child: Row( children: <Widget>[ Expanded( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( urlTitle, style: TextStyle(fontSize: 19.0, fontWeight: FontWeight.bold), maxLines: 2, overflow: TextOverflow.ellipsis, ), Text( url, style: TextStyle( fontSize: 15.0, color: Theme.of(context).accentColor), maxLines: 1, overflow: TextOverflow.ellipsis, ), ], ), flex: 2, ), Expanded( flex: 1, child: Image.network(urlPic), ) ], )), ); }
下面我们新建一个页面,用于查看图片
@override Widget build(BuildContext context) { List picList = pics.split(','); int index = int.parse(currentIndex); return Center( child: Swiper( itemBuilder: (BuildContext context, int index) { return new Image.network( picList[index], fit: BoxFit.fitWidth, width: MediaQuery.of(context).size.width, ); }, itemCount: picList.length, scale: 0.8, pagination: new SwiperPagination(), index: index, onTap: (index) { Application.router.pop(context); }, ), ); }
在 lib/routers 下注入相关页面后,即可来编写cell的图片部分,并完成页面的跳转以查看图片
lib/routers
@override Widget build(BuildContext context) { if (pics.length > 3) { _picHeight = 190.0; } for (int i = 0; i < pics.length; i += 3) { List<Widget> _tempRow = List(); _tempRow.add( Expanded( child: InkWell( onTap: () { Application.router.navigateTo(context, '/swip?pics=${Uri.encodeComponent(_buildPicsStr())}¤tIndex=${i.toString()}',transition: TransitionType.fadeIn); }, child: Image.network( pics[i], fit: BoxFit.cover, height: _picHeight, ), ), flex: 1, ), ); if (i + 1 < pics.length) { _tempRow.add( SizedBox( width: 10.0, ), ); _tempRow.add( Expanded( child: InkWell( onTap: () { Application.router.navigateTo(context, '/swip?pics=${Uri.encodeComponent(_buildPicsStr())}¤tIndex=${i.toString()}'); }, child: Image.network( pics[i + 1], fit: BoxFit.cover, height: _picHeight, ), ), flex: 1, ), ); } if (i + 2 < pics.length) { _tempRow.add( SizedBox( width: 10.0, ), ); _tempRow.add( Expanded( child: InkWell( onTap: () { Application.router.navigateTo(context, '/swip?pics=${Uri.encodeComponent(_buildPicsStr())}¤tIndex=${i.toString()}'); }, child: Image.network( pics[i + 2], fit: BoxFit.cover, height: _picHeight, ), ), flex: 1, ), ); } _wrapChildren.add(Container( child: Row( children: _tempRow, ), margin: const EdgeInsets.only(bottom: 10.0), )); } return Container( margin: const EdgeInsets.symmetric(vertical: 10.0), child: Wrap( children: _wrapChildren, ), ); }
TransitionType.fadeIn
import 'package:fluro/fluro.dart';
完成代码查看:代码地址
效果如如下:
代码中同级目录包括沸点cell的底部 点赞和评论的widget的编写,地址为:lib/widget/pins_cell_bottom_button.dart 代码比较简单也比较常规,大家可以自行查看编写相应UI。
完成了沸点cell的每一个小部分的代码编写,下面将这些小组件拼接成我们完整的一个沸点的cell吧
@override Widget build(BuildContext context) { return Container( color: Colors.white, margin: const EdgeInsets.only(top: 10.0), child: Column( children: <Widget>[ Container( padding: const EdgeInsets.symmetric(horizontal: 9.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.max, children: <Widget>[ PinsCellHeader( userInfo: widget.pinsCell.user, createdAt: widget.pinsCell.createdAt), _renderContent(widget.pinsCell.content), widget.pinsCell.url == '' ? PinsCellPic( pics: widget.pinsCell.pictures, ) : PinsCellUrl( url: widget.pinsCell.url, urlPic: widget.pinsCell.urlPic, urlTitle: widget.pinsCell.urlTitle, ), widget.pinsCell.topic.length == 0 ? Container() : PinsCellTopic( topicInfo: widget.pinsCell.topic, ), ], ), ), PinsCellBottomButton( commentCount: widget.pinsCell.commentCount, likedCount: widget.pinsCell.likedCount, ), ], ), ); }
这部分代码就是将我们编写的所有颗粒度非常小的widget组合使用成我们需要的UI。
如上,我们就完成了沸点部分的编写。需要注意的是,这部分UI非常的多而杂。但是其实难度都不是很大,将大的页面,细分为一个一个颗粒度非常细的组件使我们应该学会的。注意,一定要根据自己的理解、业务的需求去合理划分组件。不可盲目细化导致杂乱。
项目地址
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言
上一章节中,我们完成了沸点页面部分UI的编写,这一章节,我们将完成沸点页面剩余页面的代码编写
cell组件编写
通过拿到的cell数据去判断为哪一类cell
cell类型的UI编写比较简单,我们将完成如下的UI编写
图片查看页面
下面我们新建一个页面,用于查看图片
在
lib/routers
下注入相关页面后,即可来编写cell的图片部分,并完成页面的跳转以查看图片TransitionType.fadeIn
来设置页面的跳转动画,这些大家都可以自行设置查看相应效果。注意TransitionType属于fluro的方法,所以使用时需要引入包:import 'package:fluro/fluro.dart';
完成代码查看:代码地址
效果如如下:
代码中同级目录包括沸点cell的底部 点赞和评论的widget的编写,地址为:lib/widget/pins_cell_bottom_button.dart 代码比较简单也比较常规,大家可以自行查看编写相应UI。
cell widget 组合
完成了沸点cell的每一个小部分的代码编写,下面将这些小组件拼接成我们完整的一个沸点的cell吧
这部分代码就是将我们编写的所有颗粒度非常小的widget组合使用成我们需要的UI。
总结
如上,我们就完成了沸点部分的编写。需要注意的是,这部分UI非常的多而杂。但是其实难度都不是很大,将大的页面,细分为一个一个颗粒度非常细的组件使我们应该学会的。注意,一定要根据自己的理解、业务的需求去合理划分组件。不可盲目细化导致杂乱。
项目地址
The text was updated successfully, but these errors were encountered: