Faits: Faits: A. K._, ressortissant du Kosovo, né le 19 août 1967, a été arrêté le 6 janvier 2004 et placé en détention préventive le lendemain dans le cadre d'une procédure pénale ouverte contre lui le 1er octobre 2002 des chefs d'infraction à la loi fédérale sur les stupéfiants, éventuellement de blanchiment d'argent. Il lui est reproché d'avoir vendu, à Neuchâtel et à Marin, du début 2001 à la fin de l'automne 2002, une quantité indéterminée, mais au minimum 336 grammes, de cocaïne. Le 3 février 2004, le Juge d'instruction de Neuchâtel a rejeté une demande de mise en liberté provisoire émanant de K._ en raison notamment d'un risque de collusion, tenant au fait que l'accusation reposait sur des déclarations à charge de plusieurs toxicomanes ou anciens toxicomanes qu'il devait entendre prochainement sans que le prévenu ne puisse intervenir. Celui-ci a recouru en vain contre cette décision auprès de la Chambre d'accusation du Tribunal cantonal du canton de Neuchâtel (ci-après: la Chambre d'accusation ou la cour cantonale), puis auprès du Tribunal fédéral; son recours de droit public a été rejeté par un arrêt rendu le 16 mars 2004 (1P.128/2004). Le 25 mars 2004, le Juge d'instruction de Neuchâtel a entendu cinq consommateurs de cocaïne ayant mis en cause K._ et les a confrontés au prévenu. A l'issue de l'audience, celui-ci a requis sa libération immédiate. Le magistrat instructeur a rejeté cette requête par décision du 26 mars 2004, en raison des risques de fuite et de récidive. Par arrêt rendu le 21 avril 2004 sur recours de K._, la Chambre d'accusation a confirmé le maintien de la détention en se fondant exclusivement sur le danger de fuite présenté par le prévenu. Le 25 mars 2004, le Juge d'instruction de Neuchâtel a entendu cinq consommateurs de cocaïne ayant mis en cause K._ et les a confrontés au prévenu. A l'issue de l'audience, celui-ci a requis sa libération immédiate. Le magistrat instructeur a rejeté cette requête par décision du 26 mars 2004, en raison des risques de fuite et de récidive. Par arrêt rendu le 21 avril 2004 sur recours de K._, la Chambre d'accusation a confirmé le maintien de la détention en se fondant exclusivement sur le danger de fuite présenté par le prévenu. B. Agissant par la voie du recours de droit public pour violation des art. 10 al. 2, 31 Cst. et 5 CEDH, K._ demande au Tribunal fédéral d'annuler cet arrêt et d'ordonner sa mise en liberté immédiate. Il requiert l'assistance judiciaire. La Chambre d'accusation s'en remet aux considérants de son arrêt. Le Ministère public du canton de Neuchâtel et le Juge d'instruction de Neuchâtel concluent au rejet du recours. K._ a répliqué. 