簡體   English   中英

如何在 Flutter 中使用 widget/s 從文件中讀取文本並將它們顯示為列表?

[英]How can I read text from files and display them as list using widget/s in Flutter?

我可以問一種如何使這項工作的方法。

我有一個名為questions.txt的文本文件。

該文件包含以下問題:

  1. 你幾歲?
  2. 你住在哪里?
  3. 你幾歲?

我想從文件中加載這些問題,並在 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)
                        ],
                    ),
                ),
            ),
        );
    }
}

您可以從使用rootBundle.loadString.txt文件中檢索問題的最基本方法開始,然后使用ListView小部件顯示它。

main.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]);
            },
          ),
        ),
      ),
    );
  }
}

這是問題的示例列表。

問題.txt

"How old are you?"
"Where do you live?"
"What is your age?"

在上面的示例代碼中,您正在逐行解析文本文件,請參閱LineSplitter 這對於測試 Flutter 的小型和示例項目很有用。 但是您應該能夠通過遵循 Flutter 的官方文檔來更新此實現,了解如何讀取和寫入文件。

此外,如果您想擴大 Flutter 項目,您應該研究如何在線托管您的問題,例如。 通過 REST API 提供服務,然后使用 Flutter 的http插件檢索它。

更多關於:

輸出:

圖像 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM