VB10 / vboverflow

Yes you can always ask to me anything but do you search problem or can you write any solutions?
123 stars 3 forks source link

JSON Parse #115

Closed berkayhh closed 2 years ago

berkayhh commented 2 years ago

Selamlar elimde olan bir JSON Ciktisini ekranda Web olarak Getx ile göstermeye calisiyorum, kaynak Kodum burada, fakat Webde ekrani Build ettikten Sonra hicbir sekilde ekrana yazi gelmiyor , sadece Pop up olarak actigimda yaziyi görebiliyorum, ekranin build etmesinden önce bir funktionu calistirip sonrasinda ekrani build etmesini nasil yapabiliriz ? Birde JSON ciktisini nasil bir modal haline cevirebilirim, birkac sitede cevirmeyi denedim ama Class larda hep hata cikiyor, Selamlar

`import 'dart:async'; import 'dart:convert';

import 'dart:html' as html;

import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:http/http.dart' as http;

class HomeController extends GetxController { var sendung = "".obs; var title = "".obs; var status = "".obs; var statusCode = "".obs; var timeStamp = "".obs; var description = "".obs; var iconlink = "".obs;

// http://localhost:57174/?origin=689231244273

Future getParams() async { var uri = Uri.dataFromString(html.window.location.href); Map<String, String> params = uri.queryParameters; //var origin = params['origin']; var origin = 689231244273;

sendung.value = origin.toString();
print("Sendungnummer: " + origin.toString());
await getInfo();

}

getInfo() async { print("VERI CEKILMEYE BASLADI");

final response = await http.get(
  Uri.parse(
      'https://api-eu.dhl.com/track/shipments?language=de&trackingNumber=${sendung.value}'),
  headers: {
    'DHL-API-Key': ''**************************************',
  },
);
print("VERI CEKILDI");
var decoded = json.decode(response.body);

print("VERI PARCALANIYOR");

print("Gelen Veri");
// print(decoded['shipments'][0]['status']['statusCode']);
//TITLE
print(decoded);
iconlink.value = "https://icons.parcellab.com/success_standard?color=000";

title.value = decoded['shipments'][0]['status']['status'];
/* status.value = decoded['shipments'][0]['status']['statusCode'];
statusCode.value = decoded['shipments'][0]['status']['statusCode']; */
timeStamp.value = decoded['shipments'][0]['status']['timestamp'];
description.value = decoded['shipments'][0]['status']['description'];
update();
print(title +
    status.value +
    statusCode.value +
    timeStamp.value +
    description.value);
Timer(Duration(seconds: 3), () {
  Get.defaultDialog(
    backgroundColor: Colors.yellow,
    title: "Sendungstatus",
    titleStyle: TextStyle(fontSize: 40),
    content: Container(
      height: Get.height * 0.7,
      width: Get.width * 0.5,
      child: Column(children: [
        Text(
          title.value,
          style: TextStyle(fontSize: 40),
        ),
        Text(
          "ZeitStempel : ${timeStamp.value}",
          style: TextStyle(fontSize: 40),
        ),
      ]),
    ),
    confirm: ElevatedButton(
        onPressed: (() {
          Get.back();
        }),
        child: Text("Schliesen")),
  );
});

}

openUrl(String url) async { html.window.open(url, '_blank'); }

@override void onInit() { super.onInit(); }

@override void onReady() { super.onReady(); }

@override void onClose() { super.onClose(); } }

/ Get.defaultDialog( backgroundColor: Colors.yellow, cancel: Text("Kapat"), title: "Sendungstatus", titleStyle: TextStyle(fontSize: 40), content: Container( height: Get.height 0.7, width: Get.width 0.5, child: Column(children: [ Image.network( "https://icons.parcellab.com/success_standard?color=000", width: 300, height: 300, ), ElevatedButton( onPressed: (() { openUrl( "https://www.dhl.de/de/privatkunden.html?piececode=$sendung"); }), child: Text("Sendung Details")) ]), ), confirm: ElevatedButton( onPressed: (() { Get.back(); }), child: Text("Schliesen")), ); / `

