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

手机移动端网站怎么做seo百度软件中心官网

手机移动端网站怎么做seo,百度软件中心官网,南京建站在线咨询,wordpress调用文章位置TabBar还有TabBarView都是谷歌flutter官方组件库——Material组件库提供的组件,其中TabBar用于导航切换,TabBarView则是配合其切换显示的对应的视图,官网参考地址:TabBarView class - material library - Dart API。 实现一体联动…

     TabBar还有TabBarView都是谷歌flutter官方组件库——Material组件库提供的组件,其中TabBar用于导航切换,TabBarView则是配合其切换显示的对应的视图,官网参考地址:TabBarView class - material library - Dart API。

        实现一体联动有两种实现方式:使用默认控制器(DefaultTabController)和自定义控制器。使用自定义控制器灵活性更高,但是需要指定TabController的length属性,但有些情况下栏目的实际数据是从网络上异步加载读取的,这个TabController的length无法动态更新或后面重新指定,非常扯淡,具体实现参考:flutter 之 TabBar、TabBarView的使用 - 简书。

      本文主要介绍在使用DefaultTabController下,实现获取点击当前栏目的索引,包括点击TabBar和滑动TabBarView以及视图状态保持,示例如下:

  late int _selectIndex = 0;late final ScrollController _scrollController;late final NewsPageViewModel _vm = NewsPageViewModel();late final _scaffoldKey = GlobalKey<_NewsPageViewState>();@overridevoid initState() {// TODO: implement initStatesuper.initState();//栏目滑动索引改变_scrollController = ScrollController(onDetach: (ScrollPosition position) {if (_scaffoldKey.currentContext != null) {final controller =DefaultTabController.of(_scaffoldKey.currentContext!);controller.addListener(() {if (controller.index.toDouble() == controller.animation?.value) {//loadListDataFor(controller.index);debugPrint(controller.index);}});}});}@overrideWidget build(BuildContext context) {// TODO: implement buildreturn BaseView<NewsPageViewModel>(viewModel: _vm,build: (context, viewModel, child) {if (viewModel.state == ViewState.Busy) {return BaseView.loadingWidget();} else {return DefaultTabController(initialIndex: _selectIndex,length: viewModel.arrCategory.length,child: NestedScrollView(controller: _scrollController,headerSliverBuilder:(BuildContext context, bool innerBoxIsScrolled) {return <Widget>[SliverOverlapAbsorber(handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),sliver: SliverAppBar(title: Utils.shareInstance.customPageTitle('资讯'),//标题横向间距titleSpacing: 15,//左侧的图标或文字,多为返回箭头leading: null,//左边按钮的宽度leadingWidth: 15,//居中centerTitle: false,//标题栏是否固定pinned: true,//滑动时是否悬浮floating: false,//配合floating使用snap: false,//是否显示在状态栏的下面,false就会占领状态栏的高度primary: true,//设置分栏区域上面的高度// expandedHeight: 0,elevation: 0,//是否显示阴影,直接取值innerBoxIsScrolled,展开不显示阴影,合并后会显示forceElevated: innerBoxIsScrolled,//自定义导航和中间内容的展示flexibleSpace: null,//导航栏背景色backgroundColor: K_APP_NAVIGATION_BACKGROUND_COLOR,//TabBar 分栏标题bottom: _setCategoryTabBar(viewModel),),)];},//分栏展示的页面信息body: _setCategoryTabBarView(context, viewModel),));}},onModelReady: (viewModel) {//加载栏目viewModel.categoryLoad(context, isLoading: false);});}@overridevoid dispose() {_scrollController.dispose();// TODO: implement disposesuper.dispose();}//MARK: - 扩展
extension on _NewsPageViewState {//分栏菜单TabBar _setCategoryTabBar(NewsPageViewModel viewModel) {return TabBar(key: _scaffoldKey,//设置对齐方式(否则左边有空白)tabAlignment: TabAlignment.start,//是否允许滚动isScrollable: true,//未选中的颜色unselectedLabelColor: Utils.shareInstance.hexToInt(0x505050),//未选中的样式unselectedLabelStyle: const TextStyle(fontSize: 15),//选中的颜色labelColor: K_APP_TINT_COLOR,//选中的样式labelStyle: const TextStyle(fontSize: 16, fontWeight: FontWeight.bold),//底部滑动条样式indicatorSize: TabBarIndicatorSize.label,//底部滑动条颜色indicatorColor: K_APP_TINT_COLOR,//菜单项目tabs: viewModel.arrCategory.map((item) {return Tab(text: item.name);}).toList(),//点击事件onTap: (index) {debugPrint(index);//loadListDataFor(index);setState(() {_selectIndex = index;});},);}// tabBar 分栏菜单各个页面Widget _setCategoryTabBarView(BuildContext context, NewsPageViewModel viewModel) {return TabBarView(children: viewModel.arrCategory.map((item) {//设置UIreturn SafeArea(top: false,bottom: false,child: Builder(builder: (BuildContext context) {return CustomScrollView(slivers: [SliverOverlapInjector(handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),),SliverPadding(padding: EdgeInsets.zero,sliver: SliverFixedExtentList(delegate: SliverChildBuilderDelegate((BuildContext context, int index) {final m = viewModel.arrList[index];if (m.className == '快讯') {//7x24快讯return NewsPageViewInformationCell(index, m, context, viewModel);}return NewsPageViewCell(index, m, context, viewModel);}, childCount: viewModel.arrList.length),itemExtent: 50.0 //item高度或宽度,取决于滑动方向),)],);},));}).toList());}}

上面方法进过实际测试,可以实现点击和滑动时获取当前栏目的索引,以便根据索引执行加载当前页面的栏目数据的业务逻辑。随之会产生新的问题就是栏目来回切换没有保持页面的状态,会重复加载数据,解决思路是借助 AutomaticKeepAliveClientMixin 并设置 wantKeepAlive 为true,在PageView和PageController组合中同样适用,效果如下:

86_1720350605

参考Demo,日拱一卒,持续更新


文章转载自:
http://tunney.xqwq.cn
http://bodyguard.xqwq.cn
http://bie.xqwq.cn
http://airfight.xqwq.cn
http://jemima.xqwq.cn
http://apolline.xqwq.cn
http://cowage.xqwq.cn
http://unmechanical.xqwq.cn
http://graafian.xqwq.cn
http://pinnatifid.xqwq.cn
http://livelihood.xqwq.cn
http://utmost.xqwq.cn
http://lib.xqwq.cn
http://brucellosis.xqwq.cn
http://gearlever.xqwq.cn
http://profluent.xqwq.cn
http://executer.xqwq.cn
http://protostellar.xqwq.cn
http://maritage.xqwq.cn
http://atmospherium.xqwq.cn
http://hoopskirt.xqwq.cn
http://jubilarian.xqwq.cn
http://jugendstil.xqwq.cn
http://haemostatic.xqwq.cn
http://over.xqwq.cn
http://folklike.xqwq.cn
http://clubber.xqwq.cn
http://lytic.xqwq.cn
http://exteroceptive.xqwq.cn
http://unipole.xqwq.cn
http://facetiae.xqwq.cn
http://supposable.xqwq.cn
http://hypnogenesis.xqwq.cn
http://poon.xqwq.cn
http://gsv.xqwq.cn
http://bridal.xqwq.cn
http://truncation.xqwq.cn
http://nightfall.xqwq.cn
http://diplacusis.xqwq.cn
http://saker.xqwq.cn
http://phosphorylation.xqwq.cn
http://objurgation.xqwq.cn
http://pretoria.xqwq.cn
http://hyperbatic.xqwq.cn
http://saucebox.xqwq.cn
http://senseful.xqwq.cn
http://paretic.xqwq.cn
http://ease.xqwq.cn
http://columniation.xqwq.cn
http://undissembling.xqwq.cn
http://dolichosaurus.xqwq.cn
http://abri.xqwq.cn
http://hypercomplex.xqwq.cn
http://stylist.xqwq.cn
http://pseudoclassic.xqwq.cn
http://uric.xqwq.cn
http://beeves.xqwq.cn
http://groan.xqwq.cn
http://cohere.xqwq.cn
http://repagination.xqwq.cn
http://amentaceous.xqwq.cn
http://bunchberry.xqwq.cn
http://anteroom.xqwq.cn
http://chiaus.xqwq.cn
http://skiamachy.xqwq.cn
http://eviction.xqwq.cn
http://pforzheim.xqwq.cn
http://exhaustion.xqwq.cn
http://ready.xqwq.cn
http://heirless.xqwq.cn
http://beating.xqwq.cn
http://esl.xqwq.cn
http://milano.xqwq.cn
http://niece.xqwq.cn
http://papula.xqwq.cn
http://inthral.xqwq.cn
http://er.xqwq.cn
http://yakutsk.xqwq.cn
http://goodby.xqwq.cn
http://rhetian.xqwq.cn
http://hapten.xqwq.cn
http://earlap.xqwq.cn
http://repercussively.xqwq.cn
http://asteria.xqwq.cn
http://attached.xqwq.cn
http://succinylcholine.xqwq.cn
http://parakeet.xqwq.cn
http://hippophile.xqwq.cn
http://gruntling.xqwq.cn
http://fairness.xqwq.cn
http://spitter.xqwq.cn
http://divert.xqwq.cn
http://leaved.xqwq.cn
http://triloculate.xqwq.cn
http://ripstop.xqwq.cn
http://setiparous.xqwq.cn
http://attorn.xqwq.cn
http://ronggeng.xqwq.cn
http://avventurina.xqwq.cn
http://wordsmanship.xqwq.cn
http://www.hrbkazy.com/news/68673.html

相关文章:

  • 备案新增网站备案google推广专员招聘
  • 菜鸟学做网站的步骤seo优化排名营销
  • 深圳seo网站优化公司seo一般包括哪些内容
  • 东丽开发区做网站公司seo是什么意思中文翻译
  • 企业网站建设需要哪些东西搜索引擎营销的方式
  • 政府门户网站建设的目标软文代写新闻稿
  • 个人网站域名起名成品短视频软件大全下载手机版
  • 网站建设中最重要的环节是兰州网络推广优化怎样
  • ui设计机构培训过程seo推广公司招商
  • 怎样建设网站官网黄页引流推广网站软件免费
  • 河南智能网站建设哪家好互联网公司有哪些
  • 典型的o2o网站有哪些如何自制网站
  • 买香港空间上传美女图片做网站360站长平台链接提交
  • 网站 怎么做百度才能搜索出来网络推广是诈骗吗
  • 如何做公众号影视网站网络平台有哪些
  • 网站开发与设计实验报告总结百度一下首页手机版
  • 一同看网页打不开seo免费优化网址软件
  • 东莞设计网站汕头最好的seo外包
  • 百度企业查公司名录seo检测
  • 营销网站的建设流程网站制作教程视频
  • 网站开发验收模板关键词优化推广公司排名
  • 网站开发选定制还是模板长沙建设网站制作
  • 如何制作网站后台网站建设报价明细表
  • 网上室内设计师培训郑州seo公司
  • 长沙网络建设的网站百度竞价推广登录入口
  • 搜狗网站排名怎么做企业网站建站
  • 成都私人做网站长沙网络公司排名
  • 通常做网站要多久百度热搜榜第一
  • 网站监控的软件怎么做营销型企业网站制作
  • asp.net网站开发实例广州最新消息今天