Faits :
A.
A._, ressortissant portugais né en 1988, a été arrêté le 17 décembre 2019 et placé en détention provisoire pour trois mois par décision du Tribunal des mesures de contrainte du Jura bernois-Seeland (Tmc), sous la prévention de trafic de stupéfiants. Il lui est reproché un trafic portant sur au moins 136 grammes purs de cocaïne, 575 grammes purs de MDMA, 4'165 grammes purs d'amphétamines, 100 grammes bruts de kétamine et 500 cartons de LSD. La détention provisoire a été prolongée de trois mois par décision du Tmc du 23 mars 2020.
Le 16 juin 2020, le Tmc a rejeté une nouvelle demande de prolongation d'un mois et a ordonné la libération du prévenu moyennant des mesures de substitution, considérant que le risque de fuite n'était pas suffisant pour justifier un maintien en détention.
Sur recours du Ministère public, la Chambre de recours pénale de la Cour suprême du canton de Berne a, par décision du 23 juin 2020, prononcé le maintien du prévenu en détention provisoire jusqu'au 16 juillet 2020. L'existence de soupçons sérieux n'était pas contestée. Au vu de la gravité des faits et de la peine privative de liberté susceptible d'être prononcée (proche de cinq ans selon le Ministère public), de l'absence d'attaches fortes en Suisse (à l'exception d'un emploi stable et de l'existence d'un filleul) et de ses liens avec l'étranger (sa mère au Portugal et d'autres membres de la famille au Luxembourg), le risque de fuite apparaissait vraisemblable et aucune mesure de substitution n'apparaissait suffisante pour prévenir ce risque.
B.
Agissant par la voie du recours en matière pénale, A._ demande au Tribunal fédéral d'annuler la décision de la Chambre de recours pénale et d'ordonner sa remise en liberté immédiatement, éventuellement moyennant des mesures de substitution (interdiction de quitter le territoire suisse, attestation de présence de l'employeur, obligation de se présenter au poste de police de U._ tous les mercredis et vendredis, dépôt des documents d'identité portugais, cas échéant contrôle électronique). Il requiert l'assistance judiciaire et insiste sur la nécessité que le Tribunal fédéral statue avant le 20 juillet 2020, son employeur ne lui ayant garanti le maintien de son emploi que jusqu'à cette date.
La Chambre de recours pénale renonce à répondre au recours. Le Ministère public conclut à la confirmation du jugement attaqué, sans autres observations. Dans ses dernières observations du 7 juillet 2020, le recourant persiste dans son recours.

