使一个组件具有滑动的效果,可指定滑动的方向、是否反向、滑动控制器等属性。

SingleChildScrollView基本使用

【child】 : 子组件 【Widget】
【padding】 : 点击事件 【EdgeInsetsGeometry】
9.gif

  1. import 'package:flutter/material.dart';
  2. class CustomSingleChildScrollView extends StatelessWidget {
  3. final data = <Color>[
  4. Colors.blue[50],
  5. Colors.blue[100],
  6. Colors.blue[200],
  7. Colors.blue[300],
  8. Colors.blue[400],
  9. Colors.blue[500],
  10. Colors.blue[600],
  11. Colors.blue[700],
  12. Colors.blue[800],
  13. Colors.blue[900],
  14. ];
  15. @override
  16. Widget build(BuildContext context) {
  17. return Container(
  18. height: 200,
  19. child: SingleChildScrollView(
  20. padding: EdgeInsets.symmetric(horizontal: 10),
  21. child: Column(
  22. children: data
  23. .map((color) => Container(
  24. alignment: Alignment.center,
  25. height: 50,
  26. color: color,
  27. child: Text(
  28. colorString(color),
  29. style: TextStyle(color: Colors.white, shadows: [
  30. Shadow(
  31. color: Colors.black,
  32. offset: Offset(.5, .5),
  33. blurRadius: 2)
  34. ]),
  35. ),
  36. ))
  37. .toList(),
  38. ),
  39. ),
  40. );
  41. }
  42. String colorString(Color color) =>
  43. "#${color.value.toRadixString(16).padLeft(8, '0').toUpperCase()}";
  44. }

SingleChildScrollView滑动方向


【scrollDirection】 : 滑动方向 【Axis】
【reverse】 : 是否反向 【Axis】
10.gif

import 'package:flutter/material.dart';
class DirectionSingleChildScrollView extends StatelessWidget {
  final data = <Color>[
    Colors.blue[50],
    Colors.blue[100],
    Colors.blue[200],
    Colors.blue[300],
    Colors.blue[400],
    Colors.blue[500],
    Colors.blue[600],
    Colors.blue[700],
    Colors.blue[800],
    Colors.blue[900],
  ];

  @override
  Widget build(BuildContext context) {
    return Container(
      height: 200,
      child: SingleChildScrollView(
        scrollDirection: Axis.horizontal,
        reverse: true,
        padding: EdgeInsets.symmetric(horizontal: 10),
        child: Row(
          children: data
              .map((color) => Container(
            alignment: Alignment.center,
            width: 90,
            color: color,
            child: Text(
              colorString(color),
              style: TextStyle(color: Colors.white, shadows: [
                Shadow(
                    color: Colors.black,
                    offset: Offset(.5, .5),
                    blurRadius: 2)
              ]),
            ),
          ))
              .toList(),
        ),

      ),
    );
  }
  String colorString(Color color) =>
      "#${color.value.toRadixString(16).padLeft(8, '0').toUpperCase()}";
}