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: () {},
),
],
),
),
],
),
),
),
],
),
);
} }
If you read at the Interval Class documentation you will see:
So both
begin
andend
parameters must be a value such as0.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.