Как создать мобильное приложение с нуля с помощью Flutter и, возможно, Rails? - PullRequest
0 голосов
/ 20 февраля 2019

Я веб-разработчик Rails back & front dev и хочу создать мобильное приложение.Простое приложение с продуктами, пользователями, геолокацией и, возможно, оплатой (с третьей частью, такой как Stripe).

Я думаю, что Flutter Framework - хороший выбор, выглядит очень просто.

Но яне знаю, как обстоят дела с языком дартс (или мобильным нативным разработчиком), и не знаю с чего начать.

Я думал о такой системе:

  • Railsсерверная часть для продуктов и пользователей
  • Приложение Flutter Framework для действий и геолокации
  • API между ними для получения и отправки данных

У вас есть какие-то советы для меня?С чего начать и альтернативы?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 06 августа 2019

Подключить Rails API к интерфейсу Flutter довольно просто, есть несколько моментов, связанных с управлением состоянием, но Google рекомендует использовать шаблон BLoC, и он отлично работает с Rails.

Теперь яне буду вдаваться в детали реализации шаблона BLoC, но я оставлю несколько ссылок внизу вокруг этой темы.

Первый шаг - проверить документы флаттера, у них есть несколько достойных поваренных книг, и я адаптирую однуниже с помощью генераторов Rails.https://flutter.dev/docs/cookbook/networking/fetch-data

  1. Создать почтовый ресурс:
rails g resource post title:string body:string
Выполнить rails db:migrate. Создать пост, используя консоль rails В вашем флаттере (main.dart) я предполагаю, что это совершенно новое приложение здесь:
import 'dart:async';
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

Future<Post> fetchPost() async {
  final response =
      await http.get('http://10.0.2.2:3000/posts/1');

  if (response.statusCode == 200) {
    // If the call to the server was successful, parse the JSON.
    return Post.fromJson(json.decode(response.body));
  } else {
    // If that call was not successful, throw an error.
    throw Exception('Failed to load post');
  }
}

class Post {
  final int id;
  final String title;
  final String body;

  Post({this.id, this.title, this.body});

  factory Post.fromJson(Map<String, dynamic> json) {
    return Post(
      id: json['id'],
      title: json['title'],
      body: json['body'],
    );
  }
}

void main() => runApp(MyApp(post: fetchPost()));

class MyApp extends StatelessWidget {
  final Future<Post> post;

  MyApp({Key key, this.post}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Fetch Data Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Fetch Data Example'),
        ),
        body: Center(
          child: FutureBuilder<Post>(
            future: post,
            builder: (context, snapshot) {
              if (snapshot.hasData) {
                return Text(snapshot.data.title);
              } else if (snapshot.hasError) {
                return Text("${snapshot.error}");
              }

              // By default, show a loading spinner.
              return CircularProgressIndicator();
            },
          ),
        ),
      ),
    );
  }
}
запустить сервер rails, работающий на порту 3000 запустить приложение флаттера

Вот и все.Rails и Flutter абсолютно замечательны вместе, и Flutter Web выходит ... в какой-то момент ... Я действительно взволнован.

Некоторые другие ресурсы: Flutter и Rails CLI (Все еще очень много WIP, но получаюесть) https://rubygems.org/gems/frap

Государственное управление: https://www.didierboelens.com/2018/08/reactive-programming---streams---bloc/ https://medium.com/flutterpub/architecting-your-flutter-project-bd04e144a8f1

Куча примеров https://github.com/flutter/samples/blob/master/INDEX.md

0 голосов
/ 20 февраля 2019

Ваш вопрос определенно не должен быть таким широким, поскольку на него нет правильного ответа, но я постараюсь.Я изучил флаттер за несколько дней, используя только документацию.

Я изучил настройку, установку и написал свое первое приложение, следующее за this , которое находится в документации.

Iизучил архитектуру, просмотрев этот веб-сайт и просто прочитав больше о конкретной внедряемой архитектуре.

Чтобы лучше разобраться в самих макетах, с которыми очень легко и приятно иметь дело, яу меня был этот старый проектный вызов на instagram , и я использовал один пользовательский интерфейс каждый день в течение нескольких дней, используя флаттер.Примерно через неделю я смогла построить любой макет, который хотел.

Я остановился на использовании модели с областью действия , как описано здесь и избыточности в больших приложениях.Это довольно круто.

Это все, что я использовал, а затем еженедельно я смотрел бы виджет недели на странице 1010 * для разработчиков на Google и все.Среднее сообщество Flutter очень активно и должно быть хорошим источником информации, но я почти никогда не читаю там блоги, если мне не нужно узнавать что-то новое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...