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

网络营销推广公司网站有哪些青岛正规品牌网站制作策划

网络营销推广公司网站有哪些,青岛正规品牌网站制作策划,做网站需要人在看吗,排名网站优化培训App功能介绍页#xff0c;主要是由介绍app功能的几张图片和当前页指示符组成#xff0c;如下效果我们来一步一步实现上面的界面,左右滑动切换显示功能页,这个可以通过PageView来实现,底部的指示符半透明覆盖在PageView上,开发过Android同学知道可以用Framelayout布局来实现主要是由介绍app功能的几张图片和当前页指示符组成如下效果我们来一步一步实现上面的界面,左右滑动切换显示功能页,这个可以通过PageView来实现,底部的指示符半透明覆盖在PageView上,开发过Android同学知道可以用Framelayout布局来实现Flutter上也有类似的控件Stack我们先完成骨架代码// An highlighted blockvoid main() runApp(App());class App extends StatelessWidget {overrideWidget build(BuildContext context) {return MaterialApp(title: Title,theme: ThemeData(primarySwatch: Colors.blue,),home: AppFuncBrowse(),);}}class AppFuncBrowse extends StatefulWidget {override_AppFuncBrowseState createState() {return _AppFuncBrowseState();}}class _AppFuncBrowseState extends State {overrideWidget build(BuildContext context) {return Scaffold(body: Container(color: Colors.white,child: Stack(children: [],),));}}AppFuncBrowse 就是我们功能介绍页上面编译运行功能后我们先来着手实现功能介绍页面切换,PageView主要有两类构建函数一个是懒加载页面(适合页面很多时使用)一个是适合少量页面的一次性加载的我们实例显示3个页面就简单的用这种方式 PageView用到了PageController用来控制显示哪一页先定义它class _AppFuncBrowseState extends State {PageController _pageController PageController();//省略...}有了PageController我们就可以创建PageView代码如下Widget _createPageView() {return PageView(controller: _pageController,onPageChanged: (pageIndex) {setState(() {_pageIndex pageIndex;print(_pageController.page);print(pageIndex);});},children: [Container(color: Colors.blue,child: Center(child: Text(Page 1),),),Container(color: Colors.red,child: Center(child: Text(Page 2),),),Container(color: Colors.green,child: Center(child: Text(Page 3),),),],);}overrideWidget build(BuildContext context) {// TODO: implement buildreturn Scaffold(body: Container(color: Colors.white,// margin: EdgeInsets.only(top: MediaQuery.of(context).padding.top),child: Stack(children: [_createPageView(),],),));}到这里我们完成了一个可以左右滑动的功能页 每页的内容大家可以自定义一般是一张图片我这里为了简单起见直接显示Text到目前为止我们离目标还缺一个页码指示器学过iOS的非常熟悉需要用到UIPageControl可惜的是到目前为止Flutter还没提供该原生控件我们只能自己实现它其实也很简单代码如下_createPageIndicator() {return Opacity(opacity: 0.7,child: Align(alignment: FractionalOffset.bottomCenter,child: Container(margin: EdgeInsets.only(bottom: 60),height: 40,width: 80,padding: EdgeInsets.all(0),decoration: BoxDecoration(color: Colors.grey, //.withAlpha(128),borderRadius: BorderRadius.all(const Radius.circular(6.0))),child: GestureDetector(behavior: HitTestBehavior.translucent,onTapUp: (detail) _handlePageIndicatorTap(detail),child: Row(key: _pageIndicatorKey,mainAxisAlignment: MainAxisAlignment.spaceEvenly,mainAxisSize: MainAxisSize.min,children: [_dotWidget(0),_dotWidget(1),_dotWidget(2),]),),),),);}咋一看感觉好复杂其实也很简单学过设计模式的同学可能看出和装饰者模式一样widget层次结构就类似这种模式这也是Flutter的强大之处用现有的控件可以组合出各种效果首先我们用Opacity控件来封装子控件设置opacity使其成为半透明然后使用Align控制其底部对齐为了使其距离底部一段距离还需要Container来包装为了实现圆角的Container强大的decoration属性就登场了它能实现各种装饰效果这里我们实现的效果是灰色背景和圆角。现在讲完了这些装修就剩下三个点了三个点在同一水平线上所以我们用Row来做为父控件Row有几个属性值注意mainAxisAlignment      主轴对齐方式Row的主轴是水平方向crossAxisAlignment     主轴的垂直方向对齐方式Row的主轴是水平方向所以该字段表示上下对齐方式mainAxisSize           主轴方向的大小对Row来说即宽度与Row对应的控件是Column,其对应上面属性刚好相反上面属性的其他值可以自己试验我们这里用到mainAxisAlignment: MainAxisAlignment.spaceEvenly,mainAxisSize: MainAxisSize.min,表示子控件左右(包含与父控件)间距相同并且宽度保持最小最后我们来实现三个点当前页的对应的点颜色需要和其他未显示的页有所区别我们需要记录当前是第几页从而使对应的第几个点highlight显示class _AppFuncBrowseState extends State {PageController _pageController PageController();int _pageIndex 0;然后就可以创建点了_dotWidget(int index) {return Container(width: 10,height: 10,decoration: BoxDecoration(shape: BoxShape.circle,color: (_pageIndex index) ? Colors.white70 : Colors.black12));}滑动PageView需要更新_pageIndex,从而对应的更新当前页对应的点的颜色return PageView(controller: _pageController,onPageChanged: (pageIndex) {setState(() {_pageIndex pageIndex;print(_pageController.page);print(pageIndex);});},onPageChanged就是PageView换页的事件这里需要调用setState从而使Widget重建更新当前页的点颜色到这里为止就剩下点击点更新PageView的功能了我们来实现点击功能就是监听点击手势代码如下_handlePageIndicatorTap(TapUpDetails detail) {RenderBox renderBox _pageIndicatorKey.currentContext.findRenderObject();Size widgeSize renderBox.paintBounds.size;Offset tapOffset renderBox.globalToLocal(detail.globalPosition);if (tapOffset.dx widgeSize.width / 2) {_scrollToNextPage();} else {_scrollToPreviousPage();}}手势有一个属性behavior需要值得注意默认值为deferToChild具体取值如下behavior: HitTestBehavior.translucent 控制响应的点击区域translucent    表示整个区域被遮挡的子视图也能响应opaque          表示整个区域被遮挡的子视图不能响应deferToChild    表示点击到子视图才响应手势默认behavior需要实现点击左半部分向前翻页点击后半部分向后翻页我们需要判断当前点击的区域这就需要找到Row的RenderObject来获取控件区域然后获取点击相对控件的偏移来确定具体见代码,_pageIndicatorKey就是传给Row的key具体定义如下class _AppFuncBrowseState extends State {PageController _pageController PageController();int _pageIndex 0;GlobalKey_appfuncbrowsestate _pageIndicatorKey GlobalKey();现在只剩下前后翻页的代码了代码如下_scrollToPreviousPage() {if (_pageIndex 0) {_pageController.animateToPage(_pageIndex - 1,duration: const Duration(milliseconds: 200), curve: Curves.ease);}}以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。
http://www.yutouwan.com/news/411100/

