import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:http/http.dart'; import 'package:solaragent/models/feed.dart'; import 'package:solaragent/widgets/feed.dart'; class PostScreen extends StatefulWidget { final Client client = Client(); final String modelType; final String alias; PostScreen({super.key, required this.modelType, required this.alias}); @override State createState() => _PostScreenState(); } class _PostScreenState extends State { Future pullPost(BuildContext context) async { var uri = Uri.parse( "https://co.solsynth.dev/api/p/${widget.modelType}s/${widget.alias}", ); var res = await widget.client.get(uri); if (res.statusCode != 200) { var err = utf8.decode(res.bodyBytes); ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text("Something went wrong... $err")), ); return null; } else { return Feed.fromJson(jsonDecode(utf8.decode(res.bodyBytes))); } } Widget buildItem(BuildContext context, Feed item) { return FeedItem( item: item, brief: false, ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text("Post")), body: FutureBuilder( future: pullPost(context), builder: (context, snapshot) { if (snapshot.hasData && snapshot.data != null) { return SingleChildScrollView( child: buildItem(context, snapshot.data!), ); } else { return const Center( child: CircularProgressIndicator(), ); } }, ), ); } }