Flutter 改善套娃地狱问题(仿喜马拉雅PC页面举例) (3)

请勿将这些无关的细节写在主模块中,会干扰到我们需要关注的信息,这些主体样式写完后,基本就很少去修改了

import 'package:flutter/material.dart'; import 'package:flutter_use/app/base/base_scaffold.dart'; import 'package:flutter_use/app/utils/ui/auto_ui.dart'; ///喜马拉雅整体外层布局设置 Widget himalayaBuildBg({List<Widget> children}) { return BaseScaffold( backgroundColor: Colors.white, body: Column(children: children), ); } ///播放控制栏上面的外层布局设置 Widget himalayaBuildTopBg({List<Widget> children}) { return Expanded( child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: children, ), ); } ///顶部右侧信息流外层布局设置 Widget himalayaBuildInfoListBg({List<Widget> children}) { return Expanded( child: Column(children: children), ); } ///顶部右侧信息流外层布局设置 - 可滑动部分 Widget himalayaBuildScrollInfoListBg({List<Widget> children}) { return Expanded( child: Scrollbar( child: SingleChildScrollView( child: Container( width: 860.dp, child: Column(children: children), ), ), ), ); } 业务Widget封装

主模块的封装还是比较简单的,只需将主体模块的细节封装起来,暴露children属性即可,然后进行组装即可

接下来业务Widget封装,这就是核心所在了

几个要点

尽量只暴露一个数据源(非通用业务Widget)

所有的事件交互必须暴露出来

主体细节封装起来

children中的widget全部提成方法

children中封装

先来看看第一种情况,最常见的情况,children的widget,从上到下排列下来,非列表类数据

来看看这个顶部一些功能按钮的布局,这块涉及到很多事件交互,所以单独提成了一个业务Widget

image-20210314212412718

实现代码:关于业务Widget,这是基石,规范写好后,后期修改,异常简单

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsyfg.html