Worst boyfriend or best boyfriend?

I've been with my boyfriend for 3 years. He's my first boyfriend. First love. First kiss. First sexual partner. First everything. I'm in love with him. The thing is. My friends hate him. Now. He's extremely rude. He doesn't openly say hi to any of my friends. He just nods his head and to his friends he's always so open and loud and nice. My boyfriend knows I'm a hopeless romantic but he's never got me flowers or even any sort of surprise. Infact for prom I had to BEG. him to get me a corsage. Which by the way he complained about saying "$30 dollars for fucking flowers" and he didn't surprise me or even ask me to prom. Whenever I'm hanging with my boyfriend and his friends he literally says SHHH whenever I try saying anything to him. And to his friends he laughs and everything. Also he talks to girls that hate me for no reason. And by talk I mean fully hang out with at school and everything. I have depression, bipolar disorder and severe anxiety. Throughout these entire 3 years I always tell him to go easy on me when we fight and it's like he forgets that I can't control my emotions. It's honestly as if he never heard me speak. I always say "I've always wanted to go..." And drop hints and he never takes me anywhere like that. I remember once I bought up marriage and he fully flipped out and said "it's so awkward when you say that. Do you think I'm gonna get married to you" he's joking but marriage and children is my dream so it really hurts. Also if I'm inactive online and I stay off all social media and don't talk to anyone my two guy best friends lose their shit and get so worried about me and try to get in contact with me in every way and send me special messages letting me know they love me. The only message my boyfriend sent is "what happened" is this healthy for me? What do I do? How do I make him want me? I can't leave him. I love him to much for that. I just really want him to want me. Please don't read this and ignore it. It's really affecting me and I really need your help.