Florian,
OK, you have me confused...
WidgetB can get to WidgetAs var because it is global (based on this code):
define(['dojo/_base/declare', 'jimu/BaseWidget'],
function(declare, BaseWidget) {
return declare([BaseWidget], {
baseClass: 'toggle-basemap-widget',
name: 'ToggleBasemap',
myWhereClause: '',
// DO NOT use "var" myWhereClause as that make it local.
So yes you are forced to use the ...WidgetManager.getInstance().getWidgetsByName('widgetname')... syntax. This is the way that WidgetA knows what WidgetB is.
So using the above code sample the code would look like this:
query.where = WidgetManager.getInstance().getWidgetsByName('ToggleBasemap').myWhereClause;