Это мой первый проект флаттера, и у меня возникают проблемы с добавлением элементов в список и отображением списка на новой странице.
У меня есть список кнопок на домашней странице, и я хочу отслеживать элементы, на которые пользователь нажал, как другой список элементов и отображать их на странице истории.
Эти данные хранятся в расширяемом списке «История». Новая страница отображается при нажатии, но страница истории выдает ошибку, упомянутую выше («тип« int »не является подтипом типа« Строка »)
Буду признателен, если вы решите эту проблему.
final List data = ["One", "Edison", "Three", "Tesla", "Five"];
List<int> history=[];
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
itemCount: 5,
itemBuilder: (BuildContext context, int i) => Column(
children: <Widget>[
Card(child: new RaisedButton(color: Colors.white, child: ListTile(title: Text(data[i], style: TextStyle(fontWeight: FontWeight.bold,fontSize: 18.0)
),
),
onPressed: () {
history.add(i);
//print(history);
Navigator.push(
context,
new MaterialPageRoute(builder: (context) => new SecondScreen(i)
),
);
},
),
),
],
),
)
);
}
}
class SecondScreen extends StatelessWidget {
int ii;
SecondScreen([this.ii]);
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: Scaffold(
backgroundColor: Colors.blueAccent[50],
appBar: new AppBar(
backgroundColor: Colors.blue[900],
title: new Text("Page"),
),
body: SafeArea(
child: Column(
children: <Widget> [
Center(child: Card(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
ListTile(
leading: Icon(Icons.album),
title: Text(data[ii]),
subtitle: Text(value[ii]),
),
],
),
),
),
],
),
),
),
);
}
}
class HistoryPage extends StatefulWidget {
@override
_HistoryPageState createState() => _HistoryPageState();
}
class _HistoryPageState extends State<HistoryPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
itemCount: his.length,
itemBuilder: (BuildContext context, int i) => Column(
children: <Widget>[
Card(child: new RaisedButton(color: Colors.white, child: ListTile(title: Text(history[i], style: TextStyle(fontWeight: FontWeight.bold,fontSize: 18.0)
),
),
onPressed: () {
int indexh = data.indexOf(history[i]);
Navigator.push(
context,
new MaterialPageRoute(builder: (context) => new SecondScreen(indexh)
),
);
},
),
),
],
),
)
);
}
}