Ich habe einen WordPress-Blog und versuche, eine App für diesen Blog zu erstellen. Während ich eine API für das Blog verwende, kann ich nicht den richtigen Codesatz finden, um Bilder abzurufen, die sich zwischen dem Blog befinden. Ich habe das vorgestellte Bild des Blogs abgerufen, aber das Problem besteht darin, die Bilder zwischen Absatztext abzurufen. Im Moment bekomme ich solche Texte anstelle der Bilder. Screenshots anbei.
Zweitens bekomme ich beim Abrufen des Textes die Tags zusammen mit dem Text, also wie kann ich diese Tags entfernen. Screenshot anbei.
Hier ist mein Code, den ich verwende, um all diese abzurufen:
import 'package:flutter/material.dart';
import 'package:thewritingparadigm/screens/post_details.dart';
import 'package:thewritingparadigm/service/post_data.dart';
class LatestPost extends StatefulWidget {
const LatestPost({Key? key}) : super(key: key);
@override
State<LatestPost> createState() => _LatestPostState();
}
class _LatestPostState extends State<LatestPost> {
Post postService = Post();
@override
Widget build(BuildContext context) {
return FutureBuilder<List>(
future: postService.getAllPost(),
builder: (context, snapshot) {
if (snapshot.hasData) {
if (snapshot.data!.isEmpty) {
return const Center(child: Text("No Post Available"));
}
return ListView.builder(
shrinkWrap: true,
itemCount: snapshot.data?.length,
itemBuilder: (context, i) {
return Card(
child: ListTile(
title: Column(
children: [
const SizedBox(
height: 20.0,
),
SizedBox(
width: double.infinity,
height: 250.0,
child: Image.network(snapshot.data![i]["_embedded"]
!["wp:featuredmedia"][0]["source_url"]),
),
const SizedBox(
height: 15.0,
),
Text(
snapshot.data![i]['title']['rendered'],
style: const TextStyle(
fontSize: 25.0,
fontWeight: FontWeight.bold,
),
),
],
),
subtitle: Container(
padding: const EdgeInsets.only(
left: 5.0, right: 5.0, bottom: 25.0),
child: Text(
snapshot.data![i]['content']['rendered']
.toString()
.replaceAll("<p>", "")
.replaceAll("</p>", ""),
maxLines: 4,
overflow: TextOverflow.ellipsis,
style: const TextStyle(fontSize: 16.0),
),
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
PostDetails(data: snapshot.data?[i]),
),
);
},
),
);
});
} else if (snapshot.hasError) {
return Center(
child: Text(snapshot.error.toString()),
);
} else {
return const Center(
child: CircularProgressIndicator(),
);
}
},
);
}
}
Ich verstehe dein Problem nicht, kannst du es kurz erklären?
– Ravindra S. Patil
31. Mai um 4:40 Uhr
Hey! Ich habe meine Frage aktualisiert, ich hoffe, ich habe mein Problem vermittelt, damit Sie mir helfen können.
– Bhaskar2510
31. Mai um 12:01 Uhr
Ich denke, Sie rufen Ihre API-Antwort als HTML-Block ab. Bitte erhalten Sie Ihre API-Antwort als JSON-Objekt.
– Shawon
31. Mai um 15:06 Uhr
Eigentlich verwende ich die API zum ersten Mal. Wenn Sie mir einige Beispiele geben könnten, wäre es großartig, wenn sie aus meinem Code selbst stammen würden.
– Bhaskar2510
31. Mai um 15:14 Uhr
Wie Huthaifa sagte, erhalten Sie den HTML-Inhalt der Website. Wenn ich in Ihrer Situation wäre, würde ich eine API mit Python erstellen
Flask
das kratzt die Website mitBeautifulSoup4
und gibt nur die erforderlichen Informationen zurück.– Pyzard
2. Juni um 6:43