Skip to content

Commit

Permalink
account page amended, image support in posts started
Browse files Browse the repository at this point in the history
  • Loading branch information
yukiterunamaana committed May 22, 2024
1 parent 0452e2c commit ca47b5d
Show file tree
Hide file tree
Showing 8 changed files with 158 additions and 65 deletions.
2 changes: 2 additions & 0 deletions lib/globals.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ Color? selectedItemColor = Colors.amber;
Color? activatedReactionColor = Colors.red;
Color bgColor = Colors.amber;

bool animationsEnabled = false;

int postsPerRequest = 20; //max 40, default 20
const String myAccount = '112282440600157454';
MastodonApi mstdn =
Expand Down
25 changes: 0 additions & 25 deletions lib/myapp.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import 'package:aadj/widgets/bottom_navigation_bar.dart';
import 'package:aadj/widgets/notif_receiver.dart';
import 'package:aadj/widgets/notification_widget.dart';
import 'package:flutter/material.dart';

class MyApp extends StatelessWidget {
Expand All @@ -20,26 +18,3 @@ class MyApp extends StatelessWidget {
//const NotificationWidget(notificationId: '275311914'));
}
}

//
// class MyApp extends StatelessWidget {
// const MyApp({super.key});
//
// // This widget is the root of your application.
// @override
// Widget build(BuildContext context) {
// return MaterialApp(
// title: 'Flutter Demo',
// theme: ThemeData(
// //colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
// useMaterial3: true,
// ),
// home: //AccountWidget(accountId: myAccount,)
// ComposeStatusWidget(), //NotificationPageWidget(),
// //HomePageWidget(),
// //MastodonPostView(
// // statusId: '112423096960509063'), //'112366576807601174'),
// //'112365754229630507'),
// );
// }
// }
19 changes: 9 additions & 10 deletions lib/pages/account_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import 'package:aadj/widgets/account_view.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
import 'package:mastodon_api/mastodon_api.dart';
import '../globals.dart';
import '../widgets/post_view.dart';

