import 'dart:ui';

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

import 'package:anyway/structs/trip.dart';
import 'package:anyway/pages/current_trip.dart';

class CurrentTripLoadingIndicator extends StatefulWidget {
  final Trip trip;
  const CurrentTripLoadingIndicator({
    super.key,
    required this.trip,
  });

  @override
  State<CurrentTripLoadingIndicator> createState() => _CurrentTripLoadingIndicatorState();
}


Widget bottomLoadingIndicator = Container(
  height: 20.0, // Increase the height to take up more vertical space

  child: ImageFiltered(
    imageFilter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0), // Apply blur effect
    child: Padding(padding: EdgeInsets.all(10), child: CircularProgressIndicator(),)
    ),
);


Widget loadingText(Trip trip) => FutureBuilder(
  future: trip.cityName,
  builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
    Widget greeter;

    if (snapshot.hasData) {
      greeter = AutoSizeText(
        maxLines: 1,
        'Generating your trip to ${snapshot.data}...',
        style: greeterStyle,
      );
    } else if (snapshot.hasError) {
      // the exact error is shown in the central part of the trip overview. No need to show it here
      greeter = AutoSizeText(
        maxLines: 1,
        'Error while loading trip.',
        style: greeterStyle,
        );
    } else {
      greeter = AutoSizeText(
        maxLines: 1,
        'Generating your trip...',
        style: greeterStyle,
        );
    }
    return greeter;
  }
);




class _CurrentTripLoadingIndicatorState extends State<CurrentTripLoadingIndicator> {
  @override
  Widget build(BuildContext context) => Stack(
    fit: StackFit.expand,
    children: [
      Center(child: loadingText(widget.trip)),
      Align(
        alignment: Alignment.bottomCenter,
        child: bottomLoadingIndicator,
      )
    ],
  );

}