• 02-05-2020, 19:48:54
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Bir uygulama geliştirmeye çalışıyorum kendi çapımda. Daha çok dili öğrenme amaçlı. Fakat tüm kaynaklara bakmama rağmen bir sayfadan diğer sayfaya veri aktaramadım. Yardımcı olabilecek olan var mı?
  • 02-05-2020, 19:53:28
    #2
    Buraya kodu atar mısınız?
  • 02-05-2020, 19:53:55
    #3
    https://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, 20:20:43
    #4
    Push ile giderken buildera gonderidiginiz anonymous function a gonderigiğiniz classa parametre olarak iletmeniz gerekli.

    Örnek
    Navigator.push(context MaterialPageRoute (builder:(context )=>GonderilecekClass(gonderilecekParametre)));
  • 02-05-2020, 22:14:29
    #5
    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.

    maliyassi adlı üyeden alıntı: mesajı görüntüle
    Buraya kodu atar mısınız?
    Mily10suz adlı üyeden alıntı: mesajı görüntüle
    https://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.
    Baykan adlı üyeden alıntı: mesajı görüntüle
    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.
  • 02-05-2020, 22:27:57
    #6
    asimus adlı üyeden alıntı: mesajı görüntüle
    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.










    BlogDetay(makale: posts[index].id),Satırındaki kodda gösterilen makale verisi diğer sayfada null olarak çıkıyor.
    Kodunuzu düzenleyip atarsanız bakayım böyle okuması baya zor.

    Classda default constructor ı override edip ilgili named parametreyi yazdınız değil mi?
  • 02-05-2020, 22:35:23
    #7
    Baykan adlı üyeden alıntı: mesajı görüntüle
    Kodunuzu düzenleyip atarsanız bakayım böyle okuması baya zor.

    Classda default constructor ı override edip ilgili named parametreyi yazdınız değil mi?

    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:46
    #8
    Gö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:40
    #9
    maliyassi adlı üyeden alıntı: mesajı görüntüle
    Gö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?

    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.