【问题标题】:FLUTTER - CALL ELEMENT FROM LİST TO ANOTHER CLASS颤振 - 从列表调用元素到另一个类
【发布时间】:2020-10-08 01:58:20
【问题描述】:

我正在开发一个将在线的项目,我想将列表的元素“品牌”调用到 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'),
        ),
      ),
    );
  }
}

enter image description here

【问题讨论】:

    标签: list listview flutter dart flutter-test


    【解决方案1】:

    您可以在下面复制粘贴运行完整代码
    可以带参数HAVUZ_DATA[index]推送,处理HavuzData

    代码sn-p

     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,  
    

    工作演示

    完整代码

    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'),
            ),
          ),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-23
      • 2021-10-28
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      相关资源
      最近更新 更多