Flexible channels enable Access Points (AP) and clients to determine channel widths and their center frequencies. The key challenge in flexible channels is how to determine proper channel width and center frequency for each link demands such that the overall system throughput could be improved. In this work, we introduce a distributed flexible channel assignment algorithm, DFCA. Different from prior researches, DFCA does link-based channel assignment instead of AP-based or packet-based. This is because that the packet-based method could incur heavy overhead, while the AP-based method is not able to determine the interfering relation between links precisely. In addition, the transmission weight of a link is proposed; with the help of the transmission weight, channel width, center frequency and interference relation to neighboring nodes, DFCA is able to accurately predict that link throughput prior to the channel assignment. Results show that DFCA could outperform traditional fixed channel assignment approaches and the AP-based flexible channel assignment algorithm. Even compared with FLUID, which is a packet-based channel assignment approach with assist of a central controller, DFCA is able to achieve comparable (at least 93%) throughput by using only local information rather than global knowledge.