If the key binding for an action was in another part of the
widget hierarchy, it was not always possible for the Intent
to have access to the state necessary to decide if the
intent/action should be enabled or not.

The majority of these changes were made in the PRs for
Revise Action API and Make Action.enabled be
isEnabled(Intent intent) instead, and are
described in detail in the design
doc.

Description of change

Here are the changes made to address the above problems:

The Map<LocalKey, ActionFactory> that was given to the Actions widget
is now a Map<Type, Action<Intent>> (the type is the type of the Intent to
be passed to the Action).

The isEnabled method was moved from the Intent class to the Action
class.

The FocusNode argument to Action.invoke and Actions.invoke methods was removed.

Invoking an action no longer creates a new instance of the Action.