基础组件库
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 

71 linhas
2.7 KiB

  1. import 'dart:async';
  2. import 'package:cached_network_image/cached_network_image.dart';
  3. import 'package:flutter/material.dart';
  4. class MineHeaderBgWidget extends StatefulWidget {
  5. @override
  6. _MineHeaderBgWidgetState createState() => _MineHeaderBgWidgetState();
  7. }
  8. class _MineHeaderBgWidgetState extends State<MineHeaderBgWidget> {
  9. int zIndex = 0;
  10. // List<String> list = ['ff0000', '00ff00', '0000ff', 'ffff00'];
  11. List<String> imageUrls = [
  12. 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1599627593136&di=2aa824f43d4945dbeca31d5ccc587567&imgtype=0&src=http%3A%2F%2Ft8.baidu.com%2Fit%2Fu%3D1484500186%2C1503043093%26fm%3D79%26app%3D86%26f%3DJPEG%3Fw%3D1280%26h%3D853',
  13. 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1599627593136&di=c082ab4b39f0bc45e8cad60447db4ae2&imgtype=0&src=http%3A%2F%2Ft8.baidu.com%2Fit%2Fu%3D2247852322%2C986532796%26fm%3D79%26app%3D86%26f%3DJPEG%3Fw%3D1280%26h%3D853',
  14. 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1599627593136&di=b7535e61ed661806647bf1070e74f883&imgtype=0&src=http%3A%2F%2Ft7.baidu.com%2Fit%2Fu%3D3204887199%2C3790688592%26fm%3D79%26app%3D86%26f%3DJPEG%3Fw%3D4610%26h%3D2968',
  15. 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1599627593136&di=3b381359676404f5e42f6a663a0139f1&imgtype=0&src=http%3A%2F%2Ft9.baidu.com%2Fit%2Fu%3D3363001160%2C1163944807%26fm%3D79%26app%3D86%26f%3DJPEG%3Fw%3D1280%26h%3D830',
  16. ];
  17. Timer timer;
  18. //setInterval控制当前动画元素的下标,实现动画轮播
  19. autoPlay() {
  20. var second = const Duration(seconds: 2);
  21. timer = Timer.periodic(second, (t) {
  22. setState(() {
  23. zIndex = (++zIndex) % imageUrls.length;
  24. });
  25. });
  26. }
  27. @override
  28. void initState() {
  29. super.initState();
  30. timer = Timer(Duration(seconds: 2), autoPlay);
  31. }
  32. @override
  33. void dispose() {
  34. if (timer != null) timer.cancel();
  35. super.dispose();
  36. }
  37. @override
  38. Widget build(BuildContext context) {
  39. return Container(
  40. height: 300,
  41. width: double.infinity,
  42. child: Stack(
  43. children: imageUrls
  44. .asMap()
  45. .keys
  46. .map<Widget>((i) => AnimatedOpacity(
  47. curve: Curves.easeIn,
  48. duration: Duration(milliseconds: 1600),
  49. opacity: i == zIndex ? 1 : 0,
  50. child: Container(
  51. // color: Color(int.parse(list[i], radix: 16))
  52. // .withAlpha(255),
  53. child: CachedNetworkImage(
  54. imageUrl: imageUrls[i],
  55. ),
  56. height: 300, //100%
  57. ),
  58. ))
  59. .toList(),
  60. ));
  61. }
  62. }