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

做网站需要注意多少页app软件下载安装到手机

做网站需要注意多少页,app软件下载安装到手机,专门做焦点图的网站,微信小程序免费模板平台TabBar还有TabBarView都是谷歌flutter官方组件库——Material组件库提供的组件#xff0c;其中TabBar用于导航切换#xff0c;TabBarView则是配合其切换显示的对应的视图#xff0c;官网参考地址#xff1a;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 BaseViewNewsPageViewModel(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://www.dnsts.com.cn/news/117820.html

相关文章:

  • ps做汽车网站下载素描网站怎么做
  • 织梦网站后台地址佛山营销型网站设计
  • 自己用笔记本做网站好看的知名企业网站
  • 揭阳网站建站网站科技网站推荐
  • 做视频网站要注意什么上海注册公司引流v信xiala5
  • 蓝色旅游网站模板萧山区建设工程质量监督站网站
  • 服装网站建设效果福建鞋子做淘宝图片网站
  • 销售网站有哪些天津市城乡建设网
  • 软件开发兼职网站phpcms网站模版下载
  • 注册网站授权书怎么写兼职网站平台有哪些
  • 天津网站制作公司电话wordpress积分代码
  • 长沙建设网站的公司游戏代理怎么找平台
  • 吐鲁番好网站建设设计免费自己做网站吗
  • 监控网站模板下载陕西头条新闻最新消息
  • 做网站还 淘宝集团网站建设新闻
  • 分析某个网站建设如何看网站建立时间
  • 建设公司网站应有哪些功能生活分类信息网站大全
  • 佛山仿站定制模板建站网站手机端自适应
  • 有些网站勤换域名wordpress增加下载量显示
  • 网站 wordpress企业logo设计免费生成器
  • 成都网站建设 公司网站遭到攻击 运维怎么做
  • 网站怎么建设后台建设银行官方网站客户资料修改
  • 辛集网站建设wordpress更新主题后错误500
  • 南昌建站系统外包免费企业黄页
  • 做网站的广告词怎样修改网站模板
  • 网站产品图怎么做免费建站 永久
  • 重庆网站推广网络推广清新县城乡规划建设局网站
  • 数据库网站网站设计的简称
  • 长沙网站制作电话wordpress本地运行
  • 网站如何换域名wordpress上传大图