With Riverpod 2.0 or above, it has introduced a new method called build() method. This method is referred inside a class.
It’s actually returned as a type.

See that we override, the build() method, which means that we can do any operation inside the build() method and return a type.
This return type defines the provider type. The provider is returning a String type here. The method could also return FutureProvider as well. If you return FutureProvider then your build() method return type should be Future or FutureOr.
If you auto generate riverpod code, then you will have startTimeNotifierProvider as provider. If you don’t know how it’s generated follow this Riverpod article.
Anyway, now from our UI, we may access this provider value as below
var start = ref.watch(startTimeNotifierProvider);
Here start variable would be of string type. ref.watch returns us a provider that returns String.
And this type has been defined by the build() method return type. This build() method could also be used for dependency injection, initializing other variables.
You also access other providers in the build() method. The ref object is auto available in the build() method.