Expand Down Expand Up @@ -82,15 +81,15 @@ class AccountPageWidgetState extends State<AccountPageWidget> {
SliverList(
delegate: SliverChildListDelegate([
AccountPropertiesWidget(accountId: widget.accountId),
// PagedListView<int, StatusWidget>(
// pagingController: pagingController,
// builderDelegate: PagedChildBuilderDelegate<StatusWidget>(
// animateTransitions: true,
// itemBuilder: (context, item, index) => StatusWidget(
// statusId: item.statusId,
// ),
// ),
// ),
PagedListView<int, StatusWidget>(
pagingController: pagingController,
builderDelegate: PagedChildBuilderDelegate<StatusWidget>(
animateTransitions: true,
itemBuilder: (context, item, index) => StatusWidget(
statusId: item.statusId,
),
),
),
]),
),
],
Expand Down
3 changes: 0 additions & 3 deletions lib/pages/home_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,6 @@ class HomePageWidgetState extends State<HomePageWidget> {

@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
title: const Text('trending'),
),
body: RefreshIndicator(
onRefresh: () => Future.sync(pagingController.refresh),
child: PagedListView<int, StatusWidget>(
Expand Down
9 changes: 3 additions & 6 deletions lib/pages/notification_page.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import 'package:aadj/widgets/post_view.dart';
import 'package:flutter/material.dart';
import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
import 'package:mastodon_api/mastodon_api.dart';

import '../globals.dart';
import '../widgets/notif_receiver.dart';
import '../widgets/notification_widget.dart';

class NotificationPageWidget extends StatefulWidget {
Expand Down Expand Up @@ -32,10 +29,10 @@ class NotificationPageWidgetState extends State<NotificationPageWidget> {
final response = await mstdn.v1.notifications.lookupNotifications();
List responseList = response.data;
print('OVER HERE!');
print(responseList);
print(responseList.map);
final notifList = responseList
.map((data) => NotificationWidget(
notificationId: data.id,
notificationData: data,
))
.toList();
final isLastPage = notifList.length < postsPerRequest;
Expand Down Expand Up @@ -69,7 +66,7 @@ class NotificationPageWidgetState extends State<NotificationPageWidget> {
builderDelegate: PagedChildBuilderDelegate<NotificationWidget>(
animateTransitions: true,
itemBuilder: (context, item, index) => NotificationWidget(
notificationId: item.notificationId,
notificationData: item.notificationData,
)),
),
),
Expand Down
61 changes: 57 additions & 4 deletions lib/widgets/account_view.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
import 'package:mastodon_api/mastodon_api.dart';
import '../globals.dart';

Expand Down Expand Up @@ -46,6 +47,12 @@ class _AccountPropertiesWidgetState extends State<AccountPropertiesWidget> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
animationsEnabled
? Image.network(account.header)
: Image.network(account.headerStatic),
animationsEnabled
? Image.network(account.avatar)
: Image.network(account.avatarStatic),
Text(
account.username,
style: tagStyle,
Expand All @@ -54,10 +61,56 @@ class _AccountPropertiesWidgetState extends State<AccountPropertiesWidget> {
account.displayName,
style: tagStyle,
),
// Text(
// account.note,
// style: contentStyle,
// ),

account.acct != account.username
? Text(
account.acct,
style: tagStyle,
)
: Text(''),
Text(
account.note,
style: tagStyle,
),
Text('${account.followersCount} followers'),
Text('${account.followingCount} followings'),
Text('${account.statusesCount} statuses'),
Column(
children: account.fields.map((entry) {
return Container(
decoration: const BoxDecoration(
border: Border(
top: BorderSide(
width: 1.0,
color: Colors.black,
),
),
),
child: Row(
children: [
Expanded(
flex: 5,
child: Text(entry.name,
overflow: TextOverflow.ellipsis),
),
Expanded(
flex: 7,
child: HtmlWidget(entry.value),
),
],
),
);
}).toList(),
),

Text(
'Created at: ${account.createdAt.month}/${account.createdAt.day}/${account.createdAt.year}')

//@JsonKey(name: 'locked') bool? isLocked,
//@JsonKey(name: 'bot') bool? isBot,

/// When the most recent status was posted.
//DateTime? lastStatusAt,
],
),
),
Expand Down
70 changes: 70 additions & 0 deletions lib/widgets/image_with_description.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import 'package:flutter/material.dart';

class ImageWithDescription extends StatefulWidget {
@override
ImageWithDescriptionState createState() => ImageWithDescriptionState();
}

class ImageWithDescriptionState extends State<ImageWithDescription> {
late String _imageUrl;
late String _description;

@override
void initState() {
super.initState();

//_mastodonApi = MastodonApi('https://mastodon.social');
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Mastodon Image Description'),
),
body: Center(
child: Stack(
children: [
Image.network(_imageUrl),
Positioned(
bottom: 16,
right: 16,
child: Visibility(
visible: _description != "",
child: Container(
padding: const EdgeInsets.all(8),
decoration: BoxDecoration(
color: Colors.black.withOpacity(0.6),
borderRadius: BorderRadius.circular(4),
),
child: Text(
_description,
style: const TextStyle(color: Colors.white),
),
),
),
),
Positioned(
bottom: 16,
left: 16,
child: _description != ""
? SizedBox()
: ElevatedButton(
onPressed: () {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(_description),
));
},
child: Text('Description'),
),
),
],
),
),
// floatingActionButton: FloatingActionButton(
// onPressed: _fetchRandomImage,
// tooltip: 'Fetch Random Image',
// ),
);
}
}
34 changes: 17 additions & 17 deletions lib/widgets/notification_widget.dart
Original file line number Diff line number Diff line change
@@ -1,40 +1,39 @@
import 'package:aadj/globals.dart';
import 'package:aadj/widgets/post_bottom_bar.dart';
import 'package:aadj/widgets/post_view.dart';
import 'package:flutter/material.dart';
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
import 'package:mastodon_api/mastodon_api.dart' as mastodon;

class NotificationWidget extends StatefulWidget {
final String notificationId;
final Notification notificationData;

const NotificationWidget({super.key, required this.notificationId});
const NotificationWidget({super.key, required this.notificationData});

@override
_NotificationWidgetState createState() => _NotificationWidgetState();
}

class _NotificationWidgetState extends State<NotificationWidget> {
late Future<mastodon.Notification> _futureNotification;

Future<mastodon.Notification>? get notificationData => null;
//I HATE flutter\packages\flutter\lib\src\widgets\notification_listener.dart
//I HATE flutter\packages\flutter\lib\src\widgets\notification_listener.dart

@override
void initState() {
super.initState();
_futureNotification = _fetchNotification();
_futureNotification = notificationData!; //_fetchNotification();
}

Future<mastodon.Notification> _fetchNotification() async {
try {
final response = await mstdn.v1.notifications
.lookupNotification(notificationId: widget.notificationId);
return response.data;
} on mastodon.MastodonException catch (e) {
print(e.toString());
return Future.error(e);
}
}
// Future<mastodon.Notification> _fetchNotification() async {
// try {
// final response = await mstdn.v1.notifications
// .lookupNotification(notificationId: widget.notificationData);
// return response.data;
// } on mastodon.MastodonException catch (e) {
// print(e.toString());
// return Future.error(e);
// }
// }

@override
Widget build(BuildContext context) {
Expand Down Expand Up @@ -83,7 +82,8 @@ class _NotificationWidgetState extends State<NotificationWidget> {
),
const SizedBox(height: 8),
notification.status != null
? StatusWidget(statusId: 'notification.status.id')
? const StatusWidget(
statusId: 'notification.status.id')
: const SizedBox(height: 0),
],
),
Expand Down

0 comments on commit ca47b5d

Please sign in to comment.