dynamic이란 모든 데이터 타입을 포함한 변수이다.
아래와 같은 코드가 있다고 가정했을 때
void main() {
String name = 'flutter';
name = 10;
print(name);
}
초기에 선언한 데이터 타입과 새로 할당된 타입이 다르기 때문에
에러 메세지가 뜨는 것을 확인할 수 있다.
그러나 변수선언을 dynamic으로 했을시

10이 문제없이 잘 프린트 되는 것을 확인할 수 있다.
dynamic은 모든 데이터 타입을 포함하고 있기 때문에 이러한 할당이 가능한 것.
자유롭지만 그만큼 타입에러를 잡기 힘들기 때문에 권장되지 않는 방법이라고 한다.
(갑자기 머릿속에 스쳐지나가는 JS...)
var는 최초 선언 시 타입을 추론한다.
즉 할당된 변수 값이 문자열인지, 숫자인지 불리언인지를 var가 판단한다는 것

그렇기 때문에 String으로 최초 언급했을 때와 동일한 에러가 뜬다.
dynamic이 굉장히 유연하고 자유롭지만 남용했을 시 그 파장은 감당하기 어려울테니...
flutter 공식문서에서도 사용을 권장하지 않는다고 한다.