HomeView.dart

`import 'package:flutter/material.dart';

import 'package:get/get.dart';

import '../controllers/home_controller.dart';

class HomeView extends GetView { const HomeView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { //controller.siteAc();

return Scaffold(
    appBar: AppBar(
      title: const Text('Neutrale Produkte Tracking Seite'),
      centerTitle: true,
      backgroundColor: Colors.pink,
    ),
    body: SafeArea(
        child: SingleChildScrollView(
      child: Column(children: [
        const SizedBox(
          height: 40,
        ),
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: [
            Image.network(
              "https://www.kkspro.de/neutral1",
              width: Get.width * 0.2,
              height: Get.height * 0.2,
            ),
            Image.network(
              "https://assets.dpdhl-brands.com/guides/dhl/guides-de/design-basics/logo-and-claim/logo/versions-01.png",
              width: Get.width * 0.2,
              height: Get.height * 0.2,
            )
          ],
        ),
        const SizedBox(
          height: 40,
        ),
        const SizedBox(
          height: 40,
        ),
        Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Image.network(
                "https://icons.parcellab.com/order_processed?color=000"),
            const SizedBox(
              width: 40,
            ),
            Image.network(
                "https://icons.parcellab.com/in_transit?color=000"),
            const SizedBox(
              width: 40,
            ),
            Image.network(
              "https://icons.parcellab.com/success_standard?color=000,",
            ),
          ],
        ),
        Center(
          child: Container(
              decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(20),
                  color: Colors.pink),
              child: Column(
                children: [
                  /*   Image.network(
                    controller.iconlink.value,
                    width: 300,
                    height: 300,
                    scale: 1,
                  ), */

                  Obx(
                    () => Text(
                      controller.title.value,
                      style: TextStyle(fontSize: 40),
                    ),
                  ),
                  Text(
                    controller.status.value,
                    style: TextStyle(fontSize: 40),
                  ),
                  Text(
                    controller.description.value,
                    style: TextStyle(fontSize: 40),
                  ),
                  Text(
                    controller.timeStamp.value,
                    style: TextStyle(fontSize: 40),
                  ),
                ],
              )),
        ),
        ElevatedButton(
            onPressed: (() {
              controller.openUrl(
                  "https://www.dhl.de/de/privatkunden.html?piececode=${controller.sendung}");
            }),
            child: Text("Sendung Details Ansehen")),
        const SizedBox(
          height: 40,
        ),
        const Text(
          "Unsere Beste Angebote für Sie !",
          style: TextStyle(fontSize: 40),
        ),
        SizedBox(
          height: Get.height * 0.3,
          width: Get.width * 0.9,
          child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: [
              Column(
                children: [
                  const Text("Angebot -1"),
                  InkWell(
                    onTap: (() {
                      controller.openUrl(
                          "https://www.neutrale-produkte.de/de/handpflege-seife/95-derma-eco-woman-handcreme-5709954017762.html");
                    }),
                    child: Image.network(
                      "https://www.neutrale-produkte.de/modules/wkwebp/views/img/product/2277-thickbox_default.webp",
                      height: Get.height * 0.1,
                      width: Get.width * 0.2,
                    ),
                  ),
                ],
              ),
              Column(
                children: [
                  const Text("Angebot 2"),
                  InkWell(
                    onTap: (() {
                      controller.openUrl(
                          "https://www.neutrale-produkte.de/de/handpflege-seife/95-derma-eco-woman-handcreme-5709954017762.html");
                    }),
                    child: Image.network(
                      "https://www.neutrale-produkte.de/modules/wkwebp/views/img/product/2277-thickbox_default.webp",
                      height: Get.height * 0.1,
                      width: Get.width * 0.2,
                    ),
                  ),
                ],
              ),
              Column(
                children: [
                  const Text("Angebot 3"),
                  InkWell(
                    onTap: (() {
                      controller.openUrl(
                          "https://www.neutrale-produkte.de/de/handpflege-seife/95-derma-eco-woman-handcreme-5709954017762.html");
                    }),
                    child: Image.network(
                      "https://www.neutrale-produkte.de/modules/wkwebp/views/img/product/2277-thickbox_default.webp",
                      height: Get.height * 0.1,
                      width: Get.width * 0.2,
                    ),
                  ),
                ],
              ),
            ],
          ),
        ),
      ]),
    )));

} } `

