| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | import 'package:app_flowy/startup/startup.dart';import 'package:app_flowy/workspace/application/menu/menu_user_bloc.dart';import 'package:app_flowy/workspace/presentation/widgets/menu/menu_list.dart';import 'package:flowy_infra_ui/widget/spacing.dart';import 'package:flowy_sdk/protobuf/flowy-user/user_detail.pb.dart';import 'package:flutter/material.dart';import 'package:flutter_bloc/flutter_bloc.dart';import 'package:flowy_infra_ui/style_widget/text.dart';import 'package:flowy_infra_ui/style_widget/icon_button.dart';class MenuUser extends MenuItem {  final UserDetail user;  MenuUser(this.user, {Key? key}) : super(key: ValueKey(user.id));  @override  Widget build(BuildContext context) {    return BlocProvider<MenuUserBloc>(      create: (context) =>          getIt<MenuUserBloc>(param1: user)..add(const MenuUserEvent.initial()),      child: BlocBuilder<MenuUserBloc, MenuUserState>(        builder: (context, state) => Row(children: [          _renderAvatar(context),          const HSpace(10),          _renderUserName(context),          const HSpace(10),          _renderDropButton(context),        ]),      ),    );  }  Widget _renderAvatar(BuildContext context) {    return SizedBox(      width: 30,      height: 30,      child: ClipRRect(        borderRadius: BorderRadius.circular(10),        child: const Image(image: AssetImage('assets/images/avatar.jpg')),      ),    );  }  Widget _renderUserName(BuildContext context) {    String name = context.read<MenuUserBloc>().state.user.name;    if (name.isEmpty) {      name = context.read<MenuUserBloc>().state.user.email;    }    return Flexible(      child: FlowyText(name, fontSize: 18),    );  }  Widget _renderDropButton(BuildContext context) {    return FlowyIconButton(      width: 30,      iconRatio: 0.8,      icon: const Icon(Icons.arrow_drop_down),      onPressed: () {        debugPrint('show user profile');      },    );  }  @override  MenuItemType get type => MenuItemType.userProfile;}
 |