我想在 Flutter 中为每个字母分配一个数字(例如,A=1、B=2、C=3 等)



所以我正在创建一个输入文本的应用程序,当我点击"提交"按钮时,它应该将每个字母转换为它各自的数字并执行数字总和以获得最终的个位数答案。有人可以指导我如何做到这一点吗?我是Dart编程语言的初学者,我似乎无法将逻辑联系起来

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:luckynumberapp/Calculate.dart';
import 'package:luckynumberapp/about.dart';

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

class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
var name, value;
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark(),
home: Builder(
builder: (context) => Scaffold(
backgroundColor: Colors.black,
appBar: AppBar(
iconTheme: IconThemeData(color: Colors.white),
backgroundColor: Colors.red,
title: Text(
'LUCKY NUMBER',
style: TextStyle(fontFamily: 'Pacifico', letterSpacing: 4),
),
),
body: Container(
padding: EdgeInsets.fromLTRB(20, 10, 20, 30),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
decoration: InputDecoration(
hintText: 'Enter a word/name',
labelText: 'Enter',
),
keyboardType: TextInputType.text,
onChanged: (name) {
value = name;
value1 = name;
},
),
RaisedButton(
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => screen2(value: value),
));
},
child: Text('Submit'),
),
],
),
),
),
drawer: Drawer(
child: ListView(
children: <Widget>[
UserAccountsDrawerHeader(
decoration: BoxDecoration(color: Colors.red),
accountName: Text('Yogesh Prakash'),
accountEmail: Text('test@dev.com'),
currentAccountPicture: CircleAvatar(
child: Image(
image: AssetImage(
'Image/105769079_10217500208479055_1053899048265455769_n.jpg'),
),
),
),
ListTile(
title: Text('About'),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => AboutPage()),
);
})
],
),
),
),
),
);
}
}

试试这个 它工作得很好,点击提交按钮后,总和会打印在控制台中,希望这有帮助

class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String value;
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark(),
home: Builder(
builder: (context) => Scaffold(
backgroundColor: Colors.black,
appBar: AppBar(
iconTheme: IconThemeData(color: Colors.white),
backgroundColor: Colors.red,
title: Text(
'LUCKY NUMBER',
style: TextStyle(fontFamily: 'Pacifico', letterSpacing: 4),
),
),
body: Container(
padding: EdgeInsets.fromLTRB(20, 10, 20, 30),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
decoration: InputDecoration(
hintText: 'Enter a word/name',
labelText: 'Enter',
),
keyboardType: TextInputType.text,
onChanged: (name) {
value = name;
//value1 = name;
},
),
RaisedButton(
onPressed: () {
int sum=0;
if(value.trim().isNotEmpty)
for(int i=0;i<value.length;i++)
(value[i].toUpperCase() == value[i]) ? sum+= (value.codeUnitAt(i) - 64) :
sum+= (value.codeUnitAt(i) - 96);
print(sum);
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => screen2(value: sum),
));
},
child: Text('Submit'),
),
],
),
),
),
drawer: Drawer(
child: ListView(
children: <Widget>[
UserAccountsDrawerHeader(
decoration: BoxDecoration(color: Colors.red),
accountName: Text('Yogesh Prakash'),
accountEmail: Text('test@dev.com'),
currentAccountPicture: CircleAvatar(
child: Image(
image: AssetImage(
'Image/105769079_10217500208479055_1053899048265455769_n.jpg'),
),
),
),
ListTile(
title: Text('About'),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => AboutPage()),
);
})
],
),
),
),
),
);
}
}

您可以使用地图。因为它基本上是一个键值对。

前任:

var VariableName = {
key : value, 
key : value,
key : value,
key : value,
};

所以如果你想做一个 A = 1, B = 2, ...

var myMapName= {
'A' : 1, 
'B' : 2,
'C' : 3,
'D' : 4,
};

因此,如果要打印 1 到 A,可以将其称为:

print(myMapName['A']);

所以输出将是:

1

您可以获取输入字符串的 ASCII 值之和

sum=0;
String s;
for (int i = 0; i < s.length; i++) {
sum=sum+s.codeUnitAt(i)
}
print(sum)

相关内容

最新更新