Gelen JSON Kodu

{shipments: [{serviceUrl: https://www.dhl.de/de/privatkunden.html?piececode=689231244273&cid=c_dhl_de_352_20205002_151_M040, id: 689231244273, service: parcel-de, origin: {address: {countryCode: DE}}, destination: {address: {countryCode: DE}}, status: {timestamp: 2022-08-22T16:09:00, statusCode: delivered, status: Die Sendung wurde zugestellt., description: Die Sendung wurde zugestellt.}, details: {product: {productName: DHL PAKET, Filial-Routing}, proofOfDeliverySignedAvailable: false, totalNumberOfPieces: 1, pieceIds: [68923124427], weight: {value: 1.37, unitText: kg}}, events: [{timestamp: 2022-08-22T16:09:00, statusCode: delivered, status: Die Sendung wurde zugestellt., description: Die Sendung wurde zugestellt.}, {timestamp: 2022-08-22T08:48:00, statusCode: transit, status: Die Sendung wurde in das Zustellfahrzeug geladen. Die Zustellung erfolgt voraussichtlich heute., description: Die Sendung wurde in das Zustellfahrzeug geladen. Die Zustellung erfolgt voraussichtlich heute.}, {timestamp: 2022-08-20T09:09:00, statusCode: transit, status: Die Zustellung der Sendung verzögert sich. Sie erfolgt in den nächsten Werktagen., description: Die Zustellung der Sendung verzögert sich. Sie erfolgt in den nächsten Werktagen.}, {timestamp: 2022-08-20T01:31:00, location: {address: {addressLocality: Hamburg, Deutschland}}, statusCode: transit, status: Die Sendung ist in der Region des Empfängers angekommen und wird im nächsten Schritt zur Zustellbasis transportiert., description: Die Sendung ist in der Region des Empfängers angekommen und wird im nächsten Schritt zur Zustellbasis transportiert.}, {timestamp: 2022-08-18T19:29:00, location: {address: {addressLocality: Feucht, Deutschland}}, statusCode: transit, status: Die Sendung wurde von DHL bearbeitet und wird für den Weitertransport in die Region des Empfängers vorbereitet., description: Die Sendung wurde von DHL bearbeitet und wird für den Weitertransport in die Region des Empfängers vorbereitet.}, {timestamp: 2022-08-18T15:29:00, statusCode: pre-transit, status: Die Sendung wurde elektronisch angekündigt. Sobald die Sendung von uns bearbeitet wurde, erhalten Sie weitere Informationen., description: Die Sendung wurde elektronisch angekündigt. Sobald die Sendung von uns bearbeitet wurde, erhalten Sie weitere Informationen.}]}], possibleAdditionalShipmentsUrl: [/track/shipments?trackingNumber=689231244273&language=de&service=freight, /track/shipments?trackingNumber=689231244273&language=de&service=dgf, /track/shipments?trackingNumber=689231244273&language=de&service=ecommerce, /track/shipments?trackingNumber=689231244273&language=de&service=parcel-nl, /track/shipments?trackingNumber=689231244273&language=de&service=parcel-pl, /track/shipments?trackingNumber=689231244273&language=de&service=express, /track/shipments?trackingNumber=689231244273&language=de&service=post-de, /track/shipments?trackingNumber=689231244273&language=de&service=sameday, /track/shipments?trackingNumber=689231244273&language=de&service=parcel-uk, /track/shipments?trackingNumber=689231244273&language=de&service=ecommerce-apac, /track/shipments?trackingNumber=689231244273&language=de&service=ecommerce-europe]}

sinanhaci commented 2 years ago

Siz açılan dialogda mı apiden gelen bilgileri göstermek istiyorsunuz yoksa mevcut sayfada mı?