Considérant en droit :
1.
Le recours en matière pénale (<ref-law>) est ouvert contre une décision relative à la détention provisoire au sens des <ref-law>. Selon l'art. 81 al. 1 let. a et b ch. 1 LTF, le recourant, dont le maintien en détention a été prononcé par la cour cantonale, a qualité pour recourir. Le recours a été formé en temps utile (<ref-law>) contre une décision rendue par une autorité statuant en tant que dernière instance cantonale (<ref-law>) et les conclusions présentées sont recevables au regard de l'<ref-law>. Partant, il y a lieu d'entrer en matière.
2.
Une mesure de détention provisoire ou pour des motifs de sûreté n'est compatible avec la liberté personnelle (art. 10 al. 2 Cst. et 5 CEDH) que si elle repose sur une base légale (art. 31 al. 1 et 36 al. 1 Cst.), soit en l'espèce l'<ref-law>. Elle doit en outre correspondre à un intérêt public et respecter le principe de la proportionnalité (art. 36 al. 2 et 3 Cst.; art. 212 al. 3 et 237 al. 1 CPP). Pour que tel soit le cas, la privation de liberté doit être justifiée par les besoins de l'instruction, un risque de fuite ou un danger de collusion ou de réitération (cf. art. 221 al. 1 let. a, b et c CPP). Préalablement à ces conditions, il doit exister des charges suffisantes, soit de sérieux soupçons de culpabilité, à l'égard de l'intéressé (<ref-law>; art. 5 par. 1 let. c CEDH).
2.1. Le recourant ne conteste pas l'existence de charges suffisantes. Il remet en revanche en cause l'existence d'un risque de fuite; il estime que la cour cantonale ne pouvait retenir l'absence d'attaches fortes en Suisse, puisqu'il est arrivé dans ce pays à l'âge de 11 ans, y a effectué sa scolarité et son apprentissage et qu'il y a toutes ses attaches personnelles ainsi qu'un emploi stable depuis plusieurs années. La cour cantonale aurait adopté un raisonnement schématique inadapté à la situation concrète: le recourant est resté en Suisse alors que sa mère est retournée au Portugal et son intégration professionnelle serait parfaite, son employeur lui ayant conservé son emploi malgré plus de six mois de détention. Ses attaches en Suisse seraient plus fortes qu'au Portugal (où il n'a que sa mère) ou au Luxembourg (où vit une partie éloignée de sa famille à qui il rend visite épisodiquement). Le recourant relève encore qu'il a avoué les faits et collaboré à l'enquête, signe qu'il entendrait assumer les conséquences de ses actes, et qu'il a entrepris toutes les démarches pour demeurer en Suisse après sa libération.
2.2. Conformément à l'<ref-law>, la détention provisoire peut être ordonnée s'il y a sérieusement lieu de craindre que le prévenu se soustraie à la procédure pénale ou à la sanction prévisible en prenant la fuite. Selon la jurisprudence, le risque de fuite doit s'analyser en fonction d'un ensemble de critères, tels que le caractère de l'intéressé, sa moralité, ses ressources, ses liens avec l'Etat qui le poursuit ainsi que ses contacts à l'étranger, qui font apparaître le risque de fuite non seulement possible, mais également probable. La gravité de l'infraction ne peut pas, à elle seule, justifier le placement ou le maintien en détention, même si elle permet souvent de présumer un danger de fuite en raison de l'importance de la peine dont le prévenu est menacé (<ref-ruling> consid. 2.2 p. 507). Le risque de fuite s'étend également au risque de se soustraire à la procédure pénale ou à la sanction prévisible en tombant dans la clandestinité à l'intérieur du pays (<ref-ruling> consid. 4.3 p. 167).
2.3. Les infractions, reconnues par le recourant, portent sur une quantité importante de divers stupéfiants, susceptible de tomber sous le coup de l'<ref-law> et l'exposant à une peine privative de liberté de plusieurs années. Contrairement à ce que soutient le recourant, la cour cantonale a dûment rappelé - en se référant également aux considérations de l'instance précédente - les éléments de faits permettant de lui reconnaître des liens avec la Suisse. Elle a toutefois relevé l'absence de famille dans ce pays et l'existence de points de chute possibles au Luxembourg, et surtout au Portugal d'où le recourant pourrait espérer ne pas être extradé. Par ailleurs, la perspective de devoir passer plusieurs années en prison et de faire l'objet d'une mesure d'expulsion (art. 66a al. 1 let. o CP) fait passer au second plan le réseau social dont le recourant peut disposer en Suisse, ainsi que ses démarches pour conserver son emploi et pour régulariser ses dettes. En dépit de ces démarches, la situation du recourant (titulaire d'un permis C jusqu'en 2023) apparaît précaire puisqu'il a notamment admis que le produit de son trafic de stupéfiants lui permettait de payer ses factures (décision attaquée, consid. 3.2). A la lecture des précédentes décisions prolongeant la détention (notamment la décision de la Chambre de recours pénale du 15 avril 2020, consid. 2.2), il apparaît aussi que le recourant n'a pas collaboré à l'enquête aussi entièrement qu'il le prétend. Dans ces conditions, le risque de fuite doit être qualifié de concret.
2.4. Le recourant estime que les mesures de substitution ordonnées par le Tmc (interdiction de quitter le territoire suisse, attestation de présence de l'employeur, obligation de se présenter au poste de police de U._ tous les mercredis et vendredis, dépôt des documents d'identité portugais, cas échéant contrôle électronique) seraient à même de réduire dans une mesure acceptable le risque de fuite.
2.4.1. Le principe de proportionnalité impose d'examiner les possibilités de mettre en oeuvre d'autres solutions moins dommageables que la détention (règle de la nécessité; cf. art. 36 Cst. et 212 al. 2 let. c CPP). Cette exigence est concrétisée par l'<ref-law>, qui prévoit que le tribunal compétent ordonne une ou plusieurs mesures moins sévères en lieu et place de la détention si ces mesures permettent d'atteindre le même but que la détention.
2.4.2. En l'occurrence, le recourant part de la prémisse erronée que le risque de fuite serait faible. Tel n'est pas le cas au vu des charges retenues contre le recourant et des possibilités concrètes de fuir à l'étranger. Dans ces conditions, une simple interdiction de quitter la Suisse, la saisie des documents d'identité, le port du bracelet électronique et la présentation à un poste de police ne sont pas de nature à empêcher une personne dans la situation du recourant de s'enfuir à l'étranger, voire de passer dans la clandestinité.
3.
Sur le vu de ce qui précède, le recours est rejeté. Le recourant a demandé l'octroi de l'assistance judiciaire et les conditions en sont réunies. Il y a donc lieu de désigner Me Grégoire Aubry en tant qu'avocat d'office et de lui allouer une indemnité à titre d'honoraires, qui seront supportés par la caisse du Tribunal fédéral. Il n'est pas perçu de frais judiciaires (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
La demande d'assistance judiciaire est admise; Me Grégoire Aubry est désigné comme avocat d'office du recourant et une indemnité de 1'500 fr. lui est allouée à titre d'honoraires, à payer par la caisse du Tribunal fédéral. Il n'est pas perçu de frais judiciaires.
3.
Le présent arrêt est communiqué au mandataire du recourant, au Ministère public du canton de Berne, Région Jura bernois-Seeland, et à la Cour suprême du canton de Berne, Chambre de recours pénale.
Lausanne, le 9 juillet 2020
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Juge présidant : Kneubühler
Le Greffier : Kurz