Faits: A. Par jugement du 23 juin 2008, le Tribunal pénal de l'arrondissement de la Sarine avait condamné A._ à une peine privative de liberté de 36 mois, dont 26 mois avec sursis pendant un délai d'épreuve de 5 ans, notamment pour crime et infraction à la loi fédérale du 3 octobre 1951 sur les stupéfiants et les substances psychotropes (LStup; RS 812.121). A._ avait alors subi 151 jours de détention avant jugement. Il avait été libéré en cours d'enquête, après s'être engagé à adopter un comportement irréprochable. Dans le cadre d'une nouvelle enquête, instruite pour infractions à la LStup, A._ se trouve à nouveau en détention préventive depuis le 16 octobre 2009. Il lui est reproché d'avoir participé à un trafic de cocaïne et de marijuana. En particulier, la police a découvert une quantité d'environ 6 kilos de marijuana dans la cave du prénommé ainsi qu'une culture de chanvre comprenant 55 plants et 43 boutures, appartenant notamment à celui-ci. Après avoir contesté les faits qui lui sont reprochés, A._ a finalement admis son implication dans un trafic de marijuana. Il a par contre nié toute participation à un trafic de cocaïne. Sur ce dernier point, il a été mis en cause par B._, qui a été entendu par la police et le Juge d'instruction les 26 juin, 2 juillet et 16 décembre 2009. B. Par ordonnance du 19 février 2010, le Juge de la détention du canton de Fribourg a rejeté la demande de mise en liberté déposée par A._, notamment en raison d'un risque de récidive. La Chambre pénale du Tribunal cantonal du canton de Fribourg (ci-après: le Tribunal cantonal) a confirmé ce prononcé, dans un arrêt du 8 mars 2010. Elle a estimé qu'il existait un risque élevé de récidive et que le principe de la proportionnalité était respecté, compte tenu de la gravité des infractions reprochées et de la durée de la détention préventive. Elle a également relevé que le prévenu n'avait pas réellement pris conscience de la gravité des faits qui lui sont reprochés. C. Agissant par la voie du recours en matière pénale, A._ demande au Tribunal fédéral principalement d'annuler cet arrêt et d'ordonner sa mise en liberté immédiate. Il conclut subsidiairement à sa mise en liberté moyennant des conditions à fixer par l'autorité, plus subsidiairement au renvoi de la cause à l'instance précédente pour nouvelle décision au sens des considérants. Il requiert en outre l'assistance judiciaire. Le Ministère public du canton de Fribourg conclut au rejet du recours. Le Tribunal cantonal renonce à se déterminer et précise que, par ordonnance du 19 mars 2010, le Juge d'instruction a renvoyé A._ en jugement devant le Tribunal pénal de la Sarine. Le recourant a répliqué.