• 05-06-2022, 18:24:29
    #1
    Arkadaşlar merhaba,

    Flutter ile ilgili bir sorun yaşıyorum. Daha doğrusu hakim olduğum bir dil olmadığı için videolardan bakarak bişeyler yaptım. Tabi videoların eskiliği vs. başıma bela oldu.

    Öncelikle yapmak isteidğimi başaramadığım şeyi yazıyım. Ben webview ile web sitemi uygulamaya çekiyorum. Burada hiçbir sorun yok. Sonra onesignal ekledim. Bu da sorunsuz çalışuıyor. Ama ben onesignal'in her cihaza özel tanımladığı playerid denen id yi almak ve php sayfama post etmek istiyoırum. Bunun için bir çok eklentiyi denedim bir türlü beceremedim. Sonrasında cookie olarak yolladım yine olmadı. Enson webview linkinde get olarka veri yollayabildiğimi farketdim, ama burda da oluşturduğum değişkeni webview kısmına çekemiyor olmam beni çileden çıkardı Aşağıda kodları ekleyip bir uzman arkadaştan yardım istiyorum. Varsa POST ve GET işlemini kolay yapmanın yolu onu da önerebilirsiniz. Şimdiden herkese teşekkürler.

    Aşağıdaki kodda userid olarak tanımlayıp yazdırdığım değişkeni link kısmında alamıyorum. En basitinden bunu yapsam şimdilik işimi görebilir.

    import 'dart:io';
    import 'package:flutter/material.dart';
    import 'package:webview_flutter/webview_flutter.dart';
    import 'package:onesignal_flutter/onesignal_flutter.dart';
    import 'dart:async';
    import 'dart:convert';
    import 'package:http/http.dart' as http;
    import 'package:dio/dio.dart';
    
    void main() async {
    runApp(PnlbaseApp());
    }
    
    class PnlbaseApp extends StatelessWidget {
    // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
    return MaterialApp(
    title: 'PNLBASE APP',
          home: PnlbaseAppPage(),
        );
      }
    
    }
    
    class PnlbaseAppPage extends StatefulWidget {
    PnlbaseAppPage({Key? key}) : super(key: key);
    
      @override
      _PnlbaseAppPageState createState() => _PnlbaseAppPageState();
    
    }
    
    class _PnlbaseAppPageState extends State<PnlbaseAppPage> {
    @override
      void initState() {
    super.initState();
    
        OneSignal.shared.setLogLevel(OSLogLevel.verbose, OSLogLevel.none);
        OneSignal.shared.setAppId("APP-ID");
        OneSignal.shared.promptUserForPushNotificationPermission().then((accepted) {
    print("Accepted permission: $accepted");
        });
    
        OneSignal.shared.getDeviceState().then((deviceState) {
    print("OneSignal: device state: ${deviceState?.jsonRepresentation()}");
          var userid;
          userid = deviceState?.userId;
          print(userid);
    
        });
    
      }
    
    @override
      Widget build(BuildContext context) {
    return Scaffold(
    body: SafeArea(
    top: true,
            child: WebView(
    initialUrl: "https://app.pnlbase.com/login?playerid",
              javascriptMode: JavascriptMode.unrestricted,
            ),
          ),
        );
    
      }
    }
  • 05-06-2022, 18:27:25
    #2
    yigiterdal adlı üyeden alıntı: mesajı görüntüle
    Arkadaşlar merhaba,

    Flutter ile ilgili bir sorun yaşıyorum. Daha doğrusu hakim olduğum bir dil olmadığı için videolardan bakarak bişeyler yaptım. Tabi videoların eskiliği vs. başıma bela oldu.

    Öncelikle yapmak isteidğimi başaramadığım şeyi yazıyım. Ben webview ile web sitemi uygulamaya çekiyorum. Burada hiçbir sorun yok. Sonra onesignal ekledim. Bu da sorunsuz çalışuıyor. Ama ben onesignal'in her cihaza özel tanımladığı playerid denen id yi almak ve php sayfama post etmek istiyoırum. Bunun için bir çok eklentiyi denedim bir türlü beceremedim. Sonrasında cookie olarak yolladım yine olmadı. Enson webview linkinde get olarka veri yollayabildiğimi farketdim, ama burda da oluşturduğum değişkeni webview kısmına çekemiyor olmam beni çileden çıkardı Aşağıda kodları ekleyip bir uzman arkadaştan yardım istiyorum. Varsa POST ve GET işlemini kolay yapmanın yolu onu da önerebilirsiniz. Şimdiden herkese teşekkürler.

    Aşağıdaki kodda userid olarak tanımlayıp yazdırdığım değişkeni link kısmında alamıyorum. En basitinden bunu yapsam şimdilik işimi görebilir.

    import 'dart:io';
    import 'package:flutter/material.dart';
    import 'package:webview_flutter/webview_flutter.dart';
    import 'package:onesignal_flutter/onesignal_flutter.dart';
    import 'dart:async';
    import 'dart:convert';
    import 'package:http/http.dart' as http;
    import 'package:dio/dio.dart';
    
    void main() async {
    runApp(PnlbaseApp());
    }
    
    class PnlbaseApp extends StatelessWidget {
    // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
    return MaterialApp(
    title: 'PNLBASE APP',
          home: PnlbaseAppPage(),
        );
      }
    
    }
    
    class PnlbaseAppPage extends StatefulWidget {
    PnlbaseAppPage({Key? key}) : super(key: key);
    
      @override
      _PnlbaseAppPageState createState() => _PnlbaseAppPageState();
    
    }
    
    class _PnlbaseAppPageState extends State<PnlbaseAppPage> {
    @override
      void initState() {
    super.initState();
    
        OneSignal.shared.setLogLevel(OSLogLevel.verbose, OSLogLevel.none);
        OneSignal.shared.setAppId("APP-ID");
        OneSignal.shared.promptUserForPushNotificationPermission().then((accepted) {
    print("Accepted permission: $accepted");
        });
    
        OneSignal.shared.getDeviceState().then((deviceState) {
    print("OneSignal: device state: ${deviceState?.jsonRepresentation()}");
          var userid;
          userid = deviceState?.userId;
          print(userid);
    
        });
    
      }
    
    @override
      Widget build(BuildContext context) {
    return Scaffold(
    body: SafeArea(
    top: true,
            child: WebView(
    initialUrl: "https://app.pnlbase.com/login?playerid",
              javascriptMode: JavascriptMode.unrestricted,
            ),
          ),
        );
    
      }
    }
    https://app.pnlbase.com/login?playerid olan kismi https://app.pnlbase.com/login?$playerid olarak duzeltin. Bir de onesignal player id asenkron calisip sonucu verir. Yani degiskenin degeri atanmadan webview yuklenir hale gelecektir muhtemelen. Sonuc olarak o degiskeni setledikten sonra webview i load edebilirsiniz.
  • 05-06-2022, 18:31:25
    #3
    erbasaran adlı üyeden alıntı: mesajı görüntüle
    https://app.pnlbase.com/login?playerid olan kismi https://app.pnlbase.com/login?$playerid olarak duzeltin. Bir de onesignal player id asenkron calisip sonucu verir. Yani degiskenin degeri atanmadan webview yuklenir hale gelecektir muhtemelen. Sonuc olarak o degiskeni setledikten sonra webview i load edebilirsiniz.
    Cevap için teşekkür ederim. Ama o şekilde yaptığımda da hataya düşüyor zaten. Birde söylediklerinizden link harici kısımları anlamadım tabi Cahilliğime verin bilmediğim bir kodla boğuşuyorum.

    lib/main.dart:61:55: Error: The getter 'playerid' isn't defined for the class '_PnlbaseAppPageState'.
     - '_PnlbaseAppPageState' is from 'package:pnlbase/main.dart' ('lib/main.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'playerid'.
              initialUrl: "https://app.pnlbase.com/login?$playerid",
                                                          ^^^^^^^^
  • 05-06-2022, 18:54:12
    #4
    yigiterdal adlı üyeden alıntı: mesajı görüntüle
    Cevap için teşekkür ederim. Ama o şekilde yaptığımda da hataya düşüyor zaten. Birde söylediklerinizden link harici kısımları anlamadım tabi Cahilliğime verin bilmediğim bir kodla boğuşuyorum.

    lib/main.dart:61:55: Error: The getter 'playerid' isn't defined for the class '_PnlbaseAppPageState'.
     - '_PnlbaseAppPageState' is from 'package:pnlbase/main.dart' ('lib/main.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'playerid'.
              initialUrl: "https://app.pnlbase.com/login?$playerid",
                                                          ^^^^^^^^
    userid degiskenini yanlis yerde tanimladiniz. İnitstate uzerinde yani disinda tanimlayin. Ama class icinde olacak.
  • 05-06-2022, 19:01:50
    #5
    erbasaran adlı üyeden alıntı: mesajı görüntüle
    userid degiskenini yanlis yerde tanimladiniz. İnitstate uzerinde yani disinda tanimlayin. Ama class icinde olacak.
    Yazım hatamı düzelttim hocam şuan değişkeni görüyor. Teşekkür ederim. Ama boş gitme sorunu var. Onun için de bir şey demiştiniz ama nasıl yapılır bilemedim.
  • 05-06-2022, 19:25:57
    #6
    yigiterdal adlı üyeden alıntı: mesajı görüntüle
    Yazım hatamı düzelttim hocam şuan değişkeni görüyor. Teşekkür ederim. Ama boş gitme sorunu var. Onun için de bir şey demiştiniz ama nasıl yapılır bilemedim.
    Hocam pc de degilim o yuzden cok yardimci olamiyorum. Webview e bir controller vereceksin. Onesignal olayer id yi alabildiginde webview controller sayesinde ilgili url yi load edeceksin. Asagidaki linke benzer birsey de yapilabilir. Asenkron metodun calismasi beklemek gerekmekte.

    https://stackoverflow.com/questions/...ew-fast-enough
  • 05-06-2022, 20:56:01
    #7
    erbasaran adlı üyeden alıntı: mesajı görüntüle
    Hocam pc de degilim o yuzden cok yardimci olamiyorum. Webview e bir controller vereceksin. Onesignal olayer id yi alabildiginde webview controller sayesinde ilgili url yi load edeceksin. Asagidaki linke benzer birsey de yapilabilir. Asenkron metodun calismasi beklemek gerekmekte.

    https://stackoverflow.com/questions/...ew-fast-enough
    Sanırım beynim eridi hocam ) artık okuduğumdan bişey anlamıyorum. Uygun vaktinizde bilgisayardayken el atarsanız çok sevaba geçer. Yoksa ben kurcalamaya devam