Stack위젯으로 웹뷰 위에 container를 사용해서 배경을 transparent처리하면 웹뷰가 보이지만 웹이 컨트롤 되지 않는다.

floatingActionButton 처럼 웹뷰가 컨트롤 가능하고 커스텀 위젯 이벤트도 동작 가능하게 하려면??

 

Stack(
  children: <Widget>[
    Align(
      alignment: Alignment.bottomLeft,
      child: FloatingActionButton(...),
    ),
    Align(
      alignment: Alignment.bottomRight,
      child: FloatingActionButton(...),
    ),
  ],
)

scaffold의 옵션이 아니라 body 안에 floatingActionButton 을 커스텀 하면 된다.

 

 

https://stackoverflow.com/questions/50839282/how-to-add-multiple-floating-button-in-stack-widget-in-flutter?rq=1

 

How to add Multiple Floating button in Stack Widget in Flutter

In flutter one view over another view using Stack Widget. It's work fine. Now I need to added two floating button left and right side of bottom of screen. I added one button right side but I dnt kn...

stackoverflow.com

 

'Flutter' 카테고리의 다른 글

[Flutter] 위젯 간 상태 유지 IndexedStack  (1) 2020.03.24
[Flutter] Dependency 추가하기  (0) 2020.03.16
[Flutter] 안드로이드 스튜디오 설치  (0) 2020.03.16

BottomNavigationBar 사용 시, 탭을 이동 할 때마다 re-build되는 현상 발생.

리스트뷰를 스크롤해서 보다가 다른 탭 이동 후 다시 돌아오면 리스트가 초기화 되는 현상. 상태 유지 안됨.

 

이럴 때 IndexedStack 을 사용하면 쉽게 해결 가능하다. 

 

class Tabbar extends StatefulWidget {
  Tabbar({this.screens});

  static const Tag = "Tabbar";
  final List<Widget> screens;
  @override
  State<StatefulWidget> createState() {
  return _TabbarState();
  }
}

class _TabbarState extends State<Tabbar> {
  int _currentIndex = 0;
  Widget currentScreen;

  @override
  Widget build(BuildContext context) {
    var _l10n = PackedLocalizations.of(context);

    return Scaffold(
  body: IndexedStack(
    index: _currentIndex,
    children: Widget[
    	Widget1(),
        Widget2(),
        Widget3()
    ],
  ),
  bottomNavigationBar: BottomNavigationBar(
    fixedColor: Colors.black,
    type: BottomNavigationBarType.fixed,
    onTap: onTabTapped,
    currentIndex: _currentIndex,
    items: [
      BottomNavigationBarItem(
        icon: new Icon(Icons.format_list_bulleted),
        title: new Text(_l10n.tripsTitle),
      ),
      BottomNavigationBarItem(
        icon: new Icon(Icons.settings),
        title: new Text(_l10n.settingsTitle),
      )
    ],
  ),
);
  }

  void onTabTapped(int index) {
    setState(() {
      _currentIndex = index;
    });
  }
}

setState()에서 현재 인덱스 값만 변경해주면 된다.

 

https://stackoverflow.com/questions/52598900/flutter-bottomnavigationbar-rebuilds-page-on-change-of-tab

1. pubspec.yaml 을 연다.

2. dart의 print 관련 라이브러리인 sprintf 를 사용하고자 한다.

https://developermemos.com/posts/using-sprintf-flutter-dart 

 

Using sprintf in Flutter/Dart - DeveloperMemos

If you’re reading this post you are probably looking for something similar to printf or String.format in Dart. Unfortunately the same functionality isn’t supported in Flutter/Dart out of the box. There is a third party package though. Before I talk about t

developermemos.com

dependencies:
  flutter:
    sdk: flutter
  sprintf: ^4.0.2

위와 같이 디펜던시 영역에 추가 후,,

 

3. 플루터 프로젝트 workspace로 이동

$> flutter pub get 

 

1. 플루터 sdk 다운로드

https://flutter.dev/docs/get-started/install/windows

 

Windows install

 

flutter.dev

- 적당한 곳에 압축을 풀어주고 해당 경로를 path로 잡아야 함.

$>flutter

 

2. 안드로이드 스튜디오 다운로드

https://developer.android.com/studio?hl=ko

 

Download Android Studio and SDK tools  |  Android 스튜디오

developer.android.com

- 스튜디오 설치 후, plugins에서 flutter install

- flutter 샘플 프로젝트 생성

- AVD manager에서 적당한 디바이스 생성 (nexus5x os pie)

- AVD manager에서 해당 디바이스 실행

- 실행 시 오류 발생. (라이센스 동의를 하지 않았다는 뭐 대충 그런 내용)

- settings - android sdk - sdk Tools - Google Play Licensing Library 설치

- 실행 시 flutter 샘플 화면 작동.

무료 데이터베이스 관리툴 DBeaver를 설치해 봅시다.

(사용  DB : 오라클 19c )

 

DBeaver를 다운로드 합니다.

https://dbeaver.io/ 

 

