As a youth, Flynn played in the 2002 Quebec International Pee-Wee Hockey Tournament with the Middlesex Islanders minor ice hockey team. Flynn played his high school hockey at a New England private school in Connecticut, Pomfret School. Undrafted, Flynn previously played for the Maine Black Bears in the NCAA Men's Division IHockey East conference. In his senior year, Flynn's outstanding play was rewarded with a selection to the 2011-12 Hockey East First-Team All-Stars. On March 28, 2012, Flynn agreed to terms on a two-way, entry-level contract with the Buffalo Sabres. As Flynn was over the age of 22 when he entered the league, he was allowed to forgo the NHL Draftand sign as a free agent. During the lockout shortened 2012–13 season, Flynn was called up March 1, 2013, and scored his first NHL goal on March 7 against Johan Hedberg of the New Jersey Devils. On March 2, 2015, Flynn was traded by the Sabres to the Montreal Canadiens for a 2016 fifth-round draft pick. On April 15, 2015, he played in his first ever playoff game and scored the game-winning goal against the Ottawa Senators in Game 1 of the Eastern Conference Quarterfinals. Following the conclusion of the 2014–15 season, Flynn re-signed to a two-year contract extension with the Canadiens on July 1, 2015. After two and a half seasons with the Canadiens, Flynn left as a free agent and signed a one-year, two-way contract with the Dallas Stars on July 1, 2017. After attending the Stars training camp, Flynn was placed on waivers and assigned to AHL affiliate, the Texas Stars for the duration of the 2017–18 season. In 66 games he regained his scoring touch, to contribute with 18 goals and 47 points. He helped the Stars advance to the Calder Cup finals before falling to the Toronto Marlies. As a free agent from the Stars, Flynn opted to sign a one-year, two-way contract with the St. Louis Blues on July 1, 2018. Flynn was assigned to begin the 2018–19 season, with the Blues' AHL affiliate, the San Antonio Rampage. Limited to 21 games through injury with the Rampage, Flynn requested to be terminated from his contract with the Blues and was place and cleared unconditional waivers on January 18, 2019. On January 21, 2019, Flynn agreed to his first European contract, joining Swiss club EV Zug of the National League on a one-year deal through the end of the 2018–19 season. He was released at the end of the season and signed a 4-month contract with HC Ambrì-Piotta on August 9, 2019. On December 31, 2019, his contract with Ambri-Piotta was extended through the end of the 2019-20 season. On May 22, 2020, Flynn was signed to a one-year contract extension by Ambri-Piotta through the 2020-21 season.