رونمایی از پخته‌ترین و کاربردی‌ترین محصولات آموزشی سون‌لرن با کلی آفرهای ویژه🔥
۰ ثانیه
۰ دقیقه
۰ ساعت
۶ mehdiwaysi
data رو کجا تعریف کردیم ؟؟
جامعه فلاتر ایجاد شده در ۲۴ خرداد ۱۴۰۲

سلام. توی کلاس ShippingScreen وقتی میخواییم orderId رو پاس بدیم به PaymentReceiptScreen وقتی مینویسیم event,data,orderId این دیتا رو کجا تعریف کردیم ؟

وقتی این دیتا رو مینویسم ایراد میگیره میگه تعریف نشده

سلام وقت بخیر

داخل bloc صفحه shipping وقتی حالت success رو نگاه کنید یه مقداری رو داره برمیگردونه و در این ویدیو وقتی داریم به stream گوش میدیم منظور از کلمه event همون state هست استاد فراموش کردن تغییر نام بدن و بعد مقدار orderId رو از داخل دیتایی که در حالت success داره برمیگرده دارن پاس میدن به صفحه بعدی

موفق باشید

محمد حسین سخایی ۲۵ خرداد ۱۴۰۲، ۱۱:۰۶
PaymentReceiptScreen(orderId: event.data.orderId)));

حالا باید به جای دیتا چی بنویسیم؟

وقتی دیتا مینویسیم ارور میده

mehdiwaysi ۲۵ خرداد ۱۴۰۲، ۱۱:۴۷

باید عکس کدتون باشه تا بببینم علت چیه

یا اینکه به ایدی بنده پیام بدید انی دسک بزنیم مشکل رو حل کنیم

Mohammadhosein_sakhaei@


محمد حسین سخایی ۲۷ خرداد ۱۴۰۲، ۰۶:۵۸
import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:nike_32/data/order.dart';
import 'package:nike_32/data/repo/order_repository.dart';
import 'package:nike_32/ui/cart/price_info.dart';
import 'package:nike_32/ui/receipt/payment_receipt.dart';
import 'package:nike_32/ui/shipping/shipping_bloc.dart';
class ShippingScreen extends StatefulWidget {
  final int payablePrice;
  final int shippingCost;
  final int totalPrice;
  const ShippingScreen({
    super.key,
    required this.payablePrice,
    required this.shippingCost,
    required this.totalPrice,
  });
  @override
  State<ShippingScreen> createState() => _ShippingScreenState();
}
class _ShippingScreenState extends State<ShippingScreen> {
  final TextEditingController firstNameController =
      TextEditingController(text: 'شاهین');
  final TextEditingController lastNameController =
      TextEditingController(text: 'شاهینی');
  final TextEditingController phoneNumberController =
      TextEditingController(text: '09182879791');
  final TextEditingController postalCodeController =
      TextEditingController(text: '1234567890');
  final TextEditingController addressController =
      TextEditingController(text: 'حمالاوssfsffderfdfddsdccs');
  StreamSubscription? subscription;
  @override
  void dispose() {
    subscription?.cancel();
    super.dispose();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('تحویل گیرنده'),
          centerTitle: false,
        ),
        body: BlocProvider<ShippingBloc>(
          create: (context) {
            final bloc = ShippingBloc(orderRepository);
            subscription = bloc.stream.listen((event) {
              if (event is ShippingSuccess) {
                Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (context) =>
                        PaymentReceiptScreen(orderId: event.date.orderId),
                  ),
                );
              } else if (event is ShippingError) {
                ScaffoldMessenger.of(context).showSnackBar(
                    SnackBar(content: Text(event.appException.massage)));
              }
            });
            return bloc;
          },
          child: SingleChildScrollView(
            padding: const EdgeInsets.all(16),
            child: Column(
                crossAxisAlignment: CrossAxisAlignment.center,
                children: [
                  TextField(
                    controller: firstNameController,
                    decoration: const InputDecoration(
                      label: Text('نام '),
                    ),
                  ),
                  const SizedBox(
                    height: 12,
                  ),
                  TextField(
                    controller: lastNameController,
                    decoration: const InputDecoration(
                      label: Text(' نام خانوادگی'),
                    ),
                  ),
                  const SizedBox(
                    height: 12,
                  ),
                  TextField(
                    controller: phoneNumberController,
                    decoration: const InputDecoration(
                      label: Text('شماره تماس'),
                    ),
                  ),
                  const SizedBox(
                    height: 12,
                  ),
                  TextField(
                    controller: postalCodeController,
                    decoration: const InputDecoration(
                      label: Text('کد پستی'),
                    ),
                  ),
                  const SizedBox(
                    height: 12,
                  ),
                  TextField(
                    controller: addressController,
                    decoration: const InputDecoration(
                      label: Text('آدرس'),
                    ),
                  ),
                  PriceInfo(
                      payablePrice: widget.payablePrice,
                      shippingCost: widget.shippingCost,
                      totalPrice: widget.totalPrice),
                  BlocBuilder<ShippingBloc, ShippingState>(
                    builder: (context, state) {
                      return state is ShippingLoading
                          ? const Center(
                              child: CupertinoActivityIndicator(),
                            )
                          : Row(
                              mainAxisAlignment: MainAxisAlignment.center,
                              children: [
                                OutlinedButton(
                                  onPressed: () {
                                    BlocProvider.of<ShippingBloc>(context).add(
                                      ShippingCreateOrder(
                                        SubmitOrderParams(
                                            firstNameController.text,
                                            lastNameController.text,
                                            phoneNumberController.text,
                                            postalCodeController.text,
                                            addressController.text,
                                            PaymentMethod.cashOnDelivery),
                                      ),
                                    );
                                  },
                                  child: const Text('پرداخت در محل'),
                                ),
                                const SizedBox(
                                  width: 16,
                                ),
                                ElevatedButton(
                                  onPressed: () {},
                                  child: const Text('پرداخت اینترنتی'),
                                ),
                              ],
                            );
                    },
                  ),
                ]),
          ),
        ));
  }
}

این کد‌های کلاس شیپینگ اسکرینم هست

وقتی از data استفاده میکنم ارور میده ..میتونم به جای data از result استفاده کنم ؟؟

mehdiwaysi ۲۷ خرداد ۱۴۰۲، ۱۷:۲۰

The getter 'data' isn't defined for the type 'ShippingSuccess'. (Documentation) Try importing the library that defines 'data', correcting the name to the name of an existing getter, or defining a getter or field named 'data' این متن اروری هست که میده

mehdiwaysi ۲۷ خرداد ۱۴۰۲، ۱۷:۲۲

از داخل کلاس shipping state و تمام کد هاش هم لطفا عکس ارسال بفرمایید

عکس کلاس bloc. هم بفرستید لطفا

محمد حسین سخایی ۲۸ خرداد ۱۴۰۲، ۰۷:۵۶