I want to remove the initial dot

Viewed 85

I am web scraping with Flutter and was able to get the href element.

However, I am having trouble with the dots in the initial letter getting in the way. Could you please tell me how to turn it off?

Example: . I want to change ./detail.php?id=2917 to /detail.php?id=2917.

  Future getWebsiteData() async {
    final controller = WindowController();
    await controller.openHttp(
      method: 'GET',
      uri: Uri.parse('https://www.ous.ac.jp/topics/'),
    );
    final document = controller.window!.document;

    final titles = document
        .querySelectorAll("dl > dd > a  ")
    .map((element) => element.innerText)
        .toList();

    final urls = document
    .querySelectorAll("dl > dd > a")
        .map(
            (element) => 'https://www.ous.ac.jp${element.attributes['href']}')

    .toList();

    print('Count: ${titles.length}');
    setState((){
      articles = List.generate(
        titles.length,
            (index) => Article(
          title: titles[index],
          url: urls[index],
        ),
      );
    });
  }
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView.builder(
        padding: const EdgeInsets.all(12),
        itemCount: articles.length,
        itemBuilder: (context, index) {
          final article = articles[index];
          return
            ListTile(
            title: Text(article.title),
                subtitle: Text(article.url),
                onTap: () => launch(article.url),

            );
        },
      ),
    );
  }
}

class Article {
  final String url;
  final String title;

  const Article({
    required this.url,
    required this.title,

});
}

import 'package:html/dom.dart' as UserModel;
import "package:universal_html/controller.dart";
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';



class all extends StatefulWidget {
  const all({Key? key}) : super(key: key);

  @override
  State<all> createState() => _allState();
}

class _allState extends State<all> {
  List<Article> articles = [];
  @override
  void initState(){
    super .initState();

    getWebsiteData();
  }
  Future getWebsiteData() async {
    final controller = WindowController();
    await controller.openHttp(
      method: 'GET',
      uri: Uri.parse('https://www.ous.ac.jp/topics/'),
    );
    final document = controller.window!.document;

    final titles = document
        .querySelectorAll("dl > dd > a  ")
    .map((element) => element.innerText)
        .toList();

    final urls = document
    .querySelectorAll("dl > dd > a")
        .map(
            (element) => 'https://www.ous.ac.jp${element.attributes['href']}')

    .toList();

    print('Count: ${titles.length}');
    setState((){
      articles = List.generate(
        titles.length,
            (index) => Article(
          title: titles[index],
          url: urls[index],
        ),
      );
    });
  }
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView.builder(
        padding: const EdgeInsets.all(12),
        itemCount: articles.length,
        itemBuilder: (context, index) {
          final article = articles[index];
          return
            ListTile(
            title: Text(article.title),
                subtitle: Text(article.url),
                onTap: () => launch(article.url),

            );
        },
      ),
    );
  }
}

class Article {
  final String url;
  final String title;

  const Article({
    required this.url,
    required this.title,

});
}

1 Answers

Why not just substring the url?

enter image description here

const url_returned = "./detail.php?id=2917;";
if(url_returned[0].contains(".")){ //check first position for "." 
  var result = url_returned.substring(1);
  print (result); // Should print: /detail.php?id=2917
}
Related