| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import 'dart:async';
- import 'package:flutter/material.dart';
- class Marquee extends StatefulWidget {
- Widget child;
- double offset;
- Marquee({Key? key, required this.child, required this.offset})
- : super(key: key);
- @override
- State<Marquee> createState() => _MarqueeState();
- }
- class _MarqueeState extends State<Marquee> {
- late ScrollController controller;
- late Timer timer;
- double stepOffset = 50.0;
- Duration duration = const Duration(seconds: 5);
- // @override
- // void initState() {
- // // TODO: implement initState
- // super.initState();
- // controller = ScrollController(initialScrollOffset: widget.offset);
- // timer = Timer.periodic(const Duration(milliseconds: 100), (timer) {
- // double newOffset = controller.offset + stepOffset;
- // if (newOffset != widget.offset) {
- // widget.offset = newOffset;
- // controller.animateTo(widget.offset,
- // duration: duration, curve: Curves.linear);
- // }
- // });
- // }
- @override
- void initState() {
- // TODO: implement initState
- super.initState();
- controller = ScrollController(initialScrollOffset: widget.offset);
- double i = 0.5;
- timer = Timer.periodic(const Duration(milliseconds: 50), (timer) {
- i=i+0.5;
- controller.jumpTo(widget.offset + i);
- });
- }
- @override
- void dispose() {
- // TODO: implement dispose
- timer.cancel();
- controller.dispose();
- super.dispose();
- }
- @override
- Widget build(BuildContext context) {
- return ListView.builder(
- scrollDirection: Axis.horizontal,
- physics: const NeverScrollableScrollPhysics(),
- controller: controller,
- itemBuilder: (context, index) {
- return widget.child;
- });
- }
- }
|