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