0
点赞
收藏
分享

微信扫一扫

Flutter开发之——可滑动组件,Android面试题中高级

_gridViewController = ScrollController()

…addListener(() {

print(’${_gridViewController.position}’);

});

}

//Widget build(BuildContext context)

GridView(

controller:_gridViewController,

gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3,crossAxisSpacing: 3, mainAxisSpacing: 3),

children: List.generate(50, (position) {

return Container(

alignment: Alignment.center,

height: 80,

color: Colors.primaries[position % Colors.primaries.length],

child: Text("$position"),

);

}),

)

3.2 效果图

3.3 ScrollController打印结果

I/flutter (16530): ScrollPositionWithSingleContext#9a250(offset: 72.8, range: 0.0…1746.0, viewport: 444.0, ScrollableState, ClampingScrollPhysics -> RangeMaintainingScrollPhysics, DragScrollActivity#d503a(ScrollDragController#59958), ScrollDirection.reverse)

I/flutter (16530): ScrollPositionWithSingleContext#9a250(offset: 77.2, range: 0.0…1746.0, viewport: 444.0, ScrollableState, ClampingScrollPhysics -> RangeMaintainingScrollPhysics, DragScrollActivity#d503a(ScrollDragController#59958), ScrollDirection.reverse)

I/flutter (16530): ScrollPositionWithSingleContext#9a250(offset: 83.2, range: 0.0…1746.0, viewport: 444.0, ScrollableState, ClampingScrollPhysics -> RangeMaintainingScrollPhysics, DragScrollActivity#d503a(ScrollDragController#59958), ScrollDirection.reverse)

四 快速创建方式:build,custom,count,extent


4.1 GridView.build

构建必须属性

  • itemBuilder是构建子控件

  • itemCount指定数据个数

代码

GridView.builder(

itemCount: 10,

controller:_gridViewController,

gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3,crossAxisSpacing: 3, mainAxisSpacing: 3),

itemBuilder: (context,index){

return Container(

alignment: Alignment.center,

height: 80,

color: Colors.primaries[index % Colors.primaries.length],

child: Text("$index"),

);

},

)

4.2 GridView.custom

构建必须属性

  • childrenDelegate:提供子组件构建的代理,有SliverChildBuilderDelegateSliverChildListDelegate可用于快速构建

快速构建代码

SliverChildBuilderDelegate方式

GridView.custom(

controller:_gridViewController,

gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3,crossAxisSpacing: 3, mainAxisSpacing: 3),

childrenDelegate: SliverChildBuilderDelegate((context,index){

return Container(

alignment: Alignment.center,

height: 80,

color: Colors.primaries[index % Colors.primaries.length],

child: Text("$index"),

);

},childCount: 10) ,

)

SliverChildListDelegate方式

GridView.custom(

controller:_gridViewController,

gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3,crossAxisSpacing: 3, mainAxisSpacing: 3),

childrenDelegate: SliverChildListDelegate(List.generate(50, (position) {

return Container(

alignment: Alignment.center,

height: 80,

color: Colors.primaries[position % Colors.primaries.length],

child: Text("$position"),

);})),

)

4.3 GridView.count

构建必须属性

crossAxisCount:交叉轴方向上个数

快速构建代码

GridView.count(

controller:_gridViewController,

crossAxisCount: 3,

children: List.generate(50, (position) {

return Container(

alignment: Alignment.center,

height: 80,

color: Colors.primaries[position % Colors.primaries.length],

child: Text("$position"),

);}),

)

4.4 GridView.extent

构建必须属性

maxCrossAxisExtent:最大的横轴范围

构建代码

GridView.extent(

controller:_gridViewController,

maxCrossAxisExtent:100,

总结

Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

上面分享的字节跳动公司2020年的面试真题解析大全,笔者还把一线互联网企业主流面试技术要点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。详情可以点击我的【Github】
如果你熟练掌握【Github】中列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。

就先写到这,码字不易,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我

就先写到这,码字不易,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我

举报

相关推荐

0 条评论