lemmur-app-android/lib/pages/community/community_follow_button.dart

64 lines
2.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:lemmy_api_client/v3.dart';
import '../../hooks/logged_in_action.dart';
import '../../l10n/l10n.dart';
import '../../util/observer_consumers.dart';
import 'community_store.dart';
class CommunityFollowButton extends HookWidget {
final CommunityView communityView;
const CommunityFollowButton(this.communityView);
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
final loggedInAction =
useLoggedInAction(context.read<CommunityStore>().instanceHost);
return ObserverBuilder<CommunityStore>(builder: (context, store) {
return ElevatedButtonTheme(
data: ElevatedButtonThemeData(
style: theme.elevatedButtonTheme.style?.copyWith(
shape: MaterialStateProperty.all(const StadiumBorder()),
textStyle: MaterialStateProperty.all(theme.textTheme.subtitle1),
),
),
child: Center(
child: SizedBox(
height: 27,
width: 160,
child: ElevatedButton(
onPressed: store.subscribingState.isLoading
? () {}
: loggedInAction(store.subscribe),
child: store.subscribingState.isLoading
? const SizedBox(
width: 15,
height: 15,
child: CircularProgressIndicator.adaptive(),
)
: Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
if (communityView.subscribed)
const Icon(Icons.remove, size: 18)
else
const Icon(Icons.add, size: 18),
const SizedBox(width: 5),
Flexible(
child: Text(communityView.subscribed
? L10n.of(context).unsubscribe
: L10n.of(context).subscribe))
],
),
)),
),
);
});
}
}