First, it's probably preferable to use the provider option if you can.
However, Field widgets and formatters also make use of an isApplicable() method. You can use this for any additional logic to determine whether your widget should be available for a field, a field in the subset of fields defined in your annotation.
You couldcan use this method to limit the widget to just a datetime field with a particular machine name, or only datetime fields on nodes, etc.
You can also use it for your case, to check if other modules are enabled.