DBeaver Community | Free Universal Database Tool

DBeaver Universal Database Tool Free multi-platform database tool for developers, database administrators, analysts and all people who need to work with databases. Supports all popular databases: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase,

dbeaver.io

 

설치 후, (이클립스 플러그인 기반으로 제작된거라 UI가 익숙합니다)

메뉴바에서 [데이터베이스]-[새 데이터베이스 연결]-[오라클] 선택

 

 

Edit Driver Settings 클릭

 

 

웹사이트 URL 클릭

 

오라클 회원가입을 해야 드라이버 다운로드가 가능합니다.

 

JDBC Download 클릭
19c버전 드라이버 다운로드

 

받은 파일 압축을 풀고, jar들을 Edit Driver Settings에서 Add File 해줍니다.

 

테스트커넥션 진행 후 완료!!

'오라클' 카테고리의 다른 글

[오라클] 세션 LOCK 킬  (0) 2021.02.25
[오라클]사용자 만들고 권한 부여  (0) 2019.11.29
토드(TOAD) 단축키 정리  (0) 2019.11.13

인텔리J에서 springboot 프로젝트 생성 (web, thymeleaf 템플릿 선택)

오라클 DB 준비.

 

member 테이블 생성.

대략 이런 구조

 

pom.xml에 디펜던시 추가

        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.1</version>
        </dependency>

        <!-- oracle ojdbc -->
        <dependency>
            <groupId>com.oracle.ojdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <version>19.3.0.0</version>
        </dependency>

 

application.properties 설정 추가 (.yml로 해도 됨)

spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/ORCL
spring.datasource.username=test
spring.datasource.password=test
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver


mybatis.configuration.map-underscore-to-camel-case=true
mybatis.type-aliases-package=com.test
mybatis.mapper-locations=/mapper/*.xml

 

SpringApplication.java에 설정 어노테이션 추가

@SpringBootApplication
@Configuration
@MapperScan(basePackages = "com.test", annotationClass = Mapper.class)
public class Demo2Application {
}

Member.java에 @Alias 추가. (필수는 아님. resultType을 간단하게 쓰기 위함.)

@Alias("Member")
public class Member {

    private String id;
    private String name;
    private String email;
}

매퍼 xml 작성

<mapper namespace="com.test.member.repository.MemberMapper">


    <select id="selectMemberList" resultType="Member">
        SELECT
            ID,
            NAME,
            EMAIL
          FROM MEMBER
    </select>

</mapper>

매퍼 java 작성 (인터페이스)

@Mapper
public interface MemberMapper {

    List<Member> selectMemberList();

}

주의사항 - 매퍼 java파일과 xml파일은 파일명이 같아야 함. MemberMapper.java, MemberMapper.xml

커맨드 창을 열어서

> netstat -aon | find "9000"

 

  TCP    0.0.0.0:9000           0.0.0.0:0              LISTENING       5836
  TCP    [::]:9000              [::]:0                 LISTENING       5836

 

> taskkill /F /PID 5836

 

https://stackoverflow.com/questions/38986910/intellij-idea-address-localhost1099-is-already-in-use

play2 페이징 샘플을 찾던 와중에 발견.

https://index.scala-lang.org/gakuzzzz/play2-pager/play2-pager/0.1.0

불러오는 중입니다...

프로젝트 clone하고, 바로 해당 경로 가서 

$> sbt run 실행

 

무언가 오랫동안 다운받고 실행되나 싶더니 에러 발생

 

[info] Loading project definition from D:\works_scala\play2-pager\project
[info] Set current project to root (in build file:/D:/works_scala/play2-pager/)
java.lang.RuntimeException: No main class detected.
        at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last root/compile:run for the full output.
[error] (root/compile:run) No main class detected.
[error] Total time: 0 s, completed 2020. 1. 6. 오후 3:30:10

 

메인 클래스를 찾는듯. java의 일반 application을 실행 시켰을때 main메소드를 찾는 것 처럼.

 

build.sbt 에서 PlayScala 플러그인 설정을 추가해 준다. 

https://stackoverflow.com/questions/24684799/play-framework-java-lang-runtimeexception-no-main-class-detected

 .enablePlugins(PlayScala) 이게 없었음.

내가 사용하고 있는 play버전이 달라서 그런지는 모르겠지만,,

lazy val sample = (project in file("sample")).
  dependsOn(core, scalikejdbc).
  enablePlugins(PlayScala).
  settings(

$> sbt "project sample" run 실행

localhost:9000 으로 들어가보면 DB에 테스트데이터를 넣는데, 스크립트 실행 버튼을 클릭해줘야 한다.

오우 잘 된다...

 

요 프로젝트의 스칼라 버전은 2.12.x 였기 때문에 jdk11로는 오류발생. jdk8로 환경변수를 잡아주었다.

'Play2' 카테고리의 다른 글

[play2] play와 implicit 그리고 message  (0) 2019.12.27
[play2] Intellij 인코딩 세팅  (0) 2019.12.26

+ Recent posts