#flutter
#flutter
Вопрос:
У меня были трудности с переходом элемента в списке в новый файл .dart, вот моя главная страница, я импортировал второй файл
class Home extends StatefulWidget {
@override
_HomeState createState() => new _HomeState();
}
class _HomeState extends State<Home> {
final List<String>listof=["Decimal Numbers","Binary Numbers","Decimal-to-Binary Conversion","Binary Arithmetic","Complements of Binary Numbers","Signed Numbers","Arithmetic Operations with Signed Numbers","Hexadecimal Numbers","Octal Numbers","Binary Coded Decimal (BCD)"];
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(
"Computer System Theory",
style: new TextStyle(fontSize: 19.0),
),
backgroundColor: Colors.deepPurple,
actions: <Widget>[
new IconButton(
icon: new Icon(Icons.search),
onPressed: ()=>debugPrint("Search"),
),
],
),
body: new Container(
child: new ListView.builder(
itemBuilder: (_, int index)=>listDataItem(this.listof[index],),
itemCount: this.listof.length,
),
),
);
}
}
class listDataItem extends StatelessWidget{
String itemName;
listDataItem(this.itemName);
@override
Widget build(BuildContext context){
return new Card(
elevation: 7.0,
child: new Container(
margin: EdgeInsets.all(5.0),
padding: EdgeInsets.all(6.0),
child: new Row(
children: <Widget> [
new CircleAvatar(
child: new Text(itemName[0]),
backgroundColor: Colors.deepPurple,
foregroundColor: Colors.white,
),
new Padding(padding: EdgeInsets.all(8.0)),
new Text(itemName,style: TextStyle(fontSize: 18.0)),
],
),
),);
}
}
я пробовал этот метод, но я не знаю, как добавить функцию onpress к элементу в списке, если я нажму на любое значение в списке, я должен перейти на страницу с уважением, например, binary.dart
вот мой двоичный код
import 'package:flutter/material.dart';
class Binary extends StatefulWidget {
@override
_BinaryState createState() => _BinaryState();
}
class _BinaryState extends State<Binary> {
@override
Widget build(BuildContext context) {
double cWidth = MediaQuery.of(context).size.width*0.8;
return new Container (
padding: const EdgeInsets.all(16.0),
width: cWidth,
child: new Column (
children: <Widget>[
new Text ("Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 ", textAlign: TextAlign.left),
new Text ("Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2", textAlign: TextAlign.left),
],
),
);
}
}
Комментарии:
1. Используйте InkWell или GestureDetector
Ответ №1:
Вы можете обернуть элементы списка с помощью InkWell
или GestureDetector
.
Пример: В методе вашего listDataItem
класса build
вы возвращаете Card
Оберните его чернильницей.
InkWell(
onTap: () {
print('inkwell');
},
child: Card(...
Ответ №2:
Я проиллюстрировал код здесь, надеюсь, это поможет
class listDataItem extends StatelessWidget{
final String itemName;
listDataItem(this.itemName);
@override
Widget build(BuildContext context){
return InkWell(
onTap: () {
},
child : Card(
elevation: 7.0,
child: new Container(
margin: EdgeInsets.all(5.0),
padding: EdgeInsets.all(6.0),
child: new Row(
children: <Widget> [
new CircleAvatar(
child: new Text(itemName[0]),
backgroundColor: Colors.deepPurple,
foregroundColor: Colors.white,
),
new Padding(padding: EdgeInsets.all(8.0)),
new Text(itemName,style: TextStyle(fontSize: 18.0)),
],
),
),),
);
}
}