我在 flutter 上连接两个变量时遇到问题:我无法连接它们,当我尝试在后面添加一个字符串时,它不起作用。
class MusicAlbumListing extends StatefulWidget {
final albumName;
MusicAlbumListing({Key key, this.albumName}) : super(key: key);
@override
_MusicAlbumListing createState() => _MusicAlbumListing();
}
class _MusicAlbumListing extends State<MusicAlbumListing> {
String _albumName = '';
void initState() {
_albumName = widget.albumName.toString();
var strr = "Look this new album : $_albumName ! Awesome :)";
}
它回来了
Look this new album : Mothership
然后什么都没有 有人可以帮我吗?
答案 0 :(得分:0)
我认为您的字符串连接没有任何问题。
这是一个基于您不完整代码片段的最小工作示例:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'StackOverflow Answer',
home: MusicAlbumListing(albumName: 'Mothership'),
);
}
}
class MusicAlbumListing extends StatefulWidget {
final String albumName;
MusicAlbumListing({Key? key, required this.albumName}) : super(key: key);
@override
_MusicAlbumListing createState() => _MusicAlbumListing();
}
class _MusicAlbumListing extends State<MusicAlbumListing> {
String _albumName = '';
void initState() {
super.initState();
_albumName = "Look this new album : ${widget.albumName} ! Awesome :)";
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(child: Text(_albumName)),
);
}
}
提供您的最小工作示例以获得更有针对性的答案。
答案 1 :(得分:0)
感谢您的快速回复 首先,我在本地服务器(我的树莓派)上使用 ssh 脚本获取一个名为 output.txt 的文件
import 'package:flutter/material.dart';
import 'package:ssh/ssh.dart';
import 'album_music.dart';
class MainMenu extends StatefulWidget {
@override
_MainMenu createState() => _MainMenu();
}
class _MainMenu extends State<MainMenu> {
String _result = '';
List _array;
final pi = new SSHClient(
host: "192.168.0.35",
port: 22,
username: "pi",
passwordOrKey: "mysecret",
);
Future<void> exec(String sshScript) async {
String result;
try {
result = await pi.connect();
if (result == "session_connected") {
result = await pi.execute(sshScript);
pi.disconnect();
}
} catch (e) {
print('Error: ${e.code}\nError Message: ${e.message}');
}
setState(() {
_result = result;
_array = null;
});
}
@override
void initState() {
super.initState();
exec(
"cd ../../; cd var/www/html/music; ls -d */ > output.txt; cat output.txt");
}
@override
Widget build(BuildContext context) {
final title = 'Albums disponibles';
var strings = _result.split('\n');
print(strings);
return MaterialApp(
title: title,
home: Scaffold(
appBar: AppBar(
title: Text(title),
),
body: ListView(
children: new List.generate(
strings.length - 1,
(index) => new ListTile(
title: Text(strings[index],
style: TextStyle(fontWeight: FontWeight.w500)),
leading: Icon(Icons.folder_open),
trailing: Icon(Icons.forward),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => MusicAlbumListing(
albumName: strings[index].replaceAll("/", ""))));
},
),
)),
),
);
}
我打开 txt 文件,并将 cat output.txt
转换为数组。
我认为你是对的,也许问题不在于串联。
对于第一个循环,Daft_Punk 进展顺利。
那是我的txt文件:
Daft_Punk
MotherShip
LeonardCohenBestSongs
Pink_Floyd_Essentials
我有:Look this new album : Daft_Punk ! Awesome :)
但是第二个循环和之后的循环将不起作用 可能引入了一个“坏”字符,防止连接