Flutter'da yarımcı olabilecek var mı?
8
●228
- 02-05-2020, 19:53:55https://flutter.dev/docs/cookbook/na...n/passing-data
Burada anlatmış. Mantık basit, yeni sayfada zorunlu bir değişken tanımlayıp ilk sayfada yeni sayfaya geçerken göndermen lazım. - 02-05-2020, 22:14:29Ne 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.
maliyassi adlı üyeden alıntı: mesajı görüntüleMily10suz adlı üyeden alıntı: mesajı görüntüleBaykan adlı üyeden alıntı: mesajı görüntüle
BlogDetay(makale: posts[index].id),Satırındaki kodda gösterilen makale verisi diğer sayfada null olarak çıkıyor. - 02-05-2020, 22:27:57Kodunuzu düzenleyip atarsanız bakayım böyle okuması baya zor.asimus adlı üyeden alıntı: mesajı görüntüle
Classda default constructor ı override edip ilgili named parametreyi yazdınız değil mi? - 02-05-2020, 22:35:23Baykan adlı üyeden alıntı: mesajı görüntüle
Kodu düzenledim şimdi. Daha basit düzeyde söylerseniz yapıp yapmadığımı kontrol edebilirim
Daha işin çok başındayım
- 02-05-2020, 23:24:46Gördüğüm ve anlayabildiğim kadarıyla BlogDetay sayfasına siz yazının index değerini integer olarak taşıyorsunuz ve o sayfada body kısmına bu id değeri sayısal olarak yazdırılıyor doğru mu? Sizin istediğiniz metni yapmak değil mi?
Peki buradaki index değerinin karşılığı tam olarak nedir? - 02-05-2020, 23:30:40maliyassi adlı üyeden alıntı: mesajı görüntüle
Hayır diğer tarafa (BlogDetay) id değerini taşımak istiyorum. Ama sürekli null dönüyor. Ekrana yazdırma nedenim ise ne döndüğünü görebilmek. Daha sonra ilgili id değerine göre makaleyi çekeceğim. Fakat o kadar çok kaynağa baktım ki kafam karıştı get set final durumları işin içine girdi falan filan.
Tamam düzelttim aslında @baykan ın dediği gibiymiş. Üst kısmı aşağıdaki gibi yapınca düzeldi.
import 'package:flutter/material.dart'; class BlogDetay extends StatelessWidget { final int makale; BlogDetay({Key key, @required this.makale}) : super(key: key); @override Widget build(BuildContext context) {get set veya final ile çok karıştırmışım ben.
Daha işin çok başındayım