We do this by using a page selector widget property:
[EditingComponent(PageSelector.IDENTIFIER, Order = 1, Label = "Path location")]
public IList<PageSelectorItem> ItemsRootFolder { get; set; }
Then in the widget controller get the alias path for the selected node and use a path query as below to get any children:
            var qry = DocumentHelper.GetDocuments()
        .LatestVersion(LatestVersionEnabled)
        .Published(!LatestVersionEnabled)
        .Culture(PageCulture)
        .CombineWithDefaultCulture()
        .Path(aliasPath.ToString(), PathTypeEnum.Children)
        .CheckPermissions(true);
I recommend using repositories within the widget controllers when doing data access