mirror of
https://github.com/git-touch/git-touch
synced 2025-02-21 14:01:02 +01:00
refactor: extract all avatar to one widget
This commit is contained in:
parent
549ef0fa15
commit
3de4ead6b2
@ -6,7 +6,8 @@ import '../utils/constants.dart';
|
|||||||
import '../widgets/link.dart';
|
import '../widgets/link.dart';
|
||||||
import '../widgets/loading.dart';
|
import '../widgets/loading.dart';
|
||||||
import '../models/account.dart';
|
import '../models/account.dart';
|
||||||
import 'login_gitlab.dart';
|
import '../widgets/avatar.dart';
|
||||||
|
// import 'login_gitlab.dart';
|
||||||
|
|
||||||
class LoginScreen extends StatefulWidget {
|
class LoginScreen extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
@ -29,11 +30,7 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||||||
border: Border(bottom: BorderSide(color: Colors.black12)),
|
border: Border(bottom: BorderSide(color: Colors.black12)),
|
||||||
),
|
),
|
||||||
child: Row(children: <Widget>[
|
child: Row(children: <Widget>[
|
||||||
CircleAvatar(
|
Avatar(url: account.avatarUrl, size: 24),
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
backgroundImage: NetworkImage(account.avatarUrl),
|
|
||||||
radius: 24,
|
|
||||||
),
|
|
||||||
Padding(padding: EdgeInsets.only(left: 10)),
|
Padding(padding: EdgeInsets.only(left: 10)),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -209,11 +209,7 @@ class _UserScreenState extends State<UserScreen> {
|
|||||||
child: Row(
|
child: Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Avatar(
|
Avatar(url: payload['avatarUrl'], size: 28),
|
||||||
login: widget.login,
|
|
||||||
url: payload['avatarUrl'],
|
|
||||||
size: 28,
|
|
||||||
),
|
|
||||||
Padding(padding: EdgeInsets.only(left: 10)),
|
Padding(padding: EdgeInsets.only(left: 10)),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -4,6 +4,7 @@ import '../providers/settings.dart';
|
|||||||
import '../utils/utils.dart';
|
import '../utils/utils.dart';
|
||||||
import '../widgets/link.dart';
|
import '../widgets/link.dart';
|
||||||
import '../screens/user.dart';
|
import '../screens/user.dart';
|
||||||
|
import '../widgets/avatar.dart';
|
||||||
|
|
||||||
class UsersScreen extends StatefulWidget {
|
class UsersScreen extends StatefulWidget {
|
||||||
final String login;
|
final String login;
|
||||||
@ -54,11 +55,7 @@ class _UsersScreenState extends State<UsersScreen> {
|
|||||||
padding: EdgeInsets.all(10),
|
padding: EdgeInsets.all(10),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
CircleAvatar(
|
Avatar(url: payload['avatarUrl']),
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
backgroundImage: NetworkImage(payload['avatarUrl']),
|
|
||||||
radius: 18,
|
|
||||||
),
|
|
||||||
Padding(padding: EdgeInsets.only(left: 10)),
|
Padding(padding: EdgeInsets.only(left: 10)),
|
||||||
Text(payload['login'], style: TextStyle(fontSize: 18))
|
Text(payload['login'], style: TextStyle(fontSize: 18))
|
||||||
],
|
],
|
||||||
|
@ -4,32 +4,38 @@ import '../screens/user.dart';
|
|||||||
import 'link.dart';
|
import 'link.dart';
|
||||||
|
|
||||||
class Avatar extends StatelessWidget {
|
class Avatar extends StatelessWidget {
|
||||||
final String login;
|
|
||||||
final String url;
|
final String url;
|
||||||
|
final String login;
|
||||||
final double size;
|
final double size;
|
||||||
|
|
||||||
Avatar({
|
Avatar({
|
||||||
@required this.login,
|
|
||||||
@required this.url,
|
@required this.url,
|
||||||
this.size = 18,
|
this.size = 18,
|
||||||
|
this.login,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Link(
|
var avatar = ClipRRect(
|
||||||
screenBuilder: (_) => UserScreen(login),
|
borderRadius: BorderRadius.circular(size),
|
||||||
child: ClipRRect(
|
child: FadeInImage.assetNetwork(
|
||||||
borderRadius: BorderRadius.circular(size),
|
placeholder: 'images/octoface.png',
|
||||||
child: FadeInImage.assetNetwork(
|
image: url,
|
||||||
placeholder: 'images/octoface.png',
|
width: 2 * size,
|
||||||
image: url,
|
height: 2 * size,
|
||||||
width: 2 * size,
|
fadeInDuration: Duration(milliseconds: 200),
|
||||||
height: 2 * size,
|
fadeOutDuration: Duration(milliseconds: 100),
|
||||||
fadeInDuration: Duration(milliseconds: 200),
|
|
||||||
fadeOutDuration: Duration(milliseconds: 100),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
material: false,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (login == null) {
|
||||||
|
return avatar;
|
||||||
|
} else {
|
||||||
|
return Link(
|
||||||
|
screenBuilder: (_) => UserScreen(login),
|
||||||
|
child: avatar,
|
||||||
|
material: false,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,9 +14,9 @@ class CommentItem extends StatelessWidget {
|
|||||||
return Column(children: <Widget>[
|
return Column(children: <Widget>[
|
||||||
Row(children: <Widget>[
|
Row(children: <Widget>[
|
||||||
Avatar(
|
Avatar(
|
||||||
login: payload['author']['login'],
|
|
||||||
url: payload['author']['avatarUrl'],
|
url: payload['author']['avatarUrl'],
|
||||||
size: 16,
|
size: 16,
|
||||||
|
login: payload['author']['login'],
|
||||||
),
|
),
|
||||||
Padding(padding: EdgeInsets.only(left: 6)),
|
Padding(padding: EdgeInsets.only(left: 6)),
|
||||||
Expanded(
|
Expanded(
|
||||||
|
@ -66,7 +66,7 @@ class EventItem extends StatelessWidget {
|
|||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Row(
|
Row(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Avatar(login: event.actorLogin, url: event.actorAvatarUrl),
|
Avatar(url: event.actorAvatarUrl, login: event.actorLogin),
|
||||||
Padding(padding: EdgeInsets.only(left: 10)),
|
Padding(padding: EdgeInsets.only(left: 10)),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: RichText(
|
child: RichText(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user