我可以问一下如何进行这项工作吗?
我有一个名为questions.txt的文本文件。
该文件包含以下问题:
我想从文件中加载这些问题,并将它们呈现为 Flutter 中的列表。
问卷.dart
import 'package:flutter/material.dart';
class Questionnaires extends StatefulWidget {
@override
_QuestionnairesState createState() => _QuestionnairesState();
}
class _QuestionnairesState extends State<Questionnaires> {
String q1 = "";
String q2 = "";
String q3 = "";
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
resizeToAvoidBottomInset: false,
body: Center(
child: Column(
children: <Widget>[
Text(q1),
Text(q2),
Text(q3)
],
),
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
.txt您可以使用从文件中检索问题的最基本方法开始rootBundle.loadString,然后使用小部件显示它ListView。
主程序.dart
import 'dart:async';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Questions',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyAppScreen(),
);
}
}
class MyAppScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyAppScreenState();
}
}
class MyAppScreenState extends State<MyAppScreen> {
List<String> _questions = [];
Future<List<String>> _loadQuestions() async {
List<String> questions = [];
await rootBundle.loadString('path/to/questions.txt').then((q) {
for (String i in LineSplitter().convert(q)) {
questions.add(i);
}
});
return questions;
}
@override
void initState() {
_setup();
super.initState();
}
_setup() async {
// Retrieve the questions (Processed in the background)
List<String> questions = await _loadQuestions();
// Notify the UI and display the questions
setState(() {
_questions = questions;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Flutter Questions")),
body: Center(
child: Container(
child: ListView.builder(
itemCount: _questions.length,
itemBuilder: (context, index) {
return Text(_questions[index]);
},
),
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
以下是问题示例列表。
问题.txt
"How old are you?"
"Where do you live?"
"What is your age?"
Run Code Online (Sandbox Code Playgroud)
在上面的示例代码中,您正在逐行解析文本文件,请参阅LineSplitter。这对于测试 Flutter 时的小型示例项目很有用。但是您应该能够按照 Flutter 官方文档更新此实现,了解如何读取和写入文件。
此外,如果您想扩大 Flutter 项目,您应该研究如何在线托管您的问题,例如。通过 REST API 提供服务,然后使用Flutter 的http插件检索它。
更多关于:
输出:

| 归档时间: |
|
| 查看次数: |
4737 次 |
| 最近记录: |