Love Calculator (Error)

Error in firstname and secondname. 

Main.dart

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Love Calculator',
      home: MyCalculator(),
    );
  }
}

class MyCalculator extends StatefulWidget {
  @override
  _MyCalculatorState createState() => _MyCalculatorState();
}

class _MyCalculatorState extends State<MyCalculator> {
  String firstName = "";
  String secondName = "";
  int score = 0;
  void loveScore() {
    // score = Random().nextInt(40) + 40;
    score = calculation(firstName: firstName, secondName: secondName);
    Navigator.of(context).push(MaterialPageRoute(builder: (context) => ScorePage(score: score)));
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('LOVE CALCULATOR'),
      ),
      body: Column(crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: <Widget>[
        Flexible(
            child: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Hero(
            tag: 'lovegif',
            child: Image(image: AssetImage('assets/images/logo.gif')),
          ),
        )),
        TextField(
          onChanged: (value) {
            firstName = value;
          },
          decoration: InputDecoration(
            hintText: 'Enter your name',
            contentPadding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0),
            border: OutlineInputBorder(
              borderRadius: BorderRadius.all(Radius.circular(32.0)),
            ),
            enabledBorder: OutlineInputBorder(
              borderSide: BorderSide(color: Colors.lightBlueAccent, width: 1.0),
              borderRadius: BorderRadius.all(Radius.circular(32.0)),
            ),
            focusedBorder: OutlineInputBorder(
              borderSide: BorderSide(color: Colors.lightBlueAccent, width: 2.0),
              borderRadius: BorderRadius.all(Radius.circular(32.0)),
            ),
          ),
        ),
        TextField(
          onChanged: (value) {
            secondName = value;
          },
          decoration: InputDecoration(
            hintText: 'Enter your partner\'s name',
            contentPadding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0),
            border: OutlineInputBorder(
              borderRadius: BorderRadius.all(Radius.circular(32.0)),
            ),
            enabledBorder: OutlineInputBorder(
              borderSide: BorderSide(color: Colors.lightBlueAccent, width: 1.0),
              borderRadius: BorderRadius.all(Radius.circular(32.0)),
            ),
            focusedBorder: OutlineInputBorder(
              borderSide: BorderSide(color: Colors.lightBlueAccent, width: 2.0),
              borderRadius: BorderRadius.all(Radius.circular(32.0)),
            ),
          ),
        ),
        RaisedButton(
          onPressed: () {
            loveScore();
          },
          child: Text('Calculate'),
          color: Colors.blue,
        ),
      ]),
    );
  }
}

class ScorePage extends StatelessWidget {
  const ScorePage({
    Key? key,
    required this.score,
  }) : super(key: key);

  final int score;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(mainAxisAlignment: MainAxisAlignment.center, children: [
        Flexible(
            child: Padding(
          padding: const EdgeInsets.all(12.0),
          child: Hero(
            tag: 'lovegif',
            child: Image(image: AssetImage('images/logo.gif')),
          ),
        )),
        Text(
          'Your Score is : $score',
          style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20.0),
        ),
      ]),
    );
  }
}

calculation.dart

import 'package:flutter/material.dart';

int calculation({String firstName, String secondName}) {
  int finalScore;

  List<String> firstList = firstName.toLowerCase().split('');
  List<String> secondList = secondName.toLowerCase().split('');
  List<String> magicWord = firstList + "loves".split('') + secondList;

  print(magicWord);

  var nameMap = new Map();
  magicWord.forEach((f) {
    nameMap.containsKey(f) ? nameMap[f]++ : nameMap[f] = 1;
  });

  print(nameMap.values);
  List magicCode = nameMap.values.toList();
  print(magicCode);
  List score;

  while (magicCode.length > 2) {
    score = _calculate(magicCode);
    magicCode = score;
    print(score);
  }

  finalScore = magicCode[0] * 10 + magicCode[1];
  print(finalScore);

  return finalScore;
}

List _calculate(List magicCode) {
  int countsum;
  var sum = new List();

  do {
    countsum = magicCode.first + magicCode.last;
    if (countsum > 9) countsum -= 9;
    sum.add(countsum);
    magicCode.removeLast();
    magicCode.removeAt(0);
  } while (magicCode.length >= 2);

  print(magicCode);
  if (magicCode.isNotEmpty) {
    sum.add(magicCode.first);
  }

  return sum;
}

Comments