The deal includes an option for 2021, the source said.
The 33-year-old Smoak’s offensive production declined for the third straight season with the Toronto Blue Jays in 2019. He hit just .208 with 22 home runs and 61 RBIs in 121 games. He missed 12 games in June with a left quad strain.
Smoak made $8 million last season after the Jays picked up a fifth-year option following the 2018 season.
The veteran switch-hitter had a career season for the Blue Jays in 2017, earning his only All-Star nod while setting career highs in most offensive categories, including batting average (.270), home runs (38), RBIs (90) and games played (158). However, he fell off the following season, hitting .242 with 25 homers and 77 RBIs.
Smoak is the third bat added by the Brewers this week following the additions of outfielder Avisail Garcia on Monday and infielder Eric Sogard on Wednesday. Milwaukee had lost starting catcher Yasmani Grandal and starting second baseman Mike Moustakas earlier this offseason in free agency to the Chicago White Sox and Cincinnati Reds, respectively.
Eric Thames, who hit 59 homers in three seasons with the Brewers, played the majority of games at first base for Milwaukee last season, but the team declined a $7.5 million option for the 2020 season.