mirror of
https://github.com/git-touch/git-touch
synced 2025-03-05 19:57:42 +01:00
fix: always show trailing widgets
This commit is contained in:
parent
04f483aafe
commit
0fe8fc5982
@ -52,7 +52,7 @@ class _RefreshStatefulScaffoldState<T>
|
||||
}
|
||||
|
||||
Widget get _trailing {
|
||||
if (_payload == null || widget.trailingBuilder == null) return null;
|
||||
if (widget.trailingBuilder == null) return null;
|
||||
return widget.trailingBuilder(_payload);
|
||||
}
|
||||
|
||||
|
@ -175,8 +175,9 @@ class ObjectScreen extends StatelessWidget {
|
||||
return Link(
|
||||
child: Icon(Octicons.settings, size: 20),
|
||||
material: false,
|
||||
screenBuilder: (_) =>
|
||||
CodeSettingsScreen(payload['text'], _language),
|
||||
screenBuilder: payload == null
|
||||
? null
|
||||
: (_) => CodeSettingsScreen(payload['text'], _language),
|
||||
);
|
||||
default:
|
||||
return null;
|
||||
|
@ -92,20 +92,27 @@ class OrganizationScreen extends StatelessWidget {
|
||||
},
|
||||
title: AppBarTitle('Organization'),
|
||||
trailingBuilder: (payload) {
|
||||
return ActionButton(title: 'Organization Actions', actions: [
|
||||
MyAction(
|
||||
text: 'Share',
|
||||
onPress: () {
|
||||
Share.share(payload['url']);
|
||||
},
|
||||
),
|
||||
MyAction(
|
||||
text: 'Open in Browser',
|
||||
onPress: () {
|
||||
launch(payload['url']);
|
||||
},
|
||||
),
|
||||
]);
|
||||
return ActionButton(
|
||||
title: 'Organization Actions',
|
||||
actions: [
|
||||
MyAction(
|
||||
text: 'Share',
|
||||
onPress: () {
|
||||
if (payload != null) {
|
||||
Share.share(payload['url']);
|
||||
}
|
||||
},
|
||||
),
|
||||
MyAction(
|
||||
text: 'Open in Browser',
|
||||
onPress: () {
|
||||
if (payload != null) {
|
||||
launch(payload['url']);
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
bodyBuilder: (payload) {
|
||||
return Column(
|
||||
|
@ -136,53 +136,61 @@ class RepositoryScreen extends StatelessWidget {
|
||||
fetchReadme(context),
|
||||
]),
|
||||
trailingBuilder: (data) {
|
||||
var payload = data[0];
|
||||
return ActionButton(title: 'Repository Actions', actions: [
|
||||
MyAction(
|
||||
text: '@$owner',
|
||||
onPress: () {
|
||||
WidgetBuilder builder;
|
||||
return ActionButton(
|
||||
title: 'Repository Actions',
|
||||
actions: [
|
||||
MyAction(
|
||||
text: '@$owner',
|
||||
onPress: () {
|
||||
if (data == null) return;
|
||||
WidgetBuilder builder;
|
||||
|
||||
switch (payload['owner']['__typename']) {
|
||||
case 'Organization':
|
||||
builder = (_) => OrganizationScreen(owner);
|
||||
break;
|
||||
case 'User':
|
||||
builder = (_) => UserScreen(owner);
|
||||
break;
|
||||
}
|
||||
switch (data[0]['owner']['__typename']) {
|
||||
case 'Organization':
|
||||
builder = (_) => OrganizationScreen(owner);
|
||||
break;
|
||||
case 'User':
|
||||
builder = (_) => UserScreen(owner);
|
||||
break;
|
||||
}
|
||||
|
||||
Provider.of<ThemeModel>(context).pushRoute(context, builder);
|
||||
},
|
||||
),
|
||||
MyAction(
|
||||
text: payload['viewerHasStarred'] ? 'Unstar' : 'Star',
|
||||
onPress: () async {
|
||||
if (payload['viewerHasStarred']) {
|
||||
await Provider.of<SettingsModel>(context)
|
||||
.deleteWithCredentials('/user/starred/$owner/$name');
|
||||
payload['viewerHasStarred'] = false;
|
||||
} else {
|
||||
Provider.of<SettingsModel>(context)
|
||||
.putWithCredentials('/user/starred/$owner/$name');
|
||||
payload['viewerHasStarred'] = true;
|
||||
}
|
||||
},
|
||||
),
|
||||
// TODO: watch
|
||||
MyAction(
|
||||
text: 'Share',
|
||||
onPress: () {
|
||||
Share.share(payload['url']);
|
||||
},
|
||||
),
|
||||
MyAction(
|
||||
text: 'Open in Browser',
|
||||
onPress: () {
|
||||
launch(payload['url']);
|
||||
},
|
||||
),
|
||||
]);
|
||||
Provider.of<ThemeModel>(context).pushRoute(context, builder);
|
||||
},
|
||||
),
|
||||
if (data != null)
|
||||
MyAction(
|
||||
text: data[0]['viewerHasStarred'] ? 'Unstar' : 'Star',
|
||||
onPress: () async {
|
||||
if (data[0]['viewerHasStarred']) {
|
||||
await Provider.of<SettingsModel>(context)
|
||||
.deleteWithCredentials('/user/starred/$owner/$name');
|
||||
data[0]['viewerHasStarred'] = false;
|
||||
} else {
|
||||
Provider.of<SettingsModel>(context)
|
||||
.putWithCredentials('/user/starred/$owner/$name');
|
||||
data[0]['viewerHasStarred'] = true;
|
||||
}
|
||||
},
|
||||
),
|
||||
// TODO: watch
|
||||
MyAction(
|
||||
text: 'Share',
|
||||
onPress: () {
|
||||
if (data != null) {
|
||||
Share.share(data[0]['url']);
|
||||
}
|
||||
},
|
||||
),
|
||||
MyAction(
|
||||
text: 'Open in Browser',
|
||||
onPress: () {
|
||||
if (data != null) {
|
||||
launch(data[0]['url']);
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
bodyBuilder: (data) {
|
||||
var payload = data[0];
|
||||
|
@ -146,7 +146,6 @@ class UserScreen extends StatelessWidget {
|
||||
},
|
||||
title: AppBarTitle('User'),
|
||||
trailingBuilder: (data) {
|
||||
var payload = data[0];
|
||||
if (isMe) {
|
||||
return Link(
|
||||
child: Icon(Icons.settings, size: 20),
|
||||
@ -155,35 +154,42 @@ class UserScreen extends StatelessWidget {
|
||||
fullscreenDialog: true,
|
||||
);
|
||||
} else {
|
||||
return ActionButton(title: 'User Actions', actions: [
|
||||
if (payload['viewerCanFollow'])
|
||||
return ActionButton(
|
||||
title: 'User Actions',
|
||||
actions: [
|
||||
if (data != null && data[0]['viewerCanFollow'])
|
||||
MyAction(
|
||||
text: data[0]['viewerIsFollowing'] ? 'Unfollow' : 'Follow',
|
||||
onPress: () async {
|
||||
if (data[0]['viewerIsFollowing']) {
|
||||
await Provider.of<SettingsModel>(context)
|
||||
.deleteWithCredentials('/user/following/$login');
|
||||
data[0]['viewerIsFollowing'] = false;
|
||||
} else {
|
||||
Provider.of<SettingsModel>(context)
|
||||
.putWithCredentials('/user/following/$login');
|
||||
data[0]['viewerIsFollowing'] = true;
|
||||
}
|
||||
},
|
||||
),
|
||||
MyAction(
|
||||
text: payload['viewerIsFollowing'] ? 'Unfollow' : 'Follow',
|
||||
onPress: () async {
|
||||
if (payload['viewerIsFollowing']) {
|
||||
await Provider.of<SettingsModel>(context)
|
||||
.deleteWithCredentials('/user/following/$login');
|
||||
payload['viewerIsFollowing'] = false;
|
||||
} else {
|
||||
Provider.of<SettingsModel>(context)
|
||||
.putWithCredentials('/user/following/$login');
|
||||
payload['viewerIsFollowing'] = true;
|
||||
text: 'Share',
|
||||
onPress: () {
|
||||
if (data[0] != null) {
|
||||
Share.share(data[0]['url']);
|
||||
}
|
||||
},
|
||||
),
|
||||
MyAction(
|
||||
text: 'Share',
|
||||
onPress: () {
|
||||
Share.share(payload['url']);
|
||||
},
|
||||
),
|
||||
MyAction(
|
||||
text: 'Open in Browser',
|
||||
onPress: () {
|
||||
launch(payload['url']);
|
||||
},
|
||||
),
|
||||
]);
|
||||
MyAction(
|
||||
text: 'Open in Browser',
|
||||
onPress: () {
|
||||
if (data[0] != null) {
|
||||
launch(data[0]['url']);
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
},
|
||||
bodyBuilder: (data) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user