Отличие вызова метода через одну точку от вызова через две точки

Чем отличается вызов метода через одну точку от вызова через две точки? В чем нюанс? Спасибо.
через одну точку ошибки нет

 @override
 void dispose() {
  super.dispose();
  _controller.dispose();
 }

через две точки ошибки нет

@override
 void dispose() {
  super.dispose();
  _controller..dispose();
 }

через одну точку ошибка есть

@override
 void initState() {
  super.initState();
  _controller = AnimationController(
   vsync: this,
   duration: Duration(seconds: 2),
  ).forward();
 }

через две точки ошибки нет

@override
 void initState() {
  super.initState();
  _controller = AnimationController(
   vsync: this,
   duration: Duration(seconds: 2),
  )..forward();
 }

Ответы (1 шт):

Автор решения: Aziz Umarov

думаю основное что

так можно

void doSomething() {
  someObject..step1()
    ..step2()
    ..text = 'wtf';
 }

а с одной это будет так

void doSomething() {
  someObject.step1();
  someObject.step2();
  someObject.text = 'wtf';
 }

подробнее тут

Cascades (..) allow you to make a sequence of operations on the same object. In addition to function calls, you can also access fields on that same object. This often saves you the step of creating a temporary variable and allows you to write more fluid code.

если кратко более гибкий код

а вашем примере камней никаких нет.

→ Ссылка