anchor.diff:    @override
     void initState() {
       super.initState();
  -
  +    _configure();
  +  }
  +
  +  void _configure() {
       if (widget.src == _Source.asset) {
  -      RiveFile.asset(widget.name).then(_init);
  +      RiveFile.asset(widget.name!).then(_init);
       } else if (widget.src == _Source.network) {
  -      RiveFile.network(widget.name).then(_init);
  +      RiveFile.network(widget.name!).then(_init);
       } else if (widget.src == _Source.file) {
  -      RiveFile.file(widget.name).then(_init);
  -    }
  +      RiveFile.file(widget.name!).then(_init);
  +    } else if (widget.src == _Source.riveFile) {
  +      _init(widget.file!);
  +    }
  +  }
  +
  +  @override
  +  void didUpdateWidget(covariant RiveAnimation oldWidget) {
  +    if (widget.alignment != oldWidget.alignment ||
  +        widget.animations != oldWidget.animations ||
  +        widget.antialiasing != oldWidget.antialiasing ||
  +        widget.artboard != oldWidget.artboard ||
  +        widget.controllers != oldWidget.controllers ||
  +        widget.file != oldWidget.file ||
  +        widget.fit != oldWidget.fit ||
  +        widget.name != oldWidget.name ||
  +        widget.onInit != oldWidget.onInit ||
  +        widget.placeHolder != oldWidget.placeHolder ||
  +        widget.src != oldWidget.src ||
  +        widget.stateMachines != oldWidget.stateMachines) {
  +      setState(_configure);
  +    }
  +    super.didUpdateWidget(oldWidget);
     }
   
     /// Initializes the artboard, animations, state machines and controllers
  
positive.code:     this.antialiasing = true,
      this.controllers = const [],
      this.onInit,
    }) : src = _Source.file;
  
    @override
    _RiveAnimationState createState() => _RiveAnimationState();
  
negative.code:       }
      });
  
      // Add any user-created controllers
      widget.controllers.forEach(artboard.addController);
  
      setState(() => _artboard = artboard);
  