Can anybody tell why am I getting this error in Flutter while trying to implement animation

941 views Asked by At
            Another exception was thrown: 'package:flutter/src/animation/curves.dart': Failed assertion: line 182 pos 12: 'begin <= 1.0': is not true.

════════ Exception caught by widgets library ═══════════════════════════════════════════════════════ 'package:flutter/src/animation/curves.dart': Failed assertion: line 182 pos 12: 'begin <= 1.0': is not true. The relevant error-causing widget was: MyHomeWidget file:///C:/Users/Alfred%20J.%20Stanley/FlutterProjects/flutter_app_test/lib/main.dart:21:13

    import 'package:flutter/cupertino.dart';
    import 'package:flutter/material.dart';
    import 'package:flutter_app_test/DrawerClass.dart';
    import 'package:flutter_app_test/widgets/category_widget.dart';
    import 'package:flutter_app_test/widgets/search_bar.dart';
    import 'constants.dart';

    class MyHomeWidget extends StatefulWidget {
      @override
    State<StatefulWidget> createState() {
    return MyHomeWidgetState();
    }
    }

    class MyHomeWidgetState extends State<MyHomeWidget>
    with SingleTickerProviderStateMixin {
    AnimationController animationController;
    Animation animationcolor;
    Animation animationsize;
    Animation animationsizeText;

    @override
    void initState() {
    super.initState();
    animationController = AnimationController(vsync: this, duration: Duration(seconds:4));
    animationsizeText=Tween<double>(begin: 10.0,end: 30.0).animate(CurvedAnimation(parent: 
    animationController,curve: Interval(1.75,2.75)));
    animationsize = TweenSequence(
    [
    TweenSequenceItem(tween: Tween(begin: 50.0, end: 30.0), weight: 1),
    TweenSequenceItem(tween: Tween(begin: 30.0, end: 50.0), weight: 1)
    ],).animate(CurvedAnimation(parent: animationController,curve: Interval(3.0,4.0)));

    animationcolor = ColorTween(begin: Colors.grey, end: Colors.black)
    .animate(animationController);
    animationController.forward();

    animationController.addListener(() {
    setState(() {});
    });
    }

    @override
    Widget build(BuildContext context) {
    var screen_size = MediaQuery.of(context).size;
    return Scaffold(
    drawer: DrawerClass(),
    appBar: AppBar(
    title: Text("App Bar Title"),
    ),
    bottomNavigationBar: BottomNavigationBar(
    currentIndex: 0,
    backgroundColor: Colors.blue,
    items: [
      BottomNavigationBarItem(
        icon: Image.asset(
          'assets/images/cloud.png',
          height: 30,
        ),
        title: Text(
          'item1',
          style: TextStyle(color: Colors.white),
        ),
      ),
      BottomNavigationBarItem(
        icon: Image.asset(
          'assets/images/cloud.png',
          height: 30,
        ),
        title: Text(
          'item2',
          style: TextStyle(color: Colors.white),
        ),
      ),
      BottomNavigationBarItem(
        icon: Image.asset(
          'assets/images/cloud.png',
          height: 30,
        ),
        title: Text(
          'item3',
          style: TextStyle(color: Colors.white),
        ),
      ),
    ],
  ),
  body:Stack(
      children: <Widget>[
        Container(
          width: screen_size.width,
          height: screen_size.height * 0.4,
          decoration: BoxDecoration(
              color: Colors.lightBlueAccent,
              image: DecorationImage(
                image: AssetImage('assets/images/cloud.png'),
                alignment: Alignment.centerLeft,
              )),
          child: Column(
            children: [
              Align(
                alignment: Alignment.topRight,
                child: Container(
                  width: animationsize.value,
                  height: animationsize.value,
                  decoration: BoxDecoration(
                    shape: BoxShape.circle,
                    color: Colors.white,
                    image: DecorationImage(
                      image: AssetImage('assets/images/cloud.png'),
                    ),
                  ),
                ),
              ),
              Center(
                child: Text(
                  "Good Morning, Faiz Ahammed",
                  style: TextStyle(
                      fontSize: animationsizeText.value,
                      fontWeight: FontWeight.w100,
                      color: animationcolor.value),
                ),
              ),
            ],
          ),
        ),
        SafeArea(
          child: Padding(
            padding: EdgeInsets.fromLTRB(20.0, 120.0, 20.0,5.0),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[

                SearchBar(),
                Expanded(
                  child: GridView.count(
                    mainAxisSpacing: 20.0,
                    crossAxisSpacing: 20.0,
                    childAspectRatio: 0.85,
                    crossAxisCount: 2,
                    children: <Widget>[
                      Category(
                        title: "Meditation",
                        svgsrc: "assets/images/cloud.png",
                        onPress: () {},
                      ),
                      Category(
                        title: "Yoga",
                        svgsrc: "assets/images/cloud.png",
                        onPress: () {},
                      ),
                      Category(
                        title: "Karatte",
                        svgsrc: "assets/images/cloud.png",
                        onPress: () {},
                      ),
                      Category(
                        title: "Kunfu",
                        svgsrc: "assets/images/cloud.png",
                        onPress: () {},
                      ),
                      Category(
                        title: "Swimming",
                        svgsrc: "assets/images/cloud.png",
                        onPress: () {},
                      ),
                      Category(
                        title: "Cycling",
                        svgsrc: "assets/images/cloud.png",
                        onPress: () {},
                      ),
                      Category(
                        title: "Trekking",
                        svgsrc: "assets/images/cloud.png",
                        onPress: () {},
                      ),
                      Category(
                        title: "Sailing",
                        svgsrc: "assets/images/cloud.png",
                        onPress: () {},
                      ),
                    ],
                  ),
                ),
              ],
            ),
          ),
        ),
      ],
    ),
  );

} }

1

There are 1 answers

0
Naslausky On BEST ANSWER

If you read at the Interval Class documentation you will see:

A curve that is 0.0 until begin, then curved (according to curve) from 0.0 at begin to 1.0 at end, then remains 1.0 past end.

So both begin and end parameters must be a value such as 0.0<=begin<end<=1.0.

You don't attend to this when in your code you have:

Interval(1.75,2.75)

I can't understand what was your intention without in-depth look of the full code, but these values doesn't make sense. The Interval is a curve, which only represents how a value changes, so the scaling of the numbers itself should not make any difference.

More technically speaking, a curve is a function that maps the values from 0.0 -> 1.0 to 0.0 -> 1.0. That is, it can make the animation speedup or slow down at different parts of its course. As the name implies, it only refers to the Curve of the animation. See this page for examples of common animation curves.