Оператор проверки нуля, используемый для нулевого значения, Соответствующий виджет, вызывающий ошибку, был материальным приложением

#flutter #flutter-layout

Вопрос:

Приложение работало просто отлично, пока я не использовал listview.builder и не добавил список элементов (упомянутых в datalist) Я не могу понять, что именно вызывает ошибку, так как в самой среде IDE нет ошибок. Может ли кто-нибудь объяснить, что здесь происходит, и, возможно, дать мне решение?

Заранее спасибо!

Финансовая Страница:

  import 'package:flutter/material.dart';

class FinancePage extends StatefulWidget {
  const FinancePage({Key? key}) : super(key: key);

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

class _FinancePageState extends State<FinancePage> {

  final List<DataTiles> dataList = [
    DataTiles(title: "Mobile Home Dealers", subtitle: "Last payment 17 May",color: Colors.deepPurpleAccent.shade50),
    DataTiles(title: "Taxicabs and Limousines", subtitle: "Last payment 26 May",color: Colors.lightBlueAccent),
    DataTiles(title: "Miscellaneous Apparel and Accessory Shops", subtitle: "Last payment 06 April",color: Colors.redAccent),
    DataTiles(title: "Electric, Gas, Sanitary and Water utilities", subtitle: "Last payment 01 May",color: Colors.deepPurpleAccent.shade50),
    DataTiles(title: "Misc. General Merchandise", subtitle: "Last payment 01 March",color: Colors.lightBlueAccent),
  ];
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.deepPurple.shade800,
      body: Column(
        children: [
          const SizedBox(
            height: 100,
          ),
          Padding(
              padding: const EdgeInsets.all(10),
              child: Card(
                shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(5),
                ),
                elevation: 3,
                child: ListTile(
                    shape: RoundedRectangleBorder(
                      borderRadius: BorderRadius.circular(5),
                    ),
                    tileColor: Colors.deepPurpleAccent,
                    leading: const Text(
                      "Card balance",
                      style: TextStyle(color: Colors.white),
                    ),
                    trailing: FittedBox(
                      fit: BoxFit.fill,
                      child: Row(
                        children: const [
                          Text(
                            "0₹",
                            style: TextStyle(color: Colors.white),
                          ),
                          Icon(
                            Icons.arrow_forward_ios,
                            color: Colors.white,
                            size: 10,
                          )
                        ],
                      ),
                    )),
              )),
          const Text("PAYMENT CATEGORIES",
              style: TextStyle(
                color: Colors.grey,
              )),
             SizedBox(
               height: 200,
               child: ListView.builder(
                   scrollDirection: Axis.horizontal,
                   itemCount: dataList.length,
                   itemBuilder: (context, index) {
                     return  SizedBox(
                       width: 170,
                       child: Card(
                         child: Column(
                           children: [
                             Text(dataList[index].title,
                                 style: const TextStyle(
                                   fontSize: 20,
                                 ),
                             ),
                             Text(dataList[index].subtitle,),
                           ],
                         ),
                         shape: RoundedRectangleBorder(
                           borderRadius: BorderRadius.circular(10),
                         ),
                         color: dataList[index].color,
                       ),
                     );
                   }),
             ),
        ],
      ),
    );
  }
}

class DataTiles {
  DataTiles({required this.title, required this.subtitle, required this.color});
  final String title;
  final String subtitle;
  final Color color;
}
 

главная.дротик

 import 'package:flutter/material.dart';

import 'finance_page.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return  const MaterialApp(
      title: 'Flutter Demo',
      home: FinancePage(),
    );
  }
}
 

Ответ №1:

Строки, вызывающие ошибки, являются

 DataTiles(title: "Mobile Home Dealers", subtitle: "Last payment 17 May",color: Colors.deepPurpleAccent.shade50),
DataTiles(title: "Electric, Gas, Sanitary and Water utilities", subtitle: "Last payment 01 May",color: Colors.deepPurpleAccent.shade50),

 

Удалите shade50 или измените цвет на другой, без shade этого это будет работать. Некоторые цвета не имеют значения Shade50 , например, deepPurpleAccent и deepPurpleAccent. shade100 будет работать на них. Проверьте документацию перед использованием shade s

Комментарии:

1. Большое вам спасибо! shade50 показал мне как вариант в IDE, поэтому я подумал, что он, должно быть, принимает его.