mirror of
https://github.com/git-touch/git-touch
synced 2025-02-20 13:30:38 +01:00
fix: material actions style
This commit is contained in:
parent
9487cc1bc6
commit
eadef899d5
@ -198,11 +198,12 @@ class ThemeModel with ChangeNotifier {
|
||||
showPicker(BuildContext context, PickerGroupItem<String> groupItem) async {
|
||||
switch (theme) {
|
||||
case AppThemeType.cupertino:
|
||||
default:
|
||||
await showCupertinoModalPopup<void>(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
return Container(
|
||||
height: 300,
|
||||
height: 216,
|
||||
child: CupertinoPicker(
|
||||
backgroundColor: CupertinoColors.white,
|
||||
children: groupItem.items.map((v) => Text(v.text)).toList(),
|
||||
@ -222,20 +223,6 @@ class ThemeModel with ChangeNotifier {
|
||||
);
|
||||
},
|
||||
);
|
||||
break;
|
||||
default:
|
||||
final value = await showMenu(
|
||||
context: context,
|
||||
initialValue: groupItem.value,
|
||||
items: groupItem.items
|
||||
.map((item) =>
|
||||
PopupMenuItem(value: item.value, child: Text(item.text)))
|
||||
.toList(),
|
||||
position: RelativeRect.fill,
|
||||
);
|
||||
if (value != null) {
|
||||
groupItem.onChange(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,11 +8,11 @@ import 'package:git_touch/widgets/app_bar_title.dart';
|
||||
import 'package:git_touch/widgets/picker.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CodeSettingsScreen extends StatelessWidget {
|
||||
class CodeThemeScreen extends StatelessWidget {
|
||||
final String code;
|
||||
final String language;
|
||||
|
||||
CodeSettingsScreen(this.code, this.language);
|
||||
CodeThemeScreen(this.code, this.language);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
@ -1,9 +1,11 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter_highlight/theme_map.dart';
|
||||
import 'package:git_touch/models/code.dart';
|
||||
import 'package:git_touch/models/theme.dart';
|
||||
import 'package:git_touch/scaffolds/refresh_stateful.dart';
|
||||
import 'package:git_touch/screens/code_settings.dart';
|
||||
import 'package:git_touch/screens/code_theme.dart';
|
||||
import 'package:git_touch/screens/image_view.dart';
|
||||
import 'package:git_touch/widgets/action_entry.dart';
|
||||
import 'package:git_touch/widgets/app_bar_title.dart';
|
||||
import 'package:git_touch/widgets/link.dart';
|
||||
import 'package:git_touch/widgets/markdown_view.dart';
|
||||
@ -172,12 +174,14 @@ class ObjectScreen extends StatelessWidget {
|
||||
trailingBuilder: (payload) {
|
||||
switch (type) {
|
||||
case 'blob':
|
||||
return Link(
|
||||
child: Icon(Octicons.settings, size: 20),
|
||||
material: false,
|
||||
screenBuilder: payload == null
|
||||
? null
|
||||
: (_) => CodeSettingsScreen(payload['text'], _language),
|
||||
return ActionEntry(
|
||||
iconData: Octicons.settings,
|
||||
onTap: () {
|
||||
if (payload != null) {
|
||||
Provider.of<ThemeModel>(context).pushRoute(context,
|
||||
(_) => CodeThemeScreen(payload['text'], _language));
|
||||
}
|
||||
},
|
||||
);
|
||||
default:
|
||||
return null;
|
||||
|
@ -1,7 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:git_touch/models/theme.dart';
|
||||
import 'package:git_touch/scaffolds/refresh_stateful.dart';
|
||||
import 'package:git_touch/screens/repositories.dart';
|
||||
import 'package:git_touch/widgets/action_entry.dart';
|
||||
import 'package:git_touch/widgets/app_bar_title.dart';
|
||||
import 'package:git_touch/widgets/table_view.dart';
|
||||
import 'package:git_touch/widgets/text_contains_organization.dart';
|
||||
@ -89,12 +91,14 @@ class UserScreen extends StatelessWidget {
|
||||
return [
|
||||
borderView1,
|
||||
if (title != null) TableViewHeader(title),
|
||||
borderView,
|
||||
...join(
|
||||
borderView,
|
||||
items.map((item) {
|
||||
return RepositoryItem(item);
|
||||
}).toList(),
|
||||
)
|
||||
),
|
||||
borderView,
|
||||
];
|
||||
}
|
||||
|
||||
@ -127,6 +131,7 @@ class UserScreen extends StatelessWidget {
|
||||
});
|
||||
|
||||
return Container(
|
||||
color: Colors.white,
|
||||
padding: EdgeInsets.all(10),
|
||||
child: SingleChildScrollView(
|
||||
scrollDirection: Axis.horizontal,
|
||||
@ -147,11 +152,13 @@ class UserScreen extends StatelessWidget {
|
||||
title: AppBarTitle('User'),
|
||||
trailingBuilder: (data) {
|
||||
if (isMe) {
|
||||
return Link(
|
||||
child: Icon(Icons.settings, size: 20),
|
||||
screenBuilder: (_) => SettingsScreen(),
|
||||
material: false,
|
||||
fullscreenDialog: true,
|
||||
return ActionEntry(
|
||||
iconData: Icons.settings,
|
||||
onTap: () {
|
||||
Provider.of<ThemeModel>(context).pushRoute(
|
||||
context, (_) => SettingsScreen(),
|
||||
fullscreenDialog: true);
|
||||
},
|
||||
);
|
||||
} else {
|
||||
return ActionButton(
|
||||
@ -223,8 +230,11 @@ class UserScreen extends StatelessWidget {
|
||||
screenBuilder: (context) => UsersScreen.following(login),
|
||||
),
|
||||
]),
|
||||
borderView,
|
||||
borderView1,
|
||||
borderView,
|
||||
_buildContributions(contributions),
|
||||
borderView,
|
||||
borderView1,
|
||||
TableView(
|
||||
hasIcon: true,
|
||||
@ -270,6 +280,7 @@ class UserScreen extends StatelessWidget {
|
||||
],
|
||||
),
|
||||
..._buildRepos(payload),
|
||||
borderView1,
|
||||
],
|
||||
);
|
||||
},
|
||||
|
@ -8,6 +8,7 @@ import 'package:git_touch/screens/user.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:primer/primer.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
export 'package:flutter_vector_icons/flutter_vector_icons.dart';
|
||||
|
||||
final monospaceFont = Platform.isIOS ? 'Menlo' : 'monospace'; // FIXME:
|
||||
|
25
lib/widgets/action_entry.dart
Normal file
25
lib/widgets/action_entry.dart
Normal file
@ -0,0 +1,25 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:git_touch/models/theme.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class ActionEntry extends StatelessWidget {
|
||||
final IconData iconData;
|
||||
final VoidCallback onTap;
|
||||
ActionEntry({this.iconData, this.onTap});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
switch (Provider.of<ThemeModel>(context).theme) {
|
||||
case AppThemeType.cupertino:
|
||||
return GestureDetector(
|
||||
child: Icon(iconData),
|
||||
onTap: onTap,
|
||||
);
|
||||
default:
|
||||
return IconButton(
|
||||
icon: Icon(iconData),
|
||||
onPressed: onTap,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
@ -10,7 +10,6 @@ class Link extends StatelessWidget {
|
||||
final WidgetBuilder screenBuilder;
|
||||
final Function onTap;
|
||||
final bool material;
|
||||
final bool fullscreenDialog;
|
||||
|
||||
Link({
|
||||
this.child,
|
||||
@ -18,7 +17,6 @@ class Link extends StatelessWidget {
|
||||
this.screenBuilder,
|
||||
this.onTap,
|
||||
this.material = true,
|
||||
this.fullscreenDialog = false,
|
||||
}) : assert(screenBuilder == null || url == null);
|
||||
|
||||
void _onTap(BuildContext context) {
|
||||
@ -26,8 +24,7 @@ class Link extends StatelessWidget {
|
||||
return onTap();
|
||||
}
|
||||
if (screenBuilder != null) {
|
||||
return Provider.of<ThemeModel>(context).pushRoute(context, screenBuilder,
|
||||
fullscreenDialog: fullscreenDialog);
|
||||
return Provider.of<ThemeModel>(context).pushRoute(context, screenBuilder);
|
||||
}
|
||||
if (url != null) {
|
||||
launch(url);
|
||||
|
Loading…
x
Reference in New Issue
Block a user