zoukankan      html  css  js  c++  java
  • Navigator 传递数据

    1、

    import 'package:flutter/foundation.dart';
    import 'package:flutter/material.dart';
     
    class Todo {
      final String title;
      final String description;
     
      Todo(this.title, this.description);
    }
     
    void main() {
      runApp(MaterialApp(
        title: 'Passing Data',
        home: TodosScreen(
          todos: List.generate(
            20,
            (i) => Todo(
                  'Todo $i',
                  'A description of what needs to be done for Todo $i',
                ),
          ),
        ),
      ));
    }
     
    class TodosScreen extends StatelessWidget {
      final List<Todo> todos;
     
      TodosScreen({Key key, @required this.todos}) : super(key: key);
     
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Todos'),
          ),
          body: ListView.builder(
            itemCount: todos.length,
            itemBuilder: (context, index) {
              return ListTile(
                title: Text(todos[index].title),
                // When a user taps on the ListTile, navigate to the DetailScreen.
                // Notice that we're not only creating a DetailScreen, we're
                // also passing the current todo through to it!
                onTap: () {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (context) => DetailScreen(todo: todos[index]),
                    ),
                  );
                },
              );
            },
          ),
        );
      }
    }
     
    class DetailScreen extends StatelessWidget {
      // Declare a field that holds the Todo
      final Todo todo;
     
      // In the constructor, require a Todo
      DetailScreen({Key key, @required this.todo}) : super(key: key);
     
      @override
      Widget build(BuildContext context) {
        // Use the Todo to create our UI
        return Scaffold(
          appBar: AppBar(
            title: Text(todo.title),
          ),
          body: Padding(
            padding: EdgeInsets.all(16.0),
            child: Text(todo.description),
          ),
        );
      }
    }

    2、

    import 'package:flutter/material.dart';
    // 引入新页面
    import 'page.dart';
     
    void main() => runApp(MyApp());
     
    class MyApp extends StatelessWidget {
     
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          // 处理Named页面跳转 传递参数
          onGenerateRoute: (RouteSettings setting) {
            if(setting.name == '/page') {
              return MaterialPageRoute(builder: (context) => Page(id: setting.arguments['id']));
            }
          },
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: MyHomePage(title: 'Flutter Demo Home Page'),
        );
      }
    }
     
    class MyHomePage extends StatelessWidget {
      MyHomePage({Key key, this.title}) : super(key: key);
      final String title;
     
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(this.title),
          ),
          body: Center(
            child: GestureDetector(
              onTap: (){
                // 进行Named页面跳转 传递参数
                Navigator.pushNamed(context, '/page', arguments: { "id": 1} );
              },
              child: Text("go next page with params"),
            ),
          ),
        );
      }
    }

     3、页面接受参数 page.dart

    import 'package:flutter/material.dart';
     
    class Page extends StatelessWidget{
      Page({this.id});
      final int id;
     
      @override
      Widget build(BuildContext context) {
        return Material(
          child: Center(
            child: Text("hi this is next page, id is $id"),
          ),
        );
      }
    }
  • 相关阅读:
    Docker Swarm
    服务器虚拟化
    kubernets的工作流程
    配置docker阿里云加速器
    kubeadm 安装kubernetes集群。
    linux的10个最危险的命令
    18个网络带宽常用命令
    column命令
    dd命令
    scp命令
  • 原文地址:https://www.cnblogs.com/timba1322/p/12511793.html
Copyright © 2011-2022 走看看