Flutter斐波那契数列生成插件fibonacci的使用

Flutter斐波那契数列生成插件fibonacci的使用

fibonacci

Fibonacci 系列是一个从 0 开始的序列,依次为 0, 1, 1, 2, 3, 5, 8, 13…

简介

这是一个用于打印斐波那契数列并找到斐波那契数列中第 N 个数字的包。

例如:输入 10 将打印到第 10 项的序列。[0, 1, 1, 2, 3, 5, 8]。

斐波那契数列的基本规则是从 0 和 1 开始,每个数字是前两个数字之和。

公式:F(n) = F(n-1) + F(n-2),其中 n >= 3。

这是一个基本实现,用于打印到第 N 项的斐波那契数列。如需了解更多关于此包的信息,请访问 GitHub。此包还可以找到斐波那契数列中的第 N 个数字。

例如:序列的第 4 项是 2。因此,如果输入 4,则输出为 2。

示例图1 示例图2 示例图3

安装

pubspec.yaml 文件中添加以下依赖:

dependencies:
  fibonacci: 0.0.2

然后运行 flutter pub get

示例

查看 example/main.dart 文件以获取完整示例。

import 'package:fibonacci/fibonacci.dart';

void main() {
  
  // 打印斐波那契数列直到第 5 项
  var x = Fibonacci.printSeries(size: 5).toString();
  print(x); // 输出: [0, 1, 1, 2, 3, 5]

  // 获取斐波那契数列中的第 5 项
  var y = Fibonacci.printValue(index: 5).toString();
  print(y); // 输出: 3
}

示例代码

以下是完整的 Flutter 示例代码,展示如何使用该插件:

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Fibonacci',
      theme: ThemeData.dark(),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  [@override](/user/override)
  // ignore: library_private_types_in_public_api
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String x = ""; // 显示斐波那契数列
  String y = "请输入一个数字 N"; // 提示用户输入

  final TextEditingController con = TextEditingController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        centerTitle: true,
        title: const Text('斐波那契数列'),
        backgroundColor: Colors.grey[900],
      ),
      backgroundColor: _getColorFromHex("#8E150D"),
      body: Center(
        child: ListView(
          children: <Widget>[
            Container(height: 30),
            Padding(
                padding: const EdgeInsets.symmetric(horizontal: 8),
                child: Center(
                    child: Text(
                  y,
                  style: const TextStyle(
                      fontFamily: "Alfa",
                      fontSize: 25,
                      color: Colors.black,
                      fontWeight: FontWeight.bold),
                ))),
            Container(height: 10),
            Padding(
                padding: const EdgeInsets.symmetric(horizontal: 12),
                child: Column(children: [
                  SelectableText(
                    x,
                    style: const TextStyle(
                        fontFamily: "Alfa",
                        fontSize: 18,
                        color: Colors.black,
                        fontWeight: FontWeight.bold),
                  ),
                  Container(height: 30),
                ])),
            Padding(
                padding: const EdgeInsets.symmetric(horizontal: 12),
                child: TextField(
                  minLines: 1,
                  maxLines: null,
                  keyboardType: TextInputType.number,
                  style: const TextStyle(
                    fontFamily: "Alfa",
                    fontSize: 18,
                    color: Colors.black,
                    //fontWeight: FontWeight.bold
                  ),
                  decoration: const InputDecoration(
                    contentPadding:
                        EdgeInsets.symmetric(horizontal: 10, vertical: 5),
                    enabledBorder: OutlineInputBorder(
                      borderSide: BorderSide(color: Colors.black, width: 2.5),
                    ),
                    focusedBorder: OutlineInputBorder(
                      borderSide: BorderSide(color: Colors.black, width: 2.5),
                    ),
                    hintStyle: TextStyle(
                        fontSize: 18,
                        fontFamily: "Mono",
                        fontWeight: FontWeight.normal,
                        color: Color.fromARGB(255, 29, 24, 24)),
                    hintText: '请输入您的数字',
                  ),
                  controller: con,
                )),
            Container(height: 30),
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 12),
              child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    SizedBox(
                        width: 200,
                        child: ElevatedButton(
                          style: ElevatedButton.styleFrom(
                              backgroundColor: Colors.black),
                          onPressed: () {
                            setState(() {
                              y = "斐波那契数列直到第 ${con.text.trim()} 项:";
                              x = Fibonacci.printSeries(
                                      size: int.parse(con.text.trim()))
                                  .toString();
                            });
                          },
                          child: const Text("显示到第 N 项"),
                        )),
                    Container(height: 20),
                    SizedBox(
                        width: 200,
                        child: ElevatedButton(
                          style: ElevatedButton.styleFrom(
                              backgroundColor: Colors.black),
                          onPressed: () {
                            setState(() {
                              y = "第 ${con.text.trim()}${(int.parse(con.text.trim()) == 1) ? "" : (int.parse(con.text.trim()) == 2) ? "" : (int.parse(con.text.trim()) == 3) ? "" : ""} 斐波那契数是";
                              x = Fibonacci.printValue(
                                      index: int.parse(con.text.trim()))
                                  .toString();
                            });
                          },
                          child: const Text("查找第 N 项"),
                        )),
                    Container(height: 20),
                    SizedBox(
                        width: 200,
                        child: ElevatedButton(
                          style: ElevatedButton.styleFrom(
                              backgroundColor: Colors.black),
                          onPressed: () {
                            setState(() {
                              x = "";
                              y = "请输入一个数字 N";
                              con.clear();
                            });
                          },
                          child: const Text("重置"),
                        )),
                  ]),
            ),
            Container(height: 30),
            const Center(
                child: SelectableText(
                    "包由: Gauthiii's Applications 创建",
                    style: TextStyle(
                        fontSize: 16.0,
                        fontWeight: FontWeight.bold,
                        color: Colors.black))),
            Container(height: 30),
          ],
        ),
      ),
    );
  }
}

