Ne yaptıysam yine olmadı. Burası wordpress yazılarını aldığım yer.
import 'package:flutter/material.dart';
import 'package:flutter_wordpress/flutter_wordpress.dart' as wp;
import 'package: ogrenenakademi/db/Services.dart';
import 'package: ogrenenakademi/screens/BlogDetay.dart';
class Blog extends StatefulWidget {
State<StatefulWidget> createState() => BlogSayfasi();
}
class BlogSayfasi extends State<Blog> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
itemCount: posts == null ? 0 : posts.length,
itemBuilder: (BuildContext context, int index) {
return buildPost(index); //Building the posts list view
},
),
);
}
@override
void initState() {
super.initState();
this.getPosts();
}
Widget buildPost(int index) {
return Column(
children: <Widget>[
Card(
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.all(10.0),
child: ListTile(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (BuildContext context) =>
BlogDetay(makale: posts[index].id),
));
},
leading: buildImage(index),
title: Padding(
padding: EdgeInsets.symmetric(vertical: 10.0),
child: Text(posts[index].title.rendered)),
subtitle: Text(posts[index].excerpt.rendered),
),
)
],
),
)
],
);
}
Widget buildImage(int index) {
if (posts[index].featuredMedia == null) {
return Image.network(
'https://ogrenen.com/wp-content/uploads/2020/05/logo.png',
);
}
return Image.network(
posts[index].featuredMedia.mediaDetails.sizes.medium.sourceUrl,
);
}
Future<String> getPosts() async {
var res = await fetchPosts();
setState(() {
posts = res;
});
return "Success!";
}
List<wp.Post> posts;
Future<List<wp.Post>> fetchPosts() async {
var posts = wordPress.fetchPosts(
postParams: wp.ParamsPostList(
context: wp.WordPressContext.view,
postStatus: wp.PostPageStatus.publish,
orderBy: wp.PostOrderBy.date,
order: wp.Order.desc,
),
fetchAuthor: true,
fetchFeaturedMedia: true,
fetchComments: true,
fetchCategories: true,
fetchTags: true,
);
return posts;
}
}Burası da yazı ayrıntılarını paylaştığım yer
import 'package:flutter/material.dart';
class BlogDetay extends StatefulWidget {
final int makale;
BlogDetay({this.makale});
State<StatefulWidget> createState() => Detaylar();
}
class Detaylar extends State<BlogDetay> {
int _makale;
int get makale => _makale;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: IconButton(
icon: Icon(Icons.arrow_back, color: Colors.white),
onPressed: () => Navigator.of(context).pop(),
),
title: Text("Öğrenen Akademi"),
centerTitle: true,
),
body:
Center(
child: Text(makale.toString()),
),
);
}
}
Söylediklerinizle yine yapamadım. Bu arada kodlar çok kötü çıktı özür dilerim.
Buraya kodu atar mısınız?
Push ile giderken buildera gonderidiginiz anonymous function a gonderigiğiniz classa parametre olarak iletmeniz gerekli.
Örnek
Navigator.push(context MaterialPageRoute (builder:(context )=>GonderilecekClass(gonderilecekParametre)));
BlogDetay(makale: posts[index].id),Satırındaki kodda gösterilen makale verisi diğer sayfada null olarak çıkıyor.