我有以下代碼從本地 JSON 檔案構建一個串列視圖,它作業得很好。但是,當我嘗試在 Widget 中添加方法時,onTap: (){}出現ExpansionTile以下_buildList錯誤
Error: No named parameter with the name 'onTap'. onTap: (){}, ^^^^^ /C:/src/flutter/packages/flutter/lib/src/material/expansion_tile.dart:51:9: Context: Found this candidate, but the arguments don't match. const ExpansionTile({ ^^^^^^^^^^^^^
中的代碼Main.dart是
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'datamodel.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
Future<List<Menu>> ReadJsonData() async {
//read json file
final jsondata = await rootBundle.loadString('assets/data0.json');
//decode json data as list
final list = json.decode(jsondata) as List<dynamic>;
//map json and initialize using Model
return list.map((e) => Menu.fromJson(e)).toList();
}
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home:Scaffold(
appBar: AppBar(
title: const Text('My Title'),
),
body: FutureBuilder(
future: ReadJsonData(),
builder: (context,data){
if(data.hasError){
return Center(child: Text("${data.error}"));
}else if(data.hasData){
var items =data.data as List<Menu>;
return ListView.builder(
itemCount: items.length,
itemBuilder: (BuildContext context, int index) =>
_buildList(items[index]),
);
}else{
return Center(child: CircularProgressIndicator(),);
}
},
)
)
);
}
Widget _buildList(Menu list) {
return ExpansionTile(
leading: Icon(list.icon),
// line causing error
onTap: (){},
title: Text(
list.name!,// I added !
style: TextStyle(fontSize: list.font?.toDouble(), fontWeight: FontWeight.bold),
),
children: list.subMenu!.map(_buildList).toList(),// I added !
);
}
}
那么有什么方法可以為每個擴展圖塊添加方法嗎?
先感謝您!
uj5u.com熱心網友回復:
ExpansionTile沒有onTap財產。這是因為它在點擊、展開或折疊時具有默認行為。
如果您想在展開或折疊時執行一些特定邏輯,您可以使用onExpansionChanged:
return ExpansionTile(
onExpansionChanged: (bool expanded) {
// do what you want
},
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/497265.html
上一篇:Flutter-使用SharedPreferences加載變數
下一篇:“pubspec.yaml”檔案在哪里?如果不添加路徑,Pub.dev示例將無法在帶有Flutter插件的AndroidStudio中編譯,但它在哪里?
