Scott,
I finally made some time to look into this. The solution is quite simple if this workflow works for you.
You define what LayerList widget you do not want ANY add dataLayer to be added to in the code.
In the LayerList Widget LayerListView.js drawListNode function add these lines (lines 6-8):
drawListNode: function(layerInfo, level, toTableNode, position) {
var nodeAndSubNode, showLegendDiv;
if(this.isLayerHiddenInWidget(layerInfo)) {
return;
}
if(layerInfo.layerObject._wabProperties.excludeLyrList === this.layerListWidget.id){
return;
}
...
In the AddData widgets search/LayerLoader.js _addLayer function (add line 24):
_addLayer: function(layer) {
var item = this.item;
if (layer) {
layer.xtnItemId = item.id;
layer.xtnAddData = true;
if (!layer.arcgisProps && item) {
layer.arcgisProps = {
title: item.title
};
layer._titleForLegend = item.title;
}
if (!esriLang.isDefined(layer.title)) {
layer.title = item.title;
}
layer._wabProperties = {
itemLayerInfo: {
itemId: item.id,
itemUrl: this.itemUrl,
portalUrl: item.portalUrl
},
excludeLyrList: "widgets_LayerList_Widget_20"
};
this.map.addLayer(layer);
}
},
You can get the layerlist id from the main config.json for your app.