_getColorFromHex(String hexColor) {
  hexColor = hexColor.replaceAll("#", "");
  if (hexColor.length == 6) {
    hexColor = "FF$hexColor";

    return Color(int.parse("0x$hexColor"));
  }

  if (hexColor.length == 8) {
    return Color(int.parse("0x$hexColor"));
  }
}
1 回复

更多关于Flutter斐波那契数列生成插件fibonacci的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,你可以创建一个简单的插件来生成斐波那契数列。以下是一个示例,展示如何创建一个名为 fibonacci 的插件,并在Flutter应用中使用它。

1. 创建Flutter插件

首先,使用Flutter命令行工具创建一个新的插件项目:

flutter create --template=plugin fibonacci

这将创建一个名为 fibonacci 的插件项目。

2. 实现斐波那契数列生成逻辑

lib/fibonacci.dart 文件中,添加斐波那契数列生成的逻辑:

class Fibonacci {
  static List<int> generateSequence(int n) {
    if (n <= 0) return [];
    if (n == 1) return [0];
    if (n == 2) return [0, 1];

    List<int> sequence = [0, 1];
    for (int i = 2; i < n; i++) {
      sequence.add(sequence[i - 1] + sequence[i - 2]);
    }
    return sequence;
  }
}

3. 在Flutter应用中使用插件

在你的Flutter应用中,你可以通过导入 fibonacci 插件并使用 Fibonacci.generateSequence 方法来生成斐波那契数列。

首先,确保在 pubspec.yaml 文件中添加对插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  fibonacci:
    path: ../fibonacci  # 根据你的插件路径调整

然后,在你的Flutter应用中使用插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Fibonacci Sequence'),
        ),
        body: Center(
          child: FibonacciSequenceWidget(),
        ),
      ),
    );
  }
}

class FibonacciSequenceWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    List<int> sequence = Fibonacci.generateSequence(10);

    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: sequence.map((number) {
        return Text(number.toString());
      }).toList(),
    );
  }
}

4. 运行应用

现在,你可以运行你的Flutter应用,并看到生成的斐波那契数列显示在屏幕上。

flutter run

5. 结果

应用运行后,你将看到一个包含前10个斐波那契数列数字的列表:

0
1
1
2
3
5
8
13
21
34
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!