widget code review issue, use Map<String, String> instead of WidgetDescriptor