Faits : A. A._, née en 1992, de nationalité marocaine, est arrivée en Suisse en 2015 avec un visa pour suivre des études dans le canton du Valais. Admise en filière bachelor en énergie et techniques environnementales auprès de la Haute Ecole Spécialisée de Suisse occidentale à Sion (ci-après: la Haute Ecole du Valais), elle a été mise au bénéfice d'une autorisation de séjour pour études, renouvelée jusqu'au 20 juillet 2017. En situation d'échec définitif, A._ a sollicité, le 31 juillet 2017, la prolongation de son autorisation de séjour, en faisant part de son intention d'entreprendre une formation passerelle de webmaster, afin d'intégrer la filière informatique de gestion de la Haute Ecole du Valais. Par décision du 13 septembre 2017, le Service de la population et des migrations du canton du Valais (ci-après: le Service cantonal valaisan) a refusé de prolonger l'autorisation de séjour de A._ et a prononcé son renvoi de Suisse, avec un délai de départ au 20 octobre 2017. Cette décision, non contestée, est entrée en force. B. Le 16 septembre 2017, A._ est arrivée dans le canton de Neuchâtel (cf. art. 105 al. 2 LTF). Le 29 septembre 2017, elle a déposé dans ce canton une demande d'autorisation de séjour pour études, afin d'effectuer un bachelor en informatique de gestion auprès de la Haute Ecole ARC (HE-ARC) à Neuchâtel (ci-après: la Haute Ecole de Neuchâtel). Le 11 octobre 2017, A._ a annoncé son arrivée au contrôle des habitants de Neuchâtel. Par décision du 21 novembre 2017, le Service des migrations du canton de Neuchâtel (ci-après: le Service cantonal neuchâtelois) a refusé d'entrer en matière sur la demande d'autorisation de séjour pour études de A._. Celle-ci a formé un recours auprès du Département de l'économie et de l'action sociale du canton de Neuchâtel (ci-après: le Département), qui l'a rejeté par décision du 25 juin 2019. Par arrêt du 28 novembre 2019, la Cour de droit public du Tribunal cantonal de la République et canton de Neuchâtel (ci-après: le Tribunal cantonal) a rejeté le recours de A._ contre ce prononcé et refusé l'octroi de l'assistance judiciaire. En substance, le Tribunal cantonal a confirmé le refus d'entrer en matière en retenant que les autorités neuchâteloises ne pouvaient pas examiner la demande d'autorisation de séjour pour études déposée devant elles, compte tenu de la décision des autorités valaisannes du 13 septembre 2017 refusant à A._ un titre de séjour pour une formation dans le canton du Valais. C. Contre l'arrêt du 28 novembre 2019, A._ forme un recours constitutionnel subsidiaire. Elle demande au Tribunal fédéral d'annuler l'arrêt querellé et de renvoyer la cause au Tribunal cantonal pour qu'il statue sur les dépens cantonaux et rende une nouvelle décision dans le sens des considérants. Elle requiert le bénéfice de l'assistance judiciaire et la désignation de son conseil pour la défense de ses intérêts. Le Tribunal cantonal se réfère aux motifs de son arrêt et conclut au rejet du recours. Le Service cantonal neuchâtelois et le Département concluent au rejet du recours, dans la mesure où il est recevable. Le Secrétariat d'Etat aux migrations a renoncé à déposer des observations.