FLUTTER - ЭЛЕМЕНТ ВЫЗОВА ОТ СПИСКА К ДРУГОМУ КЛАССУ - PullRequest
0 голосов
/ 18 июня 2020

Я работаю над проектом, который будет в сети, и я хочу вызвать элемент «бренд» списка в AppBar, но я не могу этого сделать, он работает с нулевым значением. Я использовал ListView.builder в качестве списка, и когда я нажимаю элемент списка, он открывает новую страницу, я хочу вызвать элемент «бренд», который я щелкнул из другого класса в AppBar. Коды ниже, пожалуйста, помогите мне:

final HAVUZ_DATA = [
  HavuzData(
    id: 'User1',
    imageUrl: 'assets/images/arac1.jpeg',
    brand: 'Volkswagen',
    model: 'MULTIVAN 2.5 TDI COMFORTLINE',
    licensePlate: '34AAA3434',
    year: '2011',
    city: 'İstanbul',
    district: 'Bahçelievler',
    authorities: '20040601419',
    status: 'Ekspertiz yapıldı, Dosya sorumlusuna gönderildi.',
  ),
  HavuzData(
    id: 'User2',
    imageUrl: 'assets/images/arac2.jpg',
    brand: 'BMW',
    model: '420',
    licensePlate: '34ABC3434',
    year: '2018',
    city: 'İstanbul',
    district: 'Bakırköy',
    authorities: '20040601419',
    status: 'Ekspertiz yapıldı, Dosya sorumlusuna gönderildi.',
  )
];

class HavuzData {
  final String id;
  final String imageUrl;
  final String brand;
  final String model;
  final String licensePlate;
  final String year;
  final String city;
  final String district;
  final String authorities;
  final String status;

  const HavuzData({
    this.id,
    this.imageUrl,
    this.brand,
    this.model,
    this.licensePlate,
    this.year,
    this.city,
    this.district,
    this.authorities,
    this.status,
  });
}

и я хочу позвонить из этого класса:

class HavuzDetay extends StatefulWidget {
  @override
  _HavuzDetayState createState() => _HavuzDetayState();
}

class _HavuzDetayState extends State<HavuzDetay> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(
          'Detay ' + HavuzData().brand,
        ),
      ),
      body: Container(
        child: Center(
          child: Text('Hello Detay'),
        ),
      ),
    );
  }
}

введите здесь описание изображения

1 Ответ

0 голосов
/ 18 июня 2020

Вы можете скопировать и вставить полный код ниже
Вы можете сделать sh с параметром HAVUZ_DATA[index] и работать с HavuzData

фрагмент кода

 Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => HavuzDetay(HAVUZ_DATA[index])),
            );
...                 
class HavuzDetay extends StatefulWidget {
  final HavuzData havuzData;

  HavuzDetay(this.havuzData);   

...
appBar: AppBar(
        title: Text(
          'Detay ' + widget.havuzData.brand,  

рабочая демонстрация

enter image description here

полный код

import 'package:flutter/material.dart';

final HAVUZ_DATA = [
  HavuzData(
    id: 'User1',
    imageUrl: 'assets/images/arac1.jpeg',
    brand: 'Volkswagen',
    model: 'MULTIVAN 2.5 TDI COMFORTLINE',
    licensePlate: '34AAA3434',
    year: '2011',
    city: 'İstanbul',
    district: 'Bahçelievler',
    authorities: '20040601419',
    status: 'Ekspertiz yapıldı, Dosya sorumlusuna gönderildi.',
  ),
  HavuzData(
    id: 'User2',
    imageUrl: 'assets/images/arac2.jpg',
    brand: 'BMW',
    model: '420',
    licensePlate: '34ABC3434',
    year: '2018',
    city: 'İstanbul',
    district: 'Bakırköy',
    authorities: '20040601419',
    status: 'Ekspertiz yapıldı, Dosya sorumlusuna gönderildi.',
  )
];

class HavuzData {
  final String id;
  final String imageUrl;
  final String brand;
  final String model;
  final String licensePlate;
  final String year;
  final String city;
  final String district;
  final String authorities;
  final String status;

  const HavuzData({
    this.id,
    this.imageUrl,
    this.brand,
    this.model,
    this.licensePlate,
    this.year,
    this.city,
    this.district,
    this.authorities,
    this.status,
  });
}

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: ListView.builder(
            padding: EdgeInsets.only(left: 20, top: 10, right: 20, bottom: 10),
            itemCount: HAVUZ_DATA.length,
            itemBuilder: (BuildContext ctxt, int index) {
              return InkWell(
                  onTap: () {
                    Navigator.push(
                      context,
                      MaterialPageRoute(
                          builder: (context) => HavuzDetay(HAVUZ_DATA[index])),
                    );
                  },
                  child: Card(
                    child: ListTile(
                      title: Text(HAVUZ_DATA[index].brand),
                      subtitle: Text(
                        HAVUZ_DATA[index].city,
                      ),
                    ),
                  ));
            }));
  }
}

class HavuzDetay extends StatefulWidget {
  final HavuzData havuzData;

  HavuzDetay(this.havuzData);

  @override
  _HavuzDetayState createState() => _HavuzDetayState();
}

class _HavuzDetayState extends State<HavuzDetay> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(
          'Detay ' + widget.havuzData.brand,
        ),
      ),
      body: Container(
        child: Center(
          child: Text('Hello Detay'),
        ),
      ),
    );
  }
}
...