当前位置:   article > 正文

Flutter 学习之旅

Flutter 学习之旅

本文只针对个人学习所遇问题,以及解决方案进行记录,不深刨原理。

不深刨原理是因为我也才开始学习,讲不明白,有可能还误导大家 ,希望多多包涵。

问题一:

如何通过appBar去设置状态栏字体颜色以及状态栏透明?

解决方法:

1、通过 backgroundColor: Colors.transparent设置透明,以及对应的build函数设置extendBodyBehindAppBar: true

  1. @override
  2. Widget build(BuildContext context) {
  3. return Scaffold(
  4. extendBodyBehindAppBar: true,
  5. backgroundColor: Colors.transparent,
  6. appBar: null,
  7. body: Container(child: Row(children: [])));
  8. }

2、通过appBar的systemOverlayStyle属性,配置SystemUiOverlayStyle相关属性

  1. AppBar(
  2. backgroundColor: Colors.transparent,
  3. systemOverlayStyle: const SystemUiOverlayStyle(
  4. statusBarColor: Colors.transparent,
  5. statusBarIconBrightness: Brightness.dark,
  6. systemNavigationBarColor: Colors.white,
  7. systemNavigationBarDividerColor: Colors.transparent,
  8. systemNavigationBarIconBrightness: Brightness.dark,
  9. ),
  10. title: Container(
  11. margin: EdgeInsets.only(left: 15.r, right: 15.r, top: 15.r),
  12. child: Row(children: [])));
问题二:

如何解决SingleChildScrollView滑动会影响appBar背景颜色?

解决方法:

通过NotificationListener来阻止SingleChildScrollView的滑动事件在向上传递

  1. Scaffold(
  2. extendBodyBehindAppBar: true,
  3. backgroundColor: Colors.transparent,
  4. body: /*通过NotificationListener来阻止SingleChildScrollView的滑动事件在向上传递*/
  5. NotificationListener<ScrollNotification>(
  6. onNotification: (ScrollNotification notification) {
  7. // 返回true来阻止事件向上传递
  8. return true;
  9. },
  10. child: SingleChildScrollView(child: Column(children: [
  11. ]))));
问题三:

如何解决SingleChildScrollView嵌套GridView报错?

解决方法:

这个报错主要是因为GridView高度原因,给GridView在包裹一层Container(容器),设置高度即可

  1. Container(
  2. margin: EdgeInsets.only(left: 0.r, right: 0.r, top: 0.r),
  3. height: 75 * (iconList.length / 2).h,
  4. child: GridView.builder(
  5. gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
  6. crossAxisCount: 2,
  7. crossAxisSpacing: 10,
  8. mainAxisSpacing: 10,
  9. childAspectRatio: 176 / 65),
  10. //宽高比
  11. itemCount: iconList.length,
  12. itemBuilder: (BuildContext context, int index) {
  13. return Container(
  14. margin: EdgeInsets.only(left: 8.r, right: 8.r, top: 5.r),
  15. decoration: BoxDecoration(
  16. borderRadius: BorderRadius.all(Radius.circular(12.r)),
  17. color: Colors.white),
  18. child: Row(
  19. mainAxisAlignment: MainAxisAlignment.start,
  20. children: []));
  21. }));
问题四:

如何解决SingleChildScrollView嵌套GridView滑动冲突问题?

解决方法:

SingleChildScrollView嵌套GridView滑动冲突主要是应为两个组件都是可滑动的,解决方式是禁止GridView滑动,设置physics: const NeverScrollableScrollPhysics(), shrinkWrap: true属性即可。

  1. GridView.builder(
  2. physics: const NeverScrollableScrollPhysics(),
  3. shrinkWrap: true,
  4. gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
  5. crossAxisCount: 2,
  6. crossAxisSpacing: 10,
  7. mainAxisSpacing: 10,
  8. childAspectRatio: 176 / 65),
  9. //宽高比
  10. itemCount: iconList.length,
  11. itemBuilder: (BuildContext context, int index) {
  12. return Container(
  13. margin: EdgeInsets.only(left: 8.r, right: 8.r, top: 5.r),
  14. decoration: BoxDecoration(
  15. borderRadius: BorderRadius.all(Radius.circular(12.r)),
  16. color: Colors.white),
  17. child: Row(
  18. mainAxisAlignment: MainAxisAlignment.start,
  19. children: []));
  20. });

问题五:

通过GestureDetector获取Container的点击事件,使用const Expanded(child: SizedBox())区域点击无效?

解决方法:

设置Container的decoration属性BoxDecoration()即可。

  1. GestureDetector(
  2. onTap: onTap,
  3. child: Container(
  4. width: double.infinity,
  5. decoration: const BoxDecoration(),
  6. height: 50.h,
  7. child: Row(mainAxisAlignment: MainAxisAlignment.start, children: [
  8. Image.asset("assets/images/${imageName}.png", width: 20.r, height: 20.r),
  9. SizedBox(width: 15.w),
  10. Text(name, style: TextStyle(color: Colors.black, fontSize: 14.sp)),
  11. const Expanded(child: SizedBox()),
  12. Image.asset("assets/images/rightward.png", width: 24.w, height: 14.h)
  13. ])));

此博客会持续更新,大家有什么问题或者有更好的解决办法,可留言沟通。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/951248
推荐阅读
相关标签
  

闽ICP备14008679号