相关文章:

  • 网站正在建设中的图片大全建设部网站备案
  • php 向网站发送数据网站权重多少4
  • 专业微网站建设公司首选编写网站的软件
  • 题库网站建设杭州网站公司设计
  • 南京网站建设与网络营销的关系两个网站链接怎么做
  • 家教网站建设模板网站的建设及发布步骤
  • 企业网站建设目标做摄影网站
  • 哪个着陆页网站想自己做网站需要会什么
  • 上传的网站怎么打开做网站1万多
  • 台州平面设计公司系统优化是什么意思
  • 分销网站方案陵水网站设计公司
  • 你认为公司在建立网站时应满足哪些目标东莞营销型网站建设
  • 风向 网站网站设计注意因素
  • 宠物网站怎么做怎么做阿里巴巴英文网站
  • 网站自定义title中山营销型网站建设
  • 济南品牌网站建设公司从哪里设置网站关键词
  • 西安交易网站建设wordpress用户注册怎么设置
  • 建材做哪些网站好百度指数行业排行
  • 什么网站可以帮人做ppt赚钱制作英文网站
  • 怎么制作网站详细流程wordpress网站结构
  • 做团餐 承包食堂的企业网站做网站找哪家最好
  • iis7.5 没有默认网站合肥瑶海区封控
  • 关于色彩搭配的网站微商货源网站源码
  • 做国际网站怎么能快速打开免费游戏源码网
  • 长沙企业建网站临沂城市建设网站
  • 物流网站建设报价绵阳建设招投标在哪个网站
  • 网站开发页面怎么进酒厂网站模板
  • 网站后台管理产品排序c 网站开发需要学什么软件
  • 网站正在建设中 给你带来信息最全的网站
  • js做论坛网站php网站在线打包源码