前提・実現したいこと
現在、UdacityのBuild Native Mobile Apps with Flutterを進めています。
この講座のLesson2-11でエラーが出てしまい、先に進めません。
解決方法を教えていただきたく存じます。
発生している問題・エラーメッセージ
LateInitializationError: Field '_currentCategory@24037776' has not been initialized.
該当のソースコード
import 'package:flutter/material.dart'; import 'backdrop.dart'; import 'category.dart'; import 'category_tile.dart'; import 'unit.dart'; import 'unit_converter.dart'; class CategoryRoute extends StatefulWidget { const CategoryRoute(); @override _CategoryRouteState createState() => _CategoryRouteState(); } class _CategoryRouteState extends State<CategoryRoute> { late Category _defaultCategory; late Category _currentCategory; final _categories = <Category>[]; static const _categoryNames = <String>[ 'Length', 'Area', 'Volume', 'Mass', 'Time', 'Digital Storage', 'Energy', 'Currency', ]; static const _baseColors = <ColorSwatch>[ Colors.teal, Colors.orange, Colors.pinkAccent, Colors.blueAccent, Colors.yellow, Colors.greenAccent, Colors.purpleAccent, Colors.red, ]; static const _categoryIcon = <IconData> [ Icons.thumb_up, Icons.thumb_down, Icons.accessibility, Icons.accessible, Icons.accessible_outlined, Icons.account_box, Icons.adb, Icons.add_a_photo, Icons.add_alarm, ]; @override void initState() { super.initState(); for (var i = 0; i < _categoryNames.length; i++) { var category = Category( name: _categoryNames[i], color: _baseColors[i], icon: _categoryIcon[i], units: _retrieveUnitList(_categoryNames[i]), ); if (i == 0) { _defaultCategory = category; } _categories.add(category); } } void _onCategoryTap(Category category) { setState(() { _currentCategory = category; }); } Widget _buildCategoryWidgets() { return ListView.builder( itemBuilder: (BuildContext context, int index) { return CategoryTile( category: _categories[index], onTap: _onCategoryTap, ); }, itemCount: _categories.length, ); } List<Unit> _retrieveUnitList(String categoryName) { return List.generate(10, (int i) { i += 1; return Unit( name: '$categoryName Unit $i', conversion: i.toDouble(), ); }); } @override Widget build(BuildContext context) { final listView = Padding( padding: EdgeInsets.only( left: 8.0, right: 8.0, bottom: 48.0, ), child: _buildCategoryWidgets(), ); return Backdrop( currentCategory: _currentCategory == null ? _defaultCategory : _currentCategory, frontPanel: _currentCategory == null ? UnitConverter(category: _defaultCategory) : UnitConverter(category: _currentCategory), backPanel: listView, frontTitle: Text('Unit Converter'), backTitle: Text('Select a Category'), ); } }
試したこと
補足情報(FW/ツールのバージョンなど)
Flutter 2.20
Dart 2.13.0
VSCode 1.56.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。