как создать список гиперссылок? - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть список предметов myTile. список содержит заголовок и компонент списка элементов myTile. Как изменить каждый элемент внутреннего списка на компонент гиперссылки? Я добавляю изображение ниже. Я хочу изменить все фиолетовые компоненты на гиперссылки. Я использую linkfiy и панель запуска flutter, но это приводит к ошибке в функции _buildTiles в приведенном ниже коде.

Код:

import 'package:flutter/material.dart';
import 'package:flutter/gestures.dart';

class importantLinks extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Directionality(
        textDirection: TextDirection.rtl,
        child: MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Center(
                child: Text('קישורים חשובים'),
              ),
            ),
            body: ListView.builder(
              itemBuilder: (BuildContext context, int index) {
                return StuffInTiles(listOfTiles[index]);
              },
              itemCount: listOfTiles.length,
            ),
          ),
        ));
  }
}

class StuffInTiles extends StatelessWidget {
  final MyTile myTile;
  StuffInTiles(this.myTile);

  @override
  Widget build(BuildContext context) {
    return _buildTiles(myTile);
  }

  Widget _buildTiles(MyTile t) {
    if (t.children.isEmpty)
    return Directionality(
      textDirection: TextDirection.rtl,
       child: ListTile(
          dense: true,
          enabled: true,
          isThreeLine: false,
          onLongPress: () => print("long press"),
          onTap: () => print("tap"),
          selected: true,
          title: Text(t.title))
    );
    return Directionality(
      textDirection: TextDirection.rtl,
        child: ExpansionTile(
          key: PageStorageKey<int>(8),
          title: Text(t.title),
          children: t.children.map(_buildTiles).toList(),
    ));

  }
}

class MyTile {
  String title;
  List<MyTile> children;
  MyTile(this.title, [this.children = const <MyTile>[]]);
}

List<MyTile> listOfTiles = <MyTile>[
  MyTile(
    'מדעי היהדות',
    <MyTile>[
      MyTile('מזרח תיכון'),
      MyTile('מחשבת ישראל בן גוריון'),
      MyTile('לימודי יסוד ביהדות'),
      MyTile('ארץ ישראל וארכיאולוגיה'),
    ],
  ),
  MyTile(
    'מדעי החברה',
    <MyTile>[
      MyTile("לוגיסטיקה שנה א"),
      MyTile('לוגיסטיקה שנה ב'),
      MyTile("לוגיסטיקה שנה ג"),
      MyTile("כלכלה שנה א"),
      MyTile("כלכלה שנה ב"),
      MyTile("פסיכולוגיה"),
      MyTile("חינוך"),
      MyTile("חינוך מיוחד"),
      MyTile("ייעוץ חינוכי"),
      MyTile("קרימינולוגיה"),
      MyTile("מדעי המדינה"),
      MyTile("תקשורת"),
      MyTile("מדעי ההתנהגות"),
      MyTile("סוציולוגיה תואר שני"),
      MyTile("סוציולוגיה ואנתרופולוגיה תל אביב"),
      MyTile("חינוך בן גוריון"),
    ],
  ),
  MyTile(
    'מדעי הרוח',
    <MyTile>[
      MyTile('מוזיקה'),
      MyTile('מדעי המידע'),
      MyTile('היסטוריה'),
      MyTile('פילוסופיה'),
    ],
  ),
  MyTile(
    'מדעים מדויקים',
    <MyTile>[
      MyTile('מדעי המחשב'),
      MyTile('מתמטיקה'),
      MyTile('פיזיקה'),
      MyTile('כימיה'),
      MyTile('מדעי המחשב בן גוריון'),
    ],
  ),
  MyTile(
    'הפקולטה להנדסה',
    <MyTile>[
      MyTile('הנדסת חשמל ומחשבים'),
    ],
  ),
  MyTile(
    'מדעי החיים',
    <MyTile>[
      MyTile('אופטומטריה'),
      MyTile('ביואינפורמטיקה'),
      MyTile('מדעי החיים דרייב'),
      MyTile("מדעי החיים שנה א' סמסטר א"),
      MyTile("מדעי החיים שנה א' סמסטר ב"),
      MyTile("מדעי החיים שנה ב' סמסטר א"),
      MyTile("מדעי החיים שנה ב' סמסטר ב"),
      MyTile("מדעי החיים שנהג"),
    ],
  ),
  MyTile(
    'הפקולטה למשפטים',
    <MyTile>[
      MyTile('משפטים'),
    ],
  ),
  MyTile(
    'הפקולטה לרפואה',
    <MyTile>[
      MyTile('רפואה'),
    ],
  ),
  MyTile(
    'לימודים בין תחומיים',
    <MyTile>[
      MyTile('מדעי המוח'),
    ],
  ),
  MyTile(
    'כללי',
    <MyTile>[
      MyTile('דרייבים של אוניברסיטת תל אביב'),
    ],
  ),
];

enter image description here

...