showing modal for choosing default account

This commit is contained in:
shilangyu 2020-09-01 21:36:58 +02:00
parent 2b3fc87f88
commit 708a680ddc
3 changed files with 89 additions and 2 deletions

View File

@ -4,6 +4,7 @@ import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:provider/provider.dart';
import '../stores/accounts_store.dart';
import '../widgets/bottom_modal.dart';
import '../widgets/user_profile.dart';
import 'settings.dart';
@ -39,7 +40,51 @@ class UserProfileTab extends HookWidget {
),
],
),
onPressed: () {}, // TODO: should open bottomsheet
onPressed: () {
showModalBottomSheet(
context: context,
backgroundColor: Colors.transparent,
builder: (_) {
var userTags = <String>[];
ctx
.read<AccountsStore>()
.users
.forEach((instanceUrl, value) {
value.forEach((username, _) {
userTags.add('$username@$instanceUrl');
});
});
return Observer(
builder: (ctx) {
var user = ctx.watch<AccountsStore>().defaultUser;
var instanceUrl = user.actorId.split('/')[2];
return BottomModal(
title: 'account',
child: Column(
children: [
for (final tag in userTags)
RadioListTile<String>(
value: tag,
title: Text(tag),
groupValue: '${user.name}@$instanceUrl',
onChanged: (selected) {
var userTag = selected.split('@');
ctx.read<AccountsStore>().setDefaultAccount(
userTag[1], userTag[0]);
Navigator.of(ctx).pop();
},
)
],
),
);
},
);
},
);
},
),
actions: [
IconButton(

View File

@ -0,0 +1,42 @@
import 'package:flutter/material.dart';
class BottomModal extends StatelessWidget {
final Widget child;
final String title;
BottomModal({@required this.child, this.title});
@override
Widget build(BuildContext context) {
var theme = Theme.of(context);
return Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
padding: const EdgeInsets.only(top: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(const Radius.circular(10.0)),
),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (title != null) ...[
Padding(
padding: const EdgeInsets.only(left: 70),
child: Text(
'account',
style: theme.textTheme.subtitle2,
textAlign: TextAlign.left,
),
),
Divider()
],
child,
],
),
),
);
}
}

View File

@ -23,7 +23,7 @@ class UserProfile extends HookWidget {
Widget build(BuildContext context) {
var theme = Theme.of(context);
var userViewSnap = useFuture(_userView);
var userViewSnap = useFuture(_userView, preserveState: false);